webdevdea Posted July 11, 2013 Share Posted July 11, 2013 I have the code working well but it does not always work when there is a tie, could someone help me to figure out my bug? <?php $winner = 'n'; $box = array('','','','','','','','',''); if (isset($_POST["submitbtn"])) { $box[0] = $_POST['box0']; $box[1] = $_POST['box1']; $box[2] = $_POST['box2']; $box[3] = $_POST['box3']; $box[4] = $_POST['box4']; $box[5] = $_POST['box5']; $box[6] = $_POST['box6']; $box[7] = $_POST['box7']; $box[8] = $_POST['box8']; //print_r($box); if (($box[0] =='x' && $box[1]=='x' && $box[2] =='x') || ($box[3] =='x' && $box[4]=='x' && $box[5] =='x') || ($box[6] =='x' && $box[7]=='x' && $box[8] =='x') || ($box[0] =='x' && $box[3]=='x' && $box[6] =='x') || ($box[1] =='x' && $box[5]=='x' && $box[7] =='x') ||($box[2] =='x' && $box[6]=='x' && $box[8] =='x') || ($box[0] =='x' && $box[4]=='x' && $box[8] =='x') ||($box[2] =='x' && $box[4]=='x' && $box[6] =='x')){ $winner = 'x'; print("X wins"); } $blank = 0; for ($i=0; $i<=8; $i++){ if ($box[$i] == '') { $blank = 1; } } if ($blank == 1 && $winner == 'n') { $i = rand() % 8; while ($box[$i] != '') { $i = rand() % 8; }//end while loop $box[$i] = 'o'; if (($box[0] =='o' && $box[1]=='o' && $box[2] =='o') || ($box[3] =='o' && $box[4]=='o' && $box[5] =='o') || ($box[6] =='o' && $box[7]=='o' && $box[8] =='o') || ($box[0] =='o' && $box[3]=='o' && $box[6] =='o') || ($box[1] =='o' && $box[5]=='o' && $box[7] =='o') ||($box[2] =='o' && $box[6]=='o' && $box[8] =='o') || ($box[0] =='o' && $box[4]=='o' && $box[8] =='o') ||($box[2] =='o' && $box[4]=='o' && $box[6] =='o')) { $winner = 'o'; print("O wins"); } } else if ($winner =='n'){ $winner = 't'; print("Tied Game"); } } ?> <html> <head> <title>game</title> <style type="text/css"> #box{ background-color :#99FFCC; border: 1px solid #008000; width: 100px; height: 100px; font-size: 66px; text-align: center; } #go { width:200px; font-family: 'Comic Sans MS'; font-size: 40px; } </style> </head> <body bgcolor="pink"> <body> <form name="tictactoe" method="post" action="http://localhost/Assignments php class/game.php"> <?php for ($i=0; $i<=8; $i++) { printf('<input type="text" name="box%s" value ="%s" id = "box">', $i, $box[$i]); if ($i == 2 || $i == 5 || $i == 8 ) { print('<br>'); } } // end for loop if ($winner == 'n') { print('<p><input type="submit" name="submitbtn" value="fire" id="go"></p>'); } else { print('<input type="button" name="newgamebtn" value= "New Game" onclick ="window.location.href=\'http:localhost/Assignments php class/game.php\'"><'); } ?> </form> </body> </html> Quote Link to comment Share on other sites More sharing options...
requinix Posted July 11, 2013 Share Posted July 11, 2013 it does not always workMeaning what? You need to explain things like that because not everybody will read through code looking for bugs when they don't really know what they're looking for. With that said, $i = rand() % 8;Bug $box[1] =='x' && $box[5]=='x' && $box[7] =='x' $box[1] =='o' && $box[5]=='o' && $box[7] =='o'Bug $box[2] =='x' && $box[6]=='x' && $box[8] =='x' $box[2] =='o' && $box[6]=='o' && $box[8] =='o'Bug And your New Game button is a bit wonky with the onclick. And there's an extra <.> Quote Link to comment Share on other sites More sharing options...
webdevdea Posted July 11, 2013 Author Share Posted July 11, 2013 (edited) Ok I got this fixed, I was trying to center things earlier and left something in that was supposed to come out, but on the other bug I do not understand what Is wrong? The code works except when there is a tie, I cant see what is wrong with the above bugs, print('<input type="button" name="newgamebtn" value= "New Game" onclick ="window.location.href=\'game.php\'">'); } ?> Edited July 11, 2013 by webdevdea Quote Link to comment Share on other sites More sharing options...
Solution requinix Posted July 11, 2013 Solution Share Posted July 11, 2013 (edited) $i = rand() % 8;Bug You have to modulo by the number of things, not by the highest number you want to get. So % 9. Using %8 would only give you numbers 0-7, leaving out 8 in the bottom-right corner. $box[1] =='x' && $box[5]=='x' && $box[7] =='x' $box[1] =='o' && $box[5]=='o' && $box[7] =='o'Bug $box[2] =='x' && $box[6]=='x' && $box[8] =='x' $box[2] =='o' && $box[6]=='o' && $box[8] =='o'Bug +---+---+---+ | 0 | 1 | 2 | +---+---+---+ | 3 | 4 | 5 | +---+---+---+ | 6 | 7 | 8 | +---+---+---+ Edited July 11, 2013 by requinix Quote Link to comment Share on other sites More sharing options...
webdevdea Posted July 11, 2013 Author Share Posted July 11, 2013 I have fixed the edits, thanks for pointing them out, I am going to upload it and see if it works better like that as it is now, its still not going to the tie.. Quote Link to comment Share on other sites More sharing options...
webdevdea Posted July 11, 2013 Author Share Posted July 11, 2013 Here is where I uploaded it, its not an assignment though it was just something i was doing to try to understand an assignment we were given to create the battleship game.. just a stepping stone. Thank you so much for your help, I couldnt get it to tie and I have to go get ready for school and walk the dogs but I will think it is solved as good as it can be at this point, I have to get to working on the functions for my project.. again thanks.. http://www.ctcsports.org/upload/Summer2013/CIST2351/900104329/Assignment35/game.php Quote Link to comment Share on other sites More sharing options...
web_craftsman Posted July 11, 2013 Share Posted July 11, 2013 your game is not working properly yet I won, but the game is not finished yet. 001 1 10 Quote Link to comment Share on other sites More sharing options...
webdevdea Posted July 11, 2013 Author Share Posted July 11, 2013 your game is not working properly yet I won, but the game is not finished yet. 001 1 10 How was it not working? please let me know so I can adjust it accorningly…. I am trying to get a handle on this battleship game, I have some functions or blocks of code that I am working on and trying to pull it all together.. thank you so much for your help.. ps did you get it to say tie?????? Quote Link to comment Share on other sites More sharing options...
requinix Posted July 11, 2013 Share Posted July 11, 2013 Keep in mind you don't have to just put in "X" values: you can set anything in any box you want. Seems like there's still an infinite loop when "O" tries to fill in the bottom-right corner, as the code you posted earlier would demonstrate. What is your code now? Quote Link to comment Share on other sites More sharing options...
webdevdea Posted July 11, 2013 Author Share Posted July 11, 2013 I have to get back with you after school, I am going to finish it up and try to get that battleship thing going.. im like seriously this is my first programming class and you want me to make a one man battleship game .. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.