2016-08-06 38 views
1

Jedes Mal, wenn die arithmetische Frage generiert wird, und wenn ich die richtige oder falsche Antwort auswähle, geht die Anweisung der Funktion checkanswer() immer auf die if-Anweisung "Correct". Wie bin ich if/else-Anweisung korrekt auf eine arithmetische Frage varanswer Basis zu schaffen fähig = var1 + var2If/Else-Anweisung Lua

function checkAnswer(event) 

if(#theAnswer == questionGen()) then 
     instructionsText.text = "Correct!"; 
     instructionsText:toFront() 
     generateBalls() 
     for i=1, allBallsGroup.numChildren do 
      display.remove(allBallsGroup[1]) 
     end 
    else 
     instructionsText.text = "Incorrect!"; 
     instructionsText:toFront() 
     generateBalls() 
     for i=1, allBallsGroup.numChildren do 
      display.remove(allBallsGroup[1]) 
     end 
    end 
end 


function questionGen() 

local questionVar1 = display.newImage("ygSquare.png", 150, 500); 
local var1 = math.random(1,9) 
local var1Display =display.newText(var1, 200, 500, native.systemFont, 200) 
questionVar1.width = 200 
questionVar1.height = 200 
questionVar1.x = 350 
questionVar1.y = 500 
var1Display.x = 350 
var1Display.y = 500 
var1Display:setTextColor("#000000") 
local questionVar2 = display.newImage("blueSquare.png", 150, 500); 
local var2 = math.random(1,9) 
local var2Display = display.newText(var2, 200, 500, native.systemFont, 200) 
questionVar2.width = 200 
questionVar2.height = 200 
questionVar2.x = 700 
questionVar2.y = 500 
var2Display.x = 700 
var2Display.y = 500 
var2Display:setTextColor("#000000") 
local operator = "   +  " 
local operatorDisplay = display.newText(operator, 400, 500, native.systemFont, 200) 
operatorDisplay:setTextColor("#000000") 
local varAnswer = var1 + var2 
return varAnswer 

end 
+0

erstellen Wo ist 'theAnswer' Variable gesetzt ist in deinem Code? – slavanap

Antwort

0

Ihre zufällige Werte sind größer als 1 und das Hinzufügen von zwei Zahlen, die größer als 1 ist, wird größer sein als 1. Diese bedeutet, dass questionGen() immer wahr zurückgibt. Ich würde var1 und var2 durch 9 teilen, so dass es normalisiert ist. Auch müssen Sie eine Zeile hinzufügen, um zu überprüfen, ob varAnswer sagen größer als 1 (0,5 + 05) zurückgeben, wahr sonst geben Sie falsch zurück.

function questionGen() 

local varAnswer = var1/9 + var2/9 
if(varAnswer>=1) then return true end 
return false 
end 

Jetzt in Ihrem anderen Funktion können Sie if(questionGen()) then

+0

Macroland Ich habe getan, was Sie über die varAnswer gesagt haben, wenn es> 1 ist und ja, Sie haben mir eine Idee gegeben, wie würde ich diesen Code arbeiten, aber immer noch wahr .. Ich modifizierte "if (#theAnswer == questionGen()) dann "in" if (questionGen (varAnswer)> 1) dann ".. –

+0

' if (questionGen (varAnswer)> 1) 'Anweisung funktioniert nicht, da Ihre' varAnswer' in 'questionGen()' die Summe zweier zufälliger Ergebnisse ist. Übrigens bin ich in Ihrem Beitrag immer noch nicht sicher, woher der'Antwort' kommt. – macroland

+0

Macro die checkAnswer() und lokale varAnswer = var1/9 + var2/9 funktioniert jetzt, aber es hat einen logischen Fehler, die Eingänge wurden dezimal, Mein Spiel ist in der Regel generiert arithmetische Frage Addition und es ist eine Mehrfachauswahl und die Eingabe sind ganze Zahlen . Ich fühle mich jetzt dumm, weil ich die Mathematik nicht gut machen kann :( –

0

überprüfen Diese Verwendung Eingaben oder Auswahl in meinem Spiel Makro

local theAnswer= ""; 
local theAnswerText; 

function createBall() 

local var numberArray = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "11", "12", "13", "14", "15", "16", "17", "18"}; 
local tens = {questionGen(#theAnswer)} 
local ballType = math.random(8); 
local ballSize = math.random(2) 
local letterIndex 
local letter 
if(createTens == true) then 

    letterIndex = math.random(#tens) 
    letter = tens[letterIndex]; 
else 
letterIndex = math.random(#numberArray); 
letter = numberArray[letterIndex]; 
    letterIndex = math.random(#tens) 
    letter = tens[letterIndex]; 
end 

local ballGroup = display.newGroup(); 
local ball 
local ballRadius 
if(ballType == 1) then 
    ball = display.newImage("whiteBall.png"); 
elseif(ballType == 2) then 
    ball = display.newImage("brownBall.png"); 
elseif(ballType == 3) then 
    ball = display.newImage("pinkBall.png"); 
elseif(ballType == 4) then 
    ball = display.newImage("whiteBall.png"); 
elseif(ballType == 5) then 
    ball = display.newImage("yellowBall.png"); 
elseif(ballType == 6) then 
    ball = display.newImage("whiteBall.png"); 
elseif(ballType == 7) then 
    ball = display.newImage("greenBall.png"); 
else 
    ball = display.newImage("redBall.png"); 
end 
if(ballSize == 1)then 
    ball.width = 200; 
    ball.height = 200; 
    ballRadius = 30; 
else 
    ball.width = 200; 
    ball.height = 200; 
    ballRadius = 30;  
end 

local letterText = display.newText(letter, 0,0, native.systemFontBold, 100); 
letterText:setTextColor(0,0, 0); 
letterText.x = ball.x; 
letterText.y = ball.y; 
ballGroup:insert(ball); 
ballGroup:insert(letterText); 
ballGroup.x = math.random(ballRadius,display.contentWidth-ballRadius*3); 
ballGroup.y= 40; 
physics.addBody(ballGroup, 'dynamic',{friction = 0,bounce = 0,radius = ballRadius*3}); 
ballGroup.name = "ball"; 
ballGroup.letter = letter; 

ballGroup:addEventListener('tap',checkAnswer); 
table.insert(allBalls,ballGroup) 
allBallsGroup:insert(ballGroup) 

Ende

+0

Da Ihr Code ist nicht sehr klar, zumindest für mich, so auf der gleichen Seite zu sein: Versuchen Sie, eine zufällige Zahl zwischen 1- 18 und abhängig von der Anzahl, wählen Sie einen Ball mit einer Farbe und zeigt diesen Ball auf dem Bildschirm ODER versuchen Sie, 9 Bälle auf dem Bildschirm zufällig zu zeigen und basierend auf einem Kriterium zu testen, ob der Benutzer den richtigen Ball ausgewählt hat. Entschuldigung, ohne klar zu verstehen, was Sie tun, ist es schwer, es weiter zu gehen. – macroland

+0

Um es klar zu machen, ändere ich lokale "Zehnen = {FrageGen (#Antwort)}" zu lokalen "Zehnen = {FrageGen (varAnswer)}". 1- 18 Array sind die varAnswer ill zeigen Sie die vi deo capture von meinem spiel heres den link: https://www.youtube.com/watch?v=zvF3-Po-wHI&feature=youtu.be –

+0

ich schätze wirklich dich marco für die beantwortung meiner frage danke ... –