Reken spel?

Status
Niet open voor verdere reacties.

LarsL

Gebruiker
Lid geworden
19 sep 2008
Berichten
155
Hallo allemaal, ik ben een klein rekenspelletje aan het maken in PHP, zodra je een som goed hebt krijg je punten, alleen wil ik random sommen weergeven en daarvan het input antwoord vergelijken met het antwoord van de computer, ik wil alles in een class gooien dus hoe kan ik dan het beste de array met sommen opstellen en zo een array van 3 sommen met een array van 3 antwoorden en die dan returnen en dan verdere bewerkingen ermee uitvoeren?
 
Ja, dat is rekenen in php, alleen ik wil er een soort 'sommenspelletje' van maken, wat ik uitleg in mijn post.
 
Ik begrijp eigenlijk maar half wat je nou precies wil :P Kun je eens proberen om het iets duidelijker uit te leggen?

Je wilt random sommen maken, en vervolgens het antwoord van die som ook berekenen?
 
Ik zal het zo goed mogelijk proberen uit te leggen:
Een gebruiker logt in, hij gaat naar een spel (het reken spel) en daar vult hij 3 sommen in waardoor hij 3 punten krijgt die in de db worden gezet en later omgewisseld kunnen worden voor andere dingen. Nu weet ik wel hoe ik die punten aan de db toevoeg enzo, maar ik gooi alles in een class en nu wilde ik graag weten hoe ik dan die 3 sommen laat genereren en 3 antwoorden erbij zodat ik die kan vergelijken met de antwoorden van de gebruiker. Hoe kan ik dat het beste doen?
 
Hmm... hoe complex wil je die sommen hebben?

Als het hele simpele sommen zijn, zou je zo iets kunnen doen:

PHP:
Class challenge {
   $this->aOperands ( '*' => '*', '+' => '+', '-' => '-' );

   public function __construct() {
       $this->iNum1 = mt_rand ( 1, 100 );
       $this->iNum2 = mt_rand ( 1, 100 );
       $this->sOperand = array_rand ( $this->aOperands );
       $this->sChallenge = $this->iNum1 . ' ' . $this->sOperand . ' ' . $this->iNum2
       $this->iAnswer = eval ( return $this->sChallenge );
   }

   public function getChallenge () {
     return $this->sChallenge;
   }

   public function getAnswer () {
     return $this->iAnswer;
    }

}


Maar dit is een heel simpel voorbeeld :) Als je moeilijkere sommen hebt, wordt het systeem ook een stuk moeilijker... dan moet je elk type som zelf gaan defineren, denk ik.
 
Hmm... hoe complex wil je die sommen hebben?

Als het hele simpele sommen zijn, zou je zo iets kunnen doen:

PHP:
Class challenge {
   $this->aOperands ( '*' => '*', '+' => '+', '-' => '-' );

   public function __construct() {
       $this->iNum1 = mt_rand ( 1, 100 );
       $this->iNum2 = mt_rand ( 1, 100 );
       $this->sOperand = array_rand ( $this->aOperands );
       $this->sChallenge = $this->iNum1 . ' ' . $this->sOperand . ' ' . $this->iNum2
       $this->iAnswer = eval ( return $this->sChallenge );
   }

   public function getChallenge () {
     return $this->sChallenge;
   }

   public function getAnswer () {
     return $this->iAnswer;
    }

}


Maar dit is een heel simpel voorbeeld :) Als je moeilijkere sommen hebt, wordt het systeem ook een stuk moeilijker... dan moet je elk type som zelf gaan defineren, denk ik.
Gelukkig hou ik het bij zulk soort sommen, hartelijk bedankt voor de hulp! :thumb: Nu kan ik weer verder met mijn 'systeem'. :)
 
Probleem

Sorry voor de dubbelpost, maar ik heb om te proberen of hij werkte hem even gemaakt zodat hij alleen het antwoord teruggeven (vanuit een simpele functie, geen class dus). en die dan vervolgens te echo'en.

Nu krijg ik echter:
Parse error: parse error in C:\xampp\htdocs\Projects\classes\test.php(19) : eval()'d code on line 1

Mijn code:
PHP:
function test() {
	   $Operators = array('*' => '*', '+' => '+');
       $int1 = mt_rand ( 1, 100 );
       $int2 = mt_rand ( 1, 100 );
       $getOperator = array_rand ( $Operators );
       $som = $int1 . ' ' . $getOperator . ' ' . $int2;
       $Antw = eval($som);
       return $Antw;
   }
   
echo test();
 
Ah sorry; ik werk zelf ook niet zo vaak met eval() (gelukkig)

Het lijkt erop dat de code in $som geen correcte PHP is, en dat klopt ook :)

Probeer het eens zo:
PHP:
function test() {
       $Operators = array('*' => '*', '+' => '+');
       $int1 = mt_rand ( 1, 100 );
       $int2 = mt_rand ( 1, 100 );
       $getOperator = array_rand ( $Operators );
       $som = 'return ' . $int1 . ' ' . $getOperator . ' ' . $int2 . ';';
       $Antw = eval($som);
       return $Antw;
   }
   
echo test();  
exit;


Er moet nog een return voor en een ; aan het eind, net als wanneer het echte code was.
 
Ah sorry; ik werk zelf ook niet zo vaak met eval() (gelukkig)

Het lijkt erop dat de code in $som geen correcte PHP is, en dat klopt ook :)

Probeer het eens zo:
PHP:
function test() {
       $Operators = array('*' => '*', '+' => '+');
       $int1 = mt_rand ( 1, 100 );
       $int2 = mt_rand ( 1, 100 );
       $getOperator = array_rand ( $Operators );
       $som = 'return ' . $int1 . ' ' . $getOperator . ' ' . $int2 . ';';
       $Antw = eval($som);
       return $Antw;
   }
   
echo test();  
exit;


Er moet nog een return voor en een ; aan het eind, net als wanneer het echte code was.

hij werkt bedankt, maar de som werkt nog niet, als ik die return krijg ik: return ;

EDIT: Hij werkt al:
PHP:
class RekenSpel {

   protected $Operators = array( '*' => '*', '+' => '+', '-' => '-' );
   protected $getOperator;
   protected $som;
   protected $somantw;
   protected $int1;
   protected $int2;
   protected $Antw;

   public function __construct() {
       $this->int1 = mt_rand ( 1, 100 );
       $this->int2 = mt_rand ( 1, 100 );
       $this->getOperator = array_rand ( $this->Operators );
       $this->somantw = 'return ' . $this->int1 . ' ' . $this->getOperator . ' ' . $this->int2 . ';';
       $this->som = $this->int1 . ' ' . $this->getOperator . ' ' . $this->int2;
       $this->Antw = eval($this->somantw);
   }

   public function getSom () {
     return $this->som;
   }

   public function getAnswer () {
     return $this->Antw;
    } 

}

Hartelijk bedankt! :thumb:
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan