collapse collapse

* Who's Online

  • Dot Guests: 71
  • Dot Hidden: 0
  • Dot Users: 0

There aren't any users online.

* Board Stats

  • stats Total Members: 88
  • stats Total Posts: 11164
  • stats Total Topics: 1700
  • stats Total Categories: 4
  • stats Total Boards: 76
  • stats Most Online: 1470

Author Topic: tic-tac-toe game screwing up  (Read 3621 times)

0 Members and 1 Guest are viewing this topic.

Offline spum789

  • Limited_C++_Learner
  • Jr. Member
  • *
  • Posts: 65
  • Reputation 97
  • Gender: Male
    • View Profile
tic-tac-toe game screwing up
« on: November 15, 2009, 03:37:47 pm »
ok so first off the vaule of user_move doesn't get reset and then the while loop has to have 2 inputs jsut to keep going so idk y its fucking up, i just need help

EDIT: for some gay reason this post wants the 8 in line 46 to be a smiley even when i disable them, so in line 46 wehre you see a weblink just imagnine an 8 plz.


Code: C++
  1. #include <iostream>
  2. #include <windows.h>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. string box1[10];
  8. bool end_game = true;
  9. int end = 0;
  10.  
  11. void draw_board()
  12. {
  13.         cout << "[" << box1[1] << "]";
  14.         cout << "[" << box1[2] << "]";
  15.         cout << "[" << box1[3] << "]" << endl << endl;
  16.         cout << "[" << box1[4] << "]";
  17.         cout << "[" << box1[5] << "]";
  18.         cout << "[" << box1[6] << "]" << endl << endl;
  19.         cout << "[" << box1[7] << "]";
  20.         cout << "[" << box1[8] << "]";
  21.         cout << "[" << box1[9] << "]" << endl << endl;
  22. }
  23.  
  24. void game()
  25. {
  26.         system("CLS");
  27.         cout << "Instructions: to mark you place enter the number that is in that box." << endl << endl;
  28.         box1[1] = "7";
  29.         box1[2] = "8";
  30.         box1[3] = "9";
  31.         box1[4] = "4";
  32.         box1[5] = "5";
  33.         box1[6] = "6";
  34.         box1[7] = "1";
  35.         box1[8] = "2";
  36.         box1[9] = "3";
  37.         draw_board();
  38.         do
  39.         {
  40.                 int user_move = 0;
  41.                 cin >> user_move;
  42.                 if(user_move == 7) {
  43.                         box1[1] = "X";
  44.                         draw_board();
  45.                 }
  46.                 else if(user_move == 8 ) {
  47.                         box1[2] = "X";
  48.                         draw_board();
  49.                 }
  50.                 else if(user_move == 9) {
  51.                         box1[3] = "X";
  52.                         draw_board();
  53.                 }
  54.                 else if(user_move == 4) {
  55.                         box1[4] = "X";
  56.                         draw_board();
  57.                 }
  58.                 else if(user_move == 5) {
  59.                         box1[5] = "X";
  60.                         draw_board();
  61.                 }
  62.                 else if(user_move == 6) {
  63.                         box1[6] = "X";
  64.                         draw_board();
  65.                 }
  66.                 else if(user_move == 1) {
  67.                         box1[7] = "X";
  68.                         draw_board();
  69.                 }
  70.                 else if(user_move == 2) {
  71.                         box1[8] = "X";
  72.                         draw_board();
  73.                 }
  74.                 else if(user_move == 3) {
  75.                         box1[9] = "X";
  76.                         draw_board();
  77.                 }      
  78.                 cout << "again? yes = 0 no = 1" << endl;
  79.                 cin >> end;
  80.                 if(end == 0) {
  81.                         end_game = false;
  82.                 }
  83.                 else if(end == 1) {
  84.                         break;
  85.                 }
  86.                 cout << user_move;
  87.         }while(end_game == false);
  88. }
  89.  
  90. int main()
  91. {
  92.         char play;
  93.         cout << "Wanna play tic-tac-toe? y/n" << endl;
  94.         cin >> play;
  95.         if(play == 'y') {
  96.                 game();
  97.                 getchar();
  98.         }
  99.         else {
  100.                 cout << "Well fine then, don't click me if you don't want to play.....dousce" << endl;
  101.         }
  102.         return 0;
  103. }


[edited name=spum789 date=1258321183][/edited]
[edited name=spum789 date=1258321225][/edited]
[edited name=spum789 date=1258321383][/edited]
« Last Edit: November 15, 2009, 04:41:07 pm by Celestialkey »

Offline jho

  • The flamboyant FLOSS fanatic
  • Sr. Member
  • *
  • Posts: 352
  • Reputation 1199
  • Gender: Male
    • View Profile
    • http://hajotus.net
Re: tic-tac-toe game screwing up
« Reply #1 on: November 15, 2009, 04:05:50 pm »
Your loop is quite messy.

Try this:

Code: [Select]
#include <iostream>
#include <windows.h>
#include <string>

using namespace std;

string box1[10];
int end = 0;

void draw_board()
{
   cout << "[" << box1[1] << "]";
   cout << "[" << box1[2] << "]";
   cout << "[" << box1[3] << "]" << endl << endl;
   cout << "[" << box1[4] << "]";
   cout << "[" << box1[5] << "]";
   cout << "[" << box1[6] << "]" << endl << endl;
   cout << "[" << box1[7] << "]";
   cout << "[" << box1[8] << "]";
   cout << "[" << box1[9] << "]" << endl << endl;
}

void game()
{
   system("CLS");
   cout << "Instructions: to mark you place enter the number that is in that box." << endl << endl;
   box1[1] = "7";
   box1[2] = "8";
   box1[3] = "9";
   box1[4] = "4";
   box1[5] = "5";
   box1[6] = "6";
   box1[7] = "1";
   box1[8] = "2";
   box1[9] = "3";
   while(true)
   {
      char end;
      int user_move;
      draw_board();
      cin >> user_move;
      switch(user_move)
      {
          case 7:
              box1[1] = 'X';
              break;
          case 8:
              box1[2] = 'X';
              break;
          case 9:
              box1[3] = 'X';
              break;
          case 4:
              box1[4] = 'X';
              break;
          case 5:
              box1[5] = 'X';
              break;
          case 6:
              box1[6] = 'X';
              break;
          case 1:
              box1[7] = 'X';
              break;
          case 2:
              box1[8] = 'X';
              break;
          case 3:
              box1[9] = 'X';
              break;
          default: break;
      }
      draw_board();
      cout << "again? y/n" << endl;
      cin >> end;
      if(end == 'n' || end == 'N') {
         break;
      }
      cout << user_move << endl;
   }
}

int main()
{
   char play;
   cout << "Wanna play tic-tac-toe? y/n" << endl;
   cin >> play;
   if(play == 'y') {
      game();
      getchar();
   }
   else {
      cout << "Well fine then, don't click me if you don't want to play.....dousce" << endl;
   }
   return 0;
}
« Last Edit: November 15, 2009, 04:19:55 pm by jho »
"I'm sorry, I only accept criticism in the form of sed expressions."

Offline spum789

  • Limited_C++_Learner
  • Jr. Member
  • *
  • Posts: 65
  • Reputation 97
  • Gender: Male
    • View Profile
Re: tic-tac-toe game screwing up
« Reply #2 on: November 15, 2009, 06:19:22 pm »
so now the AI is kinda messing up, for instance if the computer chooses box 5, sometimes it won't mark it , idk y but i just need some help in debugging.

Code: C++
  1. #include <iostream>
  2. #include <windows.h>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. string box1[10];
  8. bool end_game = false;
  9. int end = 0;
  10. void game();
  11.  
  12. void draw_board()
  13. {
  14.         cout << "[" << box1[1] << "]";
  15.         cout << "[" << box1[2] << "]";
  16.         cout << "[" << box1[3] << "]" << endl << endl;
  17.         cout << "[" << box1[4] << "]";
  18.         cout << "[" << box1[5] << "]";
  19.         cout << "[" << box1[6] << "]" << endl << endl;
  20.         cout << "[" << box1[7] << "]";
  21.         cout << "[" << box1[8] << "]";
  22.         cout << "[" << box1[9] << "]" << endl << endl;
  23. }
  24.  
  25. void game_over()
  26. {
  27.         char again;
  28.         if(box1[1] == "X" && box1[2] == "X" && box1[3] == "X") {
  29.                 cout << "you win" << endl << "play again? y/n" << endl;
  30.                 cin >> again;
  31.                 if(again == 'y') {
  32.                         game();
  33.                 }
  34.                 else {
  35.                         system("CLS");
  36.                         end_game = true;
  37.                 }
  38.         }
  39.         if(box1[1] == "O" && box1[2] == "O" && box1[3] == "O") {
  40.                 cout << "you lose" << endl << "play again? y/n" << endl;
  41.                 cin >> again;
  42.                 if(again == 'y') {
  43.                         game();
  44.                 }
  45.                 else {
  46.                         system("CLS");
  47.                         end_game = true;
  48.                 }
  49.         }
  50.  
  51.         if(box1[7] == "X" && box1[5] == "X" && box1[3] == "X") {
  52.                 cout << "you win" << endl << "play again? y/n" << endl;
  53.                 cin >> again;
  54.                 if(again == 'y') {
  55.                         game();
  56.                 }
  57.                 else {
  58.                         system("CLS");
  59.                         end_game = true;
  60.                 }
  61.         }
  62.         if(box1[7] == "O" && box1[5] == "O" && box1[3] == "O") {
  63.                 cout << "you lose" << endl << "play again? y/n" << endl;
  64.                 cin >> again;
  65.                 if(again == 'y') {
  66.                         game();
  67.                 }
  68.                 else {
  69.                         system("CLS");
  70.                         end_game = true;
  71.                 }
  72.         }
  73.         if(box1[1] == "X" && box1[5] == "X" && box1[9] == "X") {
  74.                 cout << "you win" << endl << "play again? y/n" << endl;
  75.                 cin >> again;
  76.                 if(again == 'y') {
  77.                         game();
  78.                 }
  79.                 else {
  80.                         system("CLS");
  81.                         end_game = true;
  82.                 }
  83.         }
  84.         if(box1[1] == "O" && box1[5] == "O" && box1[9] == "O") {
  85.                 cout << "you lose" << endl << "play again? y/n" << endl;
  86.                 cin >> again;
  87.                 if(again == 'y') {
  88.                         game();
  89.                 }
  90.                 else {
  91.                         system("CLS");
  92.                         end_game = true;
  93.                 }
  94.         }
  95.         if(box1[4] == "X" && box1[5] == "X" && box1[6] == "X") {
  96.                 cout << "you win" << endl << "play again? y/n" << endl;
  97.                 cin >> again;
  98.                 if(again == 'y') {
  99.                         game();
  100.                 }
  101.                 else {
  102.                         system("CLS");
  103.                         end_game = true;
  104.                 }
  105.         }
  106.         if(box1[4] == "O" && box1[5] == "O" && box1[6] == "O") {
  107.                 cout << "you lose" << endl << "play again? y/n" << endl;
  108.                 cin >> again;
  109.                 if(again == 'y') {
  110.                         game();
  111.                 }
  112.                 else {
  113.                         system("CLS");
  114.                         end_game = true;
  115.                 }
  116.         }
  117.         if(box1[7] == "X" && box1[8] == "X" && box1[9] == "X") {
  118.                 cout << "you win" << endl << "play again? y/n" << endl;
  119.                 cin >> again;
  120.                 if(again == 'y') {
  121.                         game();
  122.                 }
  123.                 else {
  124.                         system("CLS");
  125.                         end_game = true;
  126.                 }
  127.         }
  128.         if(box1[7] == "O" && box1[8] == "O" && box1[9] == "O") {
  129.                 cout << "you lose" << endl << "play again? y/n" << endl;
  130.                 cin >> again;
  131.                 if(again == 'y') {
  132.                         game();
  133.                 }
  134.                 else {
  135.                         system("CLS");
  136.                         end_game = true;
  137.                 }
  138.         }
  139.         if(box1[9] == "X" && box1[6] == "X" && box1[3] == "X") {
  140.                 cout << "you win" << endl << "play again? y/n" << endl;
  141.                 cin >> again;
  142.                 if(again == 'y') {
  143.                         game();
  144.                 }
  145.                 else {
  146.                         system("CLS");
  147.                         end_game = true;
  148.                 }
  149.         }
  150.         if(box1[9] == "O" && box1[6] == "O" && box1[3] == "O") {
  151.                 cout << "you lose" << endl << "play again? y/n" << endl;
  152.                 cin >> again;
  153.                 if(again == 'y') {
  154.                         game();
  155.                 }
  156.                 else {
  157.                         system("CLS");
  158.                         end_game = true;
  159.                 }
  160.         }
  161.         if(box1[7] == "X" && box1[4] == "X" && box1[1] == "X") {
  162.                 cout << "you win" << endl << "play again? y/n" << endl;
  163.                 cin >> again;
  164.                 if(again == 'y') {
  165.                         game();
  166.                 }
  167.                 else {
  168.                         system("CLS");
  169.                         end_game = true;
  170.                 }
  171.         }
  172.         if(box1[7] == "O" && box1[4] == "O" && box1[1] == "O") {
  173.                 cout << "you lose" << endl << "play again? y/n" << endl;
  174.                 cin >> again;
  175.                 if(again == 'y') {
  176.                         game();
  177.                 }
  178.                 else {
  179.                         system("CLS");
  180.                         end_game = true;
  181.                 }
  182.         }
  183.         if(box1[8] == "X" && box1[5] == "X" && box1[2] == "X") {
  184.                 cout << "you win" << endl << "play again? y/n" << endl;
  185.                 cin >> again;
  186.                 if(again == 'y') {
  187.                         game();
  188.                 }
  189.                 else {
  190.                         system("CLS");
  191.                         end_game = true;
  192.                 }
  193.         }
  194.         if(box1[8] == "O" && box1[5] == "O" && box1[2] == "O") {
  195.                 cout << "you lose" << endl << "play again? y/n" << endl;
  196.                 cin >> again;
  197.                 if(again == 'y') {
  198.                         game();
  199.                 }
  200.                 else {
  201.                         system("CLS");
  202.                         end_game = true;
  203.                 }
  204.         }
  205.  
  206. }
  207.  
  208. void game()
  209. {
  210.         system("CLS");
  211.         cout << "Instructions: to mark you place enter the number that is in that box." << endl << endl;
  212.         box1[1] = "7";
  213.         box1[2] = "8";
  214.         box1[3] = "9";
  215.         box1[4] = "4";
  216.         box1[5] = "5";
  217.         box1[6] = "6";
  218.         box1[7] = "1";
  219.         box1[8] = "2";
  220.         box1[9] = "3";
  221.         do
  222.         {
  223. user_do_over:
  224.                 //system("CLS");
  225.                 draw_board();
  226.                 int user_move = 0;
  227.                 cout << "Your move:";
  228.                 cin >> user_move;
  229.                 if(user_move == 7) {
  230.                         if(box1[1] != "X" && box1[1] != "O") {
  231.                                 box1[1] = "X";
  232.                         }
  233.                         else {
  234.                                 cout << "ERROR: this box has already been selected make another selection please." << endl;
  235.                                 goto user_do_over;
  236.                         }
  237.                         draw_board();
  238.                         game_over();
  239.                 }
  240.                 else if(user_move == 8) {
  241.                         if(box1[2] != "X" && box1[2] != "O") {
  242.                                 box1[2] = "X";
  243.                         }
  244.                         else {
  245.                                 cout << "ERROR: this box has already been selected make another selection please." << endl;
  246.                                 goto user_do_over;
  247.                         }
  248.                         draw_board();
  249.                         game_over();
  250.                 }
  251.                 else if(user_move == 9) {
  252.                         if(box1[3] != "X" && box1[3] != "O") {
  253.                                 box1[3] = "X";
  254.                         }
  255.                         else {
  256.                                 cout << "ERROR: this box has already been selected make another selection please." << endl;
  257.                                 goto user_do_over;
  258.                         }
  259.                         draw_board();
  260.                         game_over();
  261.                 }
  262.                 else if(user_move == 4) {
  263.                         if(box1[4] != "X" && box1[4] != "O") {
  264.                                 box1[4] = "X";
  265.                         }
  266.                         else {
  267.                                 cout << "ERROR: this box has already been selected make another selection please." << endl;
  268.                                 goto user_do_over;
  269.                         }
  270.                         draw_board();
  271.                         game_over();
  272.                 }
  273.                 else if(user_move == 5) {
  274.                         if(box1[5] != "X" && box1[5] != "O") {
  275.                                 box1[5] = "X";
  276.                         }
  277.                         else {
  278.                                 cout << "ERROR: this box has already been selected make another selection please." << endl;
  279.                                 goto user_do_over;
  280.                         }
  281.                         draw_board();
  282.                         game_over();
  283.                 }
  284.                 else if(user_move == 6) {
  285.                         if(box1[6] != "X" && box1[6] != "O") {
  286.                                 box1[6] = "X";
  287.                         }
  288.                         else {
  289.                                 cout << "ERROR: this box has already been selected make another selection please." << endl;
  290.                                 goto user_do_over;
  291.                         }
  292.                         draw_board();
  293.                         game_over();
  294.                 }
  295.                 else if(user_move == 1) {
  296.                         if(box1[7] != "X" && box1[7] != "O") {
  297.                                 box1[7] = "X";
  298.                         }
  299.                         else {
  300.                                 cout << "ERROR: this box has already been selected make another selection please." << endl;
  301.                                 goto user_do_over;
  302.                         }
  303.                         draw_board();
  304.                         game_over();
  305.                 }
  306.                 else if(user_move == 2) {
  307.                         if(box1[8] != "X" && box1[8] != "O") {
  308.                                 box1[8] = "X";
  309.                         }
  310.                         else {
  311.                                 cout << "ERROR: this box has already been selected make another selection please." << endl;
  312.                                 goto user_do_over;
  313.                         }
  314.                         draw_board();
  315.                         game_over();
  316.                 }
  317.                 else if(user_move == 3) {
  318.                         if(box1[9] != "X" && box1[9] != "O") {
  319.                                 box1[9] = "X";
  320.                         }
  321.                         else {
  322.                                 cout << "ERROR: this box has already been selected make another selection please." << endl;
  323.                                 goto user_do_over;
  324.                         }
  325.                         draw_board();
  326.                         game_over();
  327.                 }      
  328. comp_do_over:
  329.                 //system("CLS");
  330.                 draw_board();
  331. rand:
  332.         srand(GetTickCount());
  333.                 int comp_move = rand()%10;
  334.                 if(comp_move == 0) {
  335.                         goto rand;
  336.                 }
  337.                 cout << "comp move:" << comp_move << endl;
  338.                 if(box1[1] == "X" && box1[2] == "X") {
  339.                         comp_move = 9;
  340.                 }
  341.                 else if(box1[4] == "X" && box1[5] == "X") {
  342.                         comp_move = 6;
  343.                 }
  344.                 else {
  345.                 if(comp_move == 7) {
  346.                         if(box1[1] != "X" && box1[1] != "O") {
  347.                                 box1[1] = "O";
  348.                         }
  349.                         else {
  350.                                 cout << "ERROR: this box has already been selected make another selection please." << endl;
  351.                                 goto comp_do_over;
  352.                         }
  353.                         draw_board();
  354.                         game_over();
  355.                 }
  356.                 else if(comp_move == 8) {
  357.                         if(box1[2] != "X" && box1[2] != "O") {
  358.                                 box1[2] = "O";
  359.                         }
  360.                         else {
  361.                                 cout << "ERROR: this box has already been selected make another selection please." << endl;
  362.                                 goto comp_do_over;
  363.                         }
  364.                         draw_board();
  365.                         game_over();
  366.                 }
  367.                 else if(comp_move == 9) {
  368.                         if(box1[3] != "X" && box1[3] != "O") {
  369.                                 box1[3] = "O";
  370.                         }
  371.                         else {
  372.                                 cout << "ERROR: this box has already been selected make another selection please." << endl;
  373.                                 goto comp_do_over;
  374.                         }
  375.                         draw_board();
  376.                         game_over();
  377.                 }
  378.                 else if(comp_move == 4) {
  379.                         if(box1[4] != "X" && box1[4] != "O") {
  380.                                 box1[4] = "O";
  381.                         }
  382.                         else {
  383.                                 cout << "ERROR: this box has already been selected make another selection please." << endl;
  384.                                 goto comp_do_over;
  385.                         }
  386.                         draw_board();
  387.                         game_over();
  388.                 }
  389.                 else if(comp_move == 5) {
  390.                         if(box1[5] != "X" && box1[5] != "O") {
  391.                                 box1[5] = "O";
  392.                         }
  393.                         else {
  394.                                 cout << "ERROR: this box has already been selected make another selection please." << endl;
  395.                                 goto comp_do_over;
  396.                         }
  397.                         draw_board();
  398.                         game_over();
  399.                 }
  400.                 else if(comp_move == 6) {
  401.                         if(box1[6] != "X" && box1[6] != "O") {
  402.                                 box1[6] = "O";
  403.                         }
  404.                         else {
  405.                                 cout << "ERROR: this box has already been selected make another selection please." << endl;
  406.                                 goto comp_do_over;
  407.                         }
  408.                         draw_board();
  409.                         game_over();
  410.                 }
  411.                 else if(comp_move == 1) {
  412.                         if(box1[7] != "X" && box1[7] != "O") {
  413.                                 box1[7] = "O";
  414.                         }
  415.                         else {
  416.                                 cout << "ERROR: this box has already been selected make another selection please." << endl;
  417.                                 goto comp_do_over;
  418.                         }
  419.                         draw_board();
  420.                         game_over();
  421.                 }
  422.                 else if(comp_move == 2) {
  423.                         if(box1[8] != "X" && box1[8] != "O") {
  424.                                 box1[8] = "O";
  425.                         }
  426.                         else {
  427.                                 cout << "ERROR: this box has already been selected make another selection please." << endl;
  428.                                 goto comp_do_over;
  429.                         }
  430.                         draw_board();
  431.                         game_over();
  432.                 }
  433.                 else if(comp_move == 3) {
  434.                         if(box1[9] != "X" && box1[9] != "O") {
  435.                                 box1[9] = "O";
  436.                         }
  437.                         else {
  438.                                 cout << "ERROR: this box has already been selected make another selection please." << endl;
  439.                                 goto comp_do_over;
  440.                         }
  441.                         draw_board();
  442.                         game_over();
  443.                 }
  444.                 }
  445.  
  446.         }while(end_game == false);
  447. }
  448.  
  449. int main()
  450. {
  451.         char play;
  452.         cout << "Wanna play tic-tac-toe? y/n" << endl;
  453.         cin >> play;
  454.         if(play == 'y') {
  455.                 game();
  456.                 getchar();
  457.         }
  458.         else {
  459.                 cout << "Well fine then, don't click me if you don't want to play.....dousce" << endl;
  460.         }
  461.         return 0;
  462. }

Offline jho

  • The flamboyant FLOSS fanatic
  • Sr. Member
  • *
  • Posts: 352
  • Reputation 1199
  • Gender: Male
    • View Profile
    • http://hajotus.net
Re: tic-tac-toe game screwing up
« Reply #3 on: November 15, 2009, 06:26:50 pm »
Uh...wow.

Sorry, but that code is quite horrible. LOTS of duplicate code, gigantic functions, a goto-hell. Yuck.

My suggestion would be to think the problem over, find out different (simpler) ways to approach the problem, and then starting over from a clean slate.
"I'm sorry, I only accept criticism in the form of sed expressions."

Offline spum789

  • Limited_C++_Learner
  • Jr. Member
  • *
  • Posts: 65
  • Reputation 97
  • Gender: Male
    • View Profile
Re: tic-tac-toe game screwing up
« Reply #4 on: November 16, 2009, 12:31:29 am »
this is the final code, everything works great. many thx to jho for telling me my code was trash and start from scratch


Code: C++
  1. #include <iostream>
  2. #include <windows.h>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. char box1;
  8. char box2;
  9. char box3;
  10. char box4;
  11. char box5;
  12. char box6;
  13. char box7;
  14. char box8;
  15. char box9;
  16. int user_move;
  17. int com_move;
  18. char comp_move;
  19. bool end_game;
  20. void game();
  21. string play_again;
  22.  
  23. void draw_board() {
  24.         cout << "[" << box1 << "]";
  25.         cout << "[" << box2 << "]";
  26.         cout << "[" << box3 << "]" << endl << endl;
  27.         cout << "[" << box4 << "]";
  28.         cout << "[" << box5 << "]";
  29.         cout << "[" << box6 << "]" << endl << endl;
  30.         cout << "[" << box7 << "]";
  31.         cout << "[" << box8 << "]";
  32.         cout << "[" << box9 << "]" << endl << endl;
  33. }
  34.  
  35. void bitch() {
  36.         cout << "Well it looks like your about to win." << endl;
  37.     Sleep(2000);
  38.         cout << "Not on my watch" << endl;
  39.         Sleep(2000);
  40.         cout << "Since i'm supposed to win every time, i'm going to be a bitch and do this" << endl;
  41.         Sleep(2000);
  42.         cout << "I WIN BITCH!!!!!!!!!!!!!!!!!" << endl;
  43.         Sleep(3000);
  44.         end_game = true;
  45. }
  46.  
  47. void com_AI() {
  48.         //regular AI
  49.         if(box1 == 'X' && box2 == 'X') {
  50.                 if(box3 == '3') {
  51.                         com_move = 3;
  52.                 }
  53.                 else {
  54.                         com_move = rand()%10;
  55.                 }
  56.         }
  57.         if(box2 == 'X' && box3 == 'X') {
  58.                 if(box1 == '1') {
  59.                         com_move = 1;
  60.                 }
  61.                 else {
  62.                         com_move = rand()%10;
  63.                 }
  64.         }
  65.         if(box1 == 'X' && box3 == 'X') {
  66.                 if(box2 == '2') {
  67.                         com_move = 2;
  68.                 }
  69.                 else {
  70.                         com_move = rand()%10;
  71.                 }
  72.         }
  73.         if(box4 == 'X' && box5 == 'X') {
  74.                 if(box6 == '6') {
  75.                         com_move = 6;
  76.                 }
  77.                 else {
  78.                         com_move = rand()%10;
  79.                 }
  80.         }
  81.         if(box5 == 'X' && box6 == 'X') {
  82.                 if(box4 == '4') {
  83.                         com_move = 4;
  84.                 }
  85.                 else {
  86.                         com_move = rand()%10;
  87.                 }
  88.         }
  89.         if(box4 == 'X' && box6 == 'X') {
  90.                 if(box5 == '5') {
  91.                         com_move = 5;
  92.                 }
  93.                 else {
  94.                         com_move = rand()%10;
  95.                 }
  96.         }
  97.         if(box7 == 'X' && box8 == 'X') {
  98.                 if(box9 == '9') {
  99.                         com_move = 9;
  100.                 }
  101.                 else {
  102.                         com_move = rand()%10;
  103.                 }
  104.         }
  105.         if(box8 == 'X' && box9 == 'X') {
  106.                 if(box7 == '7') {
  107.                         com_move = 7;
  108.                 }
  109.                 else {
  110.                         com_move = rand()%10;
  111.                 }
  112.         }
  113.         if(box7 == 'X' && box9 == 'X') {
  114.                 if(box8 == '8') {
  115.                         com_move = 8;
  116.                 }
  117.                 else {
  118.                         com_move = rand()%10;
  119.                 }
  120.         }
  121.         if(box1 == 'X' && box9 == 'X') {
  122.                 if(box5 == '5') {
  123.                         com_move = 5;
  124.                 }
  125.                 else {
  126.                         com_move = rand()%10;
  127.                 }
  128.         }
  129.         if(box1 == 'X' && box5 == 'X') {
  130.                 if(box9 == '9') {
  131.                         com_move = 9;
  132.                 }
  133.                 else {
  134.                         com_move = rand()%10;
  135.                 }
  136.         }
  137.         if(box5 == 'X' && box9 == 'X') {
  138.                 if(box1 == '1') {
  139.                         com_move = 1;
  140.                 }
  141.                 else {
  142.                         com_move = rand()%10;
  143.                 }
  144.         }
  145.         if(box3 == 'X' && box5 == 'X') {
  146.                 if(box7 == '7') {
  147.                         com_move = 7;
  148.                 }
  149.                 else {
  150.                         com_move = rand()%10;
  151.                 }
  152.         }
  153.         if(box5 == 'X' && box7 == 'X') {
  154.                 if(box3 == '3') {
  155.                         com_move = 3;
  156.                 }
  157.                 else {
  158.                         com_move = rand()%10;
  159.                 }
  160.         }
  161.         if(box3 == 'X' && box7 == 'X') {
  162.                 if(box5 == '5') {
  163.                         com_move = 5;
  164.                 }
  165.                 else {
  166.                         com_move = rand()%10;
  167.                 }
  168.         }
  169.         if(box1 == 'X' && box4 == 'X') {
  170.                 if(box7 == '7') {
  171.                         com_move = 7;
  172.                 }
  173.                 else {
  174.                         com_move = rand()%10;
  175.                 }
  176.         }
  177.         if(box1 == 'X' && box7 == 'X') {
  178.                 if(box4 == '4') {
  179.                         com_move = 4;
  180.                 }
  181.                 else {
  182.                         com_move = rand()%10;
  183.                 }
  184.         }
  185.         if(box4 == 'X' && box7 == 'X') {
  186.                 if(box1 == '1') {
  187.                         com_move = 1;
  188.                 }
  189.                 else {
  190.                         com_move = rand()%10;
  191.                 }
  192.         }
  193.         if(box2 == 'X' && box5 == 'X') {
  194.                 if(box8 == '8') {
  195.                         com_move = 8;
  196.                 }
  197.                 else {
  198.                         com_move = rand()%10;
  199.                 }
  200.         }
  201.         if(box5 == 'X' && box8 == 'X') {
  202.                 if(box2 == '2') {
  203.                         com_move = 2;
  204.                 }
  205.                 else {
  206.                         com_move = rand()%10;
  207.                 }
  208.         }
  209.         if(box2 == 'X' && box8 == 'X') {
  210.                 if(box5 == '5') {
  211.                         com_move = 5;
  212.                 }
  213.                 else {
  214.                         com_move = rand()%10;
  215.                 }
  216.         }
  217.         if(box3 == 'X' && box6 == 'X') {
  218.                 if(box9 == '9') {
  219.                         com_move = 9;
  220.                 }
  221.                 else {
  222.                         com_move = rand()%10;
  223.                 }
  224.         }
  225.         if(box6 == 'X' && box9 == 'X') {
  226.                 if(box3 == '3') {
  227.                         com_move = 3;
  228.                 }
  229.                 else {
  230.                         com_move = rand()%10;
  231.                 }
  232.         }
  233.         if(box3 == 'X' && box9 == 'X') {
  234.                 if(box6 == '6') {
  235.                         com_move = 6;
  236.                 }
  237.                 else {
  238.                         com_move = rand()%10;
  239.                 }
  240.         }
  241.         //perfect AI
  242.         //infamous "V" checks
  243.         if(box1 == 'X' && box5 == 'X' && box3 == 'X') {
  244.                 bitch();
  245.         }
  246.         else if(box1 == 'X' && box5 == 'X' && box7 == 'X') {
  247.                 bitch();
  248.         }
  249.         else if(box3 == 'X' && box5 == 'X' && box9 == 'X') {
  250.                 bitch();
  251.         }
  252.         else if(box7 == 'X' && box5 == 'X' && box9 == 'X') {
  253.                 bitch();
  254.         }
  255.         //infamous "C" checks
  256.         else if(box1 == 'X' && box3 == 'X' && box9 == 'X') {
  257.                 bitch();
  258.         }
  259.         else if(box3 == 'X' && box9 == 'X' && box7 == 'X') {
  260.                 bitch();
  261.         }
  262.         else if(box9 == 'X' && box7 == 'X' && box1 == 'X') {
  263.                 bitch();
  264.         }
  265.         else if(box7 == 'X' && box1 == 'X' && box3 == 'X') {
  266.                 bitch();
  267.         }
  268. }
  269.  
  270. void again() {
  271.         cout << "play again" << endl;
  272.         cin >> play_again;
  273.         if(play_again == "y") {
  274.                 cout << "ok" << endl;
  275.                 system("CLS");
  276.                 game();
  277.         }
  278.         else if(play_again == "n") {
  279.                 end_game = true;
  280.         }
  281. }
  282.  
  283. void game_over() {
  284.         //x's win conditions
  285.         if(box1 == 'X' && box2 == 'X' && box3 == 'X') {
  286.                 cout << "X's win" << endl;
  287.                 again();
  288.         }
  289.         else if(box4 == 'X' && box5 == 'X' && box6 == 'X') {
  290.                 cout << "X's win" << endl;
  291.                 again();
  292.         }
  293.         else if(box7 == 'X' && box8 == 'X' && box9 == 'X') {
  294.                 cout << "X's win" << endl;
  295.                 again();
  296.         }
  297.         else if(box7 == 'X' && box4 == 'X' && box1 == 'X') {
  298.                 cout << "X's win" << endl;
  299.                         again();
  300.         }
  301.         else if(box8 == 'X' && box5 == 'X' && box2 == 'X') {
  302.                 cout << "X's win" << endl;
  303.                 again();
  304.         }
  305.         else if(box9 == 'X' && box6 == 'X' && box3 == 'X') {
  306.                 cout << "X's win" << endl;
  307.                 again();
  308.         }
  309.         else if(box7 == 'X' && box5 == 'X' && box3 == 'X') {
  310.                 cout << "X's win" << endl;     
  311.                 again();
  312.         }
  313.         else if(box1 == 'X' && box5 == 'X' && box9 == 'X') {
  314.                 cout << "X's win" << endl;
  315.                 again();
  316.         }
  317.        
  318.         //o's win conditions
  319.         if(box1 == 'O' && box2 == 'O' && box3 == 'O') {
  320.                 cout << "O's win" << endl;
  321.                 again();
  322.         }
  323.         else if(box4 == 'O' && box5 == 'O' && box6 == 'O') {
  324.                 cout << "O's win" << endl;
  325.                 again();
  326.         }
  327.         else if(box7 == 'O' && box8 == 'O' && box9 == 'O') {
  328.                 cout << "O's win" << endl;
  329.                 again();
  330.         }
  331.         else if(box7 == 'O' && box4 == 'O' && box1 == 'O') {
  332.                 cout << "O's win" << endl;
  333.                 again();
  334.         }
  335.         else if(box8 == 'O' && box5 == 'O' && box2 == 'O') {
  336.                 cout << "O's win" << endl;
  337.                         again();
  338.         }
  339.         else if(box9 == 'O' && box6 == 'O' && box3 == 'O') {
  340.                 cout << "O's win" << endl;
  341.                         again();
  342.         }
  343.         else if(box7 == 'O' && box5 == 'O' && box3 == 'O') {
  344.                 cout << "O's win" << endl;
  345.                         again();
  346.         }
  347.         else if(box1 == 'O' && box5 == 'O' && box9 == 'O') {
  348.                 cout << "O's win" << endl;
  349.                 again();
  350.         }
  351. }
  352.  
  353. void game() {
  354.         box1 = '1';
  355.         box2 = '2';
  356.         box3 = '3';
  357.         box4 = '4';
  358.         box5 = '5';
  359.         box6 = '6';
  360.         box7 = '7';
  361.         box8 = '8';
  362.         box9 = '9';
  363.         draw_board();
  364.         cout << "To select a box, enter the corresponding number." << endl << "Your move:";
  365.         do {
  366.         cin >> user_move;
  367.         switch(user_move) {
  368.                 case 1:
  369.                         if(box1 == '1') {
  370.                                 box1 = 'X';
  371.                         }
  372.                         else {
  373.                                 cout << "invalid move" << endl;
  374.                         }
  375.                         break;
  376.                 case 2:
  377.                         if(box2 == '2') {
  378.                                 box2 = 'X';
  379.                         }
  380.                         else {
  381.                                 cout << "invalid move" << endl;
  382.                         }
  383.                         break;
  384.                 case 3:
  385.                         if(box3 == '3') {
  386.                                 box3 = 'X';
  387.                         }
  388.                         else {
  389.                                 cout << "invalid move" << endl;
  390.                         }
  391.                         break;
  392.                 case 4:
  393.                         if(box4 == '4') {
  394.                                 box4 = 'X';
  395.                         }
  396.                         else {
  397.                                 cout << "invalid move" << endl;
  398.                         }
  399.                         break;
  400.                 case 5:
  401.                         if(box5 == '5') {
  402.                                 box5 = 'X';
  403.                         }
  404.                         else {
  405.                                 cout << "invalid move" << endl;
  406.                         }
  407.                         break;
  408.                 case 6:
  409.                         if(box6 == '6') {
  410.                                 box6 = 'X';
  411.                         }
  412.                         else {
  413.                                 cout << "invalid move" << endl;
  414.                         }
  415.                         break;
  416.                 case 7:
  417.                         if(box7 == '7') {
  418.                                 box7 = 'X';
  419.                         }
  420.                         else {
  421.                                 cout << "invalid move" << endl;
  422.                         }
  423.                         break;
  424.                 case 8:
  425.                         if(box8 == '8') {
  426.                                 box8 = 'X';
  427.                         }
  428.                         else {
  429.                                 cout << "invalid move" << endl;
  430.                         }
  431.                         break;
  432.                 case 9:
  433.                         if(box9 == '9') {
  434.                                 box9 = 'X';
  435.                         }
  436.                         else {
  437.                                 cout << "invalid move" << endl;
  438.                         }
  439.                         break;
  440.                 default:
  441.                         cout << "ERROR!!!! try again" << endl;
  442.                         break;
  443.         }
  444.        
  445. rand:
  446.         srand(GetTickCount());
  447.         com_move = rand()%10;
  448.         if(com_move == 0) {
  449.                 goto rand;
  450.         }
  451.         com_AI();
  452.         switch(com_move) {
  453.                 case 1:
  454.                         if(box1 == '1') {
  455.                                 box1 = 'O';
  456.                         }
  457.                         else {
  458.                                 cout << "invalid move" << endl;
  459.                                 goto rand;
  460.                         }
  461.                         break;
  462.                 case 2:
  463.                         if(box2 == '2') {
  464.                                 box2 = 'O';
  465.                         }
  466.                         else {
  467.                                 cout << "invalid move" << endl;
  468.                                 goto rand;
  469.                         }
  470.                         break;
  471.                 case 3:
  472.                         if(box3 == '3') {
  473.                                 box3 = 'O';
  474.                         }
  475.                         else {
  476.                                 cout << "invalid move" << endl;
  477.                                 goto rand;
  478.                         }
  479.                         break;
  480.                 case 4:
  481.                         if(box4 == '4') {
  482.                                 box4 = 'O';
  483.                         }
  484.                         else {
  485.                                 cout << "invalid move" << endl;
  486.                                 goto rand;
  487.                         }
  488.                         break;
  489.                 case 5:
  490.                         if(box5 == '5') {
  491.                                 box5 = 'O';
  492.                         }
  493.                         else {
  494.                                 cout << "invalid move" << endl;
  495.                                 goto rand;
  496.                         }
  497.                         break;
  498.                 case 6:
  499.                         if(box6 == '6') {
  500.                                 box6 = 'O';
  501.                         }
  502.                         else {
  503.                                 cout << "invalid move" << endl;
  504.                                 goto rand;
  505.                         }
  506.                         break;
  507.                 case 7:
  508.                         if(box7 == '7') {
  509.                                 box7 = 'O';
  510.                         }
  511.                         else {
  512.                                 cout << "invalid move" << endl;
  513.                                 goto rand;
  514.                         }
  515.                         break;
  516.                 case 8:
  517.                         if(box8 == '8') {
  518.                                 box8 = 'O';
  519.                         }
  520.                         else {
  521.                                 cout << "invalid move" << endl;
  522.                                 goto rand;
  523.                         }
  524.                         break;
  525.                 case 9:
  526.                         if(box9 == '9') {
  527.                                 box9 = 'O';
  528.                         }
  529.                         else {
  530.                                 cout << "invalid move" << endl;
  531.                                 goto rand;
  532.                         }
  533.                         break;
  534.                 default:
  535.                         cout << "ERROR!!!! try again" << endl;
  536.                         goto rand;
  537.                         break;
  538.         }
  539.         system("CLS");
  540.         game_over();
  541.         draw_board();
  542.         }while(end_game == false);
  543. }
  544.  
  545. int main()
  546. {
  547.         char play;
  548.         cout << "Wanna play tic-tac-toe? y/n" << endl;
  549.         cin >> play;
  550.         if(play == 'y') {
  551.                 game();
  552.         }
  553.         else {
  554.                 cout << "Well fine then, don't click me if you don't want to play.....dousce" << endl;
  555.         }
  556.         return 0;
  557. }

Offline jho

  • The flamboyant FLOSS fanatic
  • Sr. Member
  • *
  • Posts: 352
  • Reputation 1199
  • Gender: Male
    • View Profile
    • http://hajotus.net
Re: tic-tac-toe game screwing up
« Reply #5 on: November 16, 2009, 10:33:04 am »
Nice job. It's still a bit more complicated than it could be, but IMO it's still great for a beginner. :)
« Last Edit: December 09, 2013, 03:55:31 pm by jho »
"I'm sorry, I only accept criticism in the form of sed expressions."

 

Donate


* Search


* Recent Posts

I miss the chatbox by Shishka
[August 27, 2019, 11:52:39 pm]


Image Comparison by Shishka
[May 15, 2017, 01:18:02 pm]


Re: srchub - free source code hosting by Nathan
[December 14, 2015, 11:37:02 pm]


Re: srchub - free source code hosting by Celestialkey
[November 27, 2015, 08:51:42 am]


Updates by Nathan
[October 30, 2015, 08:27:36 pm]