Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Бред в крестиках ноликах - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Можно ли создать символьный двумерный массив char ? http://www.cyberforum.ru/cpp-beginners/thread628699.html
Можно ли создать символьный двумерный массив char ? Например char slovo; и потом записывать и считывать слова ?
C++ Строка в консоли Что сделать что бы в консоли, когда выводиться строка, были не крякозябры, а нормальный текст? Русский текст. http://www.cyberforum.ru/cpp-beginners/thread628686.html
C++ Определение метода вне класса, как inline в многофайловом проекте
Здравствуйте! Помогите разобраться!) В общем имеется: /////////////////////////////////////////MonstrLib.h///////////////////////////////// #ifndef MONSTR_LIB
C++ Условие для прекращения цикла
Имеется задача: Ввести двоичный код и перевести его в десятичный. Имеется подсказка для решения задачи: использовать деление и деление с остатком, для "вырывания" отдельных чисел из двоичного кода....
C++ Проблема с массивом строк http://www.cyberforum.ru/cpp-beginners/thread628635.html
Доброго времени суток! Есть класс, в котором объявлен массив строк class MyClass { public: MyClass(); ~MyClass(void); bool Write(int i); void PutValue(int index, char* str);
C++ Проверка на корректный ввод. Выходит из цикла раньше времени Хочется чтобы код заставлял вводить юзера снова и снова пока тот не ввидет корректный инпут. А у меня получается что он просто проверяет и если импут не корректный то выходит из цикла. Подскажите... подробнее

Показать сообщение отдельно
Andryuxa
Заблокирован

Бред в крестиках ноликах - C++

25.07.2012, 19:28. Просмотров 528. Ответов 7
Метки (Все метки)

Проблема. Написал цикдические крестики нолики ( в конце игры спрашивает хотите сыгарть еще или нет?) и после этого происходит какой то бред. Конкретнее скопируйте код и уидите сами. После 5-6 повторения все приходит в норму. Вот сам код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
#include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;
char r;
char q='y';
char n1 [20], n2 [20];
char t[9] = {'_', '_', '_', '_', '_', '_', '_', '_', '_'};
int x;
int h;
void game();
void names();
void table();
void win();
void qq();
int endgame();
void playagain();
int main()
{
   cout<<"   X-O Game by Andrew_Grey\n";
   while (q='y')
   {
   cout<<"Do you want read rules? (y = 'Yes, I want!',  n = 'No, I know how play!' )\n";
   metka:
   cin>>r;
   switch (r)
   {
          case 'y':
               cout<<" RULES:\n";
               system("pause");
               system ("cls");
               goto metka2;
               break;
          case 'n':
               system ("cls");
               goto metka2;
               break;
          default:
               cout<<" Error!\n";
               goto metka;
               break;
   }
   metka2:
   playagain();
   names();
   game();
}
return 0;
}
void names()
{
     cout<<"Enter player's names (Please, make sure names are different)\n";
do
     {
     cout<<"\nEnter first player's name: ";
     gets(n1);
     gets(n1);
     cout<<"\n";
     cout<<"\nEnter second player's name: ";
     gets(n2);
     cout<<"\n";
     if (!strcmp(n1, n2)) cout<<"\nPlease, enter different names\n";
     }
while (!strcmp(n1, n2));
cout<<"Let's go!";
system ("pause");
system ("cls");
}
void game ()
{
     cout<<"Game has been started!!!\n";
     goto metka3;
     while (x<1 || x>9 || t[x-1]=='X' || t[x-1]=='O' || h>9)
     {
           metka3:
           table ();
           cout<<"Player "<<n1<<" is choosing place: ";
           cin>>x;
           if (x<1 || x>9)
           {
           cout<<"Error! Please choosing true places!\n";
           goto metka3;
           }
           if (t[x-1]=='X' || t[x-1]=='O') 
           {
           cout<<"Error! Please make sure place hasn't been taken!";
           goto metka3;
           }
           t[x-1]='X';
           h=h+1;
           system ("cls");
           qq();
           metka4:
           table ();
           cout<<"Player "<<n2<<" is choosing place: ";
           cin>>x;
           if (x<1 || x>9)
           {
           cout<<"Error! Please choosing true places!\n";
           goto metka4;
           }
           if (t[x-1]=='X' || t[x-1]=='O') 
           {
           cout<<"Error! Please make sure place hasn't been taken!";
           goto metka4;
           }
           t[x-1]='O';
           h=h+1;
           system ("cls");
           qq();
     }
}
void table ()
{
      cout<<"                                    "<<n1<<" VS "<<n2<<"\n";
      cout << t[0] << '|' << t[1] << '|' << t[2]  << endl;
      cout << t[3] << '|' << t[4] << '|' << t[5]  << endl;
      cout << t[6] << '|' << t[7] << '|' << t[8]  << "\n" << endl;
}   
void win()
{
     table();
     if(t[0]==t[1] && t[1]==t[2] && t[2]=='X' || t[3]==t[4] && t[4]==t[5] && t[5]=='X' ||t[6]==t[7] && t[8]==t[7] && t[8]=='X' ||t[0]==t[3] && t[3]==t[6] && t[6]=='X' ||t[1]==t[4] && t[4]==t[7] && t[7]=='X' ||t[5]==t[2] && t[8]==t[5] && t[8]=='X' ||t[2]==t[4] && t[6]==t[4] && t[6]=='X' ||t[0]==t[4] && t[4]==t[8] && t[8]=='X' )
     {
                   cout<<"\nPlayer "<<n1<<" win!\n";
                   endgame();
     }
     else
     {
         if (t[0]==t[1] && t[1]==t[2] && t[2]=='O' || t[3]==t[4] && t[4]==t[5] && t[5]=='O' ||t[6]==t[7] && t[8]==t[7] && t[8]=='O' ||t[0]==t[3] && t[3]==t[6] && t[6]=='O' ||t[1]==t[4] && t[4]==t[7] && t[7]=='O' ||t[5]==t[2] && t[8]==t[5] && t[8]=='O' ||t[2]==t[4] && t[6]==t[4] && t[6]=='O' ||t[0]==t[4] && t[4]==t[8] && t[8]=='O' )
         {
                   cout<<"\nPlayer "<<n2<<" win!\n";
                   endgame();
         }
         else
         {
             if (h==9)
             {
             cout<<"\nDraw!\n";
             endgame();
             }                
         }
     }
}
int endgame()
{
   cout<<" Do you want play again??? (y = 'Yes, we want!', n = 'No, next time')\n";
   cin>>q;
   switch (q)
   {
          case 'y':
               system ("cls");
               playagain();
               break;
          case 'n':
               return 0;
               break;
          default:
               cout<<" Error!\n";
               cin>>q;
               break;
   }
}
void qq()
{
     switch (h)
           {
                  case 4:
                       win();
                       break;
                  case 5:
                       win();
                       break;
                  case 6:
                       win();
                       break;
                  case 7:
                       win();
                       break;
                  case 8:
                       win();
                       break;
                  case 9:
                       win();
                       break;
           }
}
void playagain()
{
     h=0;
     t[0]='_'; t[1]='_'; t[2]='_'; t[3]='_'; t[4]='_'; t[5]='_'; t[6]='_'; t[7]='_'; t[8]='_'; t[9]='_'; 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru