Hi there,
I am writing a game called othello. This game is played by the computer and the computer user. The game is played on a board.
The player can choose between white and black color. Where blacks starts first. It's an assignment for college.
I have added the complete source code.
I am having problems with this recursive function:
Some way I don't get the right coordinates passed to doezet(i,j, spelersbeurt)Code:int O_bord::eval(int diepte, int & i, int & j, bool spelersbeurt){ int stand = 0; // voor de verschilfunctie int c, d; // variabelen voor de coordinaten en de for-lussen int voorlopigestand = 0; //om de waarde van een stand te retourneren int spelerzwart = -100; //warde voor speler met kleur zwart int spelerwit = 100; //waarde voor speler met kleur wit //basis geval als diepte de waarde 0 bereikt if (diepte == 0 || speelcontrolle()){ stand = verschil(); //de stand wordt geretourneerd return stand; }//if //creert een nieuwe object O_bord om mee te werken O_bord b(hoogte, breedte, kleurspeler); b = *this; //cout << "De kopie wordt afgedrukt" << endl; //b.drukaf();//drukt af het nieuwe bord //als de diepte nog niet nul is for (c = 0; c < hoogte; c++){ for(d = 0; d < breedte; d++){ if (toegestanezet(c,d,spelersbeurt)){ //cout << "Er werd een gezet op de nieuwe kopie" << endl; b = *this; //reset van het nieuwe bord b.doezet(c,d,spelersbeurt); // een zet wordt uitgevoerd op de nieuwe object //b.drukaf(); ////drukt af het nieuwe bord //b.spelersbeurt = !spelersbeurt; // beurten worden geswicht spelersbeurt = true; // beurten worden geswicht voorlopigestand = b.eval((diepte -1), i, j, spelersbeurt); //hier wordt dieper gekeken //enkele statistieken cout << "diepte: " << diepte << " c: " << c << " d: " << d << " i: " << i << " j: " << j <<" voorlopigestand: " << voorlopigestand << endl; spelersbeurt = false; //beurten worden geswicht //================================// //als de computer met zwart speelt// //================================// if (computersgetal == 1){ //als de computer aan de beurt is if(!spelersbeurt){ //de voorlopige beste zet wordt opgeslagen if (voorlopigestand >= spelerwit){ i = c; j = d; spelerwit = voorlopigestand; }//if }//if //als de computer niet aan de beurt is else { if (voorlopigestand <= spelerzwart) { i = c; j = d; spelerzwart = voorlopigestand; }//if }//else }//if //==============================// //als de computer met wit speelt// //==============================// if (computersgetal == 2){ //als de computer aan de beurt is if (!spelersbeurt){ if (voorlopigestand <= spelerzwart){ i = c; j = d; spelerzwart = voorlopigestand; }//if }//if //als de computer niet aan de beurt is else { if (voorlopigestand >= spelerwit){ i = c; j = d; spelerwit = voorlopigestand; }//if }//else }//if }//if }//for }//for //geef aan welke waarden geretourneerd moeten worden if (computersgetal == 1){ return spelerzwart; } else { return spelerwit; } }//othello::eval void O_bord::verstandigezet(bool spelersbeurt, int diepte){ int x; // wordt toegekend aan de functieaanroep eval int i,j; //coordinaten voor de functie // de recursieve functie moet dan de bestezet bepalen x = eval (diepte, i, j, spelersbeurt); cout << "i: " << i << "j: " << j << " binnen verstandigezet " << endl; // voert uit de verstandigezet voor de computer //checkt eerst of de coordinaten correct zijn zodat de variabelen van die zet true worden in toegestanezet if (toegestanezet(i,j,spelersbeurt)) { doezet(i, j, spelersbeurt); }//if }//O_bord::verstandigezet
So if anyone can give me some comments. I'll appreciate it.
If you don't understand, because of the comments
written in dutch, let me now.
Thanks



LinkBack URL
About LinkBacks


