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

Крестики нолики на Visual C++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ C++ виртуальные функции http://www.cyberforum.ru/cpp-beginners/thread393242.html
Помогите плиз, используя мою прогу, используя мой класс, объявить в нем функции виртуальными и дополнить программу классом, в котором будет использованы эти функции. Написать демонстрационную...
C++ do...while Дана последовательность:. Составить программу c использованием цикла while, выводящую на экран значение и номер члена последовательности, меньшего 0,1. Тест: n=4, p(n)=0,0625. Использовать цикл... http://www.cyberforum.ru/cpp-beginners/thread393237.html
C++ не разборчивые коды
помогите пожалуйста ответить на вопросы? заранее спасибо. немного не понятны вопросы, особенно первые 1. (10%)Is next statement correct? strstr("Hello", 'e') Give reasons for your answer. If...
Не работают перегруженные операторы C++
проблема такова: есть перегруженный оператор "=", при вызове которого выполняется присвоение значений массива, однако же, результат почему-то обратно в main не возвращается. #include "stdafx.h"...
C++ Проверьте, не является ли слово "кас" корнем слова без приставки http://www.cyberforum.ru/cpp-beginners/thread393223.html
3 задачи - проверьте, не является ли слово "кас" корнем слова без приставки. - Отделите в слове повторяющиеся более двух раз буквы запятыми. - Вычеркните из слова букву, предшествующую...
C++ Закрепление отметки в checkedListBox. Доброго здоровьица! Хочу узнать, как можно сделать так, чтобы после выделения какого-либо пункта в checkedListBox нельзя было бы снять выделение. Заранее спасибо :) подробнее

Показать сообщение отдельно
dion_86
10 / 10 / 1
Регистрация: 27.11.2011
Сообщений: 251

Крестики нолики на Visual C++ - C++

27.11.2011, 20:15. Просмотров 1480. Ответов 2
Метки (Все метки)

Пытаюсь написать игру крестики нолики на Visual C++ 6.0
В связи стем что на компьютерных курсах сжатый срок обучения то из - за небольшой практики и наверное недостаточной базы знаний эта простая задача представляет мне сложность.
Если кто подскажет или поможет написать эту задачу у меня не будет слов в благодарности.

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
#include<iostream.h>
#include<time.h>
#include<string.h>
#include <stdlib.h>
void main()
{
int t=0;
const int a=3;  
const int b=3;
int k=0;
int j=0;
char S[a][b]={{' ',' ',' '},{' ',' ',' '},{' ',' ',' '}};
int stb=0;
int stk=0;
int hod=0;
int win=264;
int loss=237;
int n_y=0;
char * nolik = new char[17];
char * krestik = new char[17];
char * probel = new char[17];
 
do
{
    hod++;      cin>>n_y;
                    
                    if(n_y==1)
                    { S[0][0]='X'; itoa(S[0][0],krestik,10);} 
                
                    if(n_y==2) 
                    { S[0][1]='X'; itoa(S[0][1],krestik,10);}  
            
                    if(n_y==3) 
                    { S[0][2]='X'; itoa(S[0][2],krestik,10);}  
        
                    if(n_y==4)
                    { S[1][0]='X'; itoa(S[1][0],krestik,10);} 
            
                    if(n_y==5)
                    { S[1][1]='X'; itoa(S[1][1],krestik,10);}  
                
                    if(n_y==6)
                    { S[1][2]='X'; itoa(S[1][2],krestik,10);} 
                 
                    if(n_y==7) 
                    { S[2][0]='X'; itoa(S[2][0],krestik,10);} 
             
                    if(n_y==8)
                    { S[2][1]='X'; itoa(S[2][1],krestik,10);} 
 
                    if(n_y==9)
                    { S[2][2]='X'; itoa(S[2][2],krestik,10);}
                                            
 
            for (stk=0; stk<=2; stk++)
            {
        
                for(stb=0; stb<=2; stb++)
                {   
 
                    if(S[stk][stb]=='O')
                    { itoa(S[stk][stb],nolik,10);} 
                
                        if(S[stk][stb]==88||S[stk][stb]==79)
                        {
                            if(stk==2)
                            {
                            S[stk-1][stb]='O';
                                break;
                            }
                            if(stk==0)
                            {
                            S[stk+1][stb]='O';
                                break;
                            }
                            if(stk==1)
                            {   
                                            time_t tt;
                                            tm *pMyTime;
                                            tt = time (NULL);
                                            pMyTime = localtime(&tt);
                                            t=tt%10;
                                if(t%2)
                                {
                                S[0][stb]='O';
                                break;
                                }
                                else
                                {
                                S[2][stb]='O';
                                break;
                                }
                            }
 
                        }
                    
                        if( (S[0][stb]==88||S[0][stb]==79) && (S[1][stb]==88||S[1][stb]==79) && (S[2][stb]==88||S[2][stb]==79) )
                        {
                            if(stb==2)
                            {
                              stb=stb-1;
                              break;
                            }
                            if(stb==0)
                            {
                              stb=stb+1;
                              break;
                            }
                            if(stb==1)
                            {
                                        time_t tt;
                                        tm *pMyTime;
                                        tt = time (NULL);
                                        pMyTime = localtime(&tt);
                                            t=tt%10;
                                if(t%2)
                                {
                                S[stk][0]='O';
                                break;
                                }
                                else
                                {
                                S[stk][2]='O';
                                break;
                                }
                            }
                        }
                    
                }
 
            }
 
                 cout<<"Sam massiv"<<endl;
                   for ( k = 0; k < a; k++)
                   {
                       for ( j =0; j<b; j++)
                       {
                            
                            cout<<S[k][j]<<" ";
 
                       }
                    cout<<endl;
                   }
}while(hod<=8);
 
delete nolik;
delete krestik;
delete probel;
 
}
Я понимаю что в представленном примере уровень программирования небольшой, но что смог то и написал.
Вполне возможно эту задачу придется полностью переделывать.
В этом варианте я должен играть с компьютером. Но нужно ее будет дорабатывать на то чтобы я имел право выбрать " кем я хочу быть крестиком или ноликом ". Еще здесь не работает условие по которому определяется наличие символа в ячейке, т. е. если ячейка занята то нельзя вводить туда снова символ. И бывает компьютер сам не соблюдает это условие.
ps. Условия выигрыша и проигрыша приведены ниже.

Добавлено через 9 минут
C++
1
2
3
4
5
6
7
8
9
10
//______________________________________Óñëîâèÿ âûéãðûøГ*___________________________________________________________________________
   if ( (S[0][0]+S[1][1]+S[2][2]==win)  || (S[0][2]+S[1][1]+S[2][0]==win) )                                       {cout<<"Vi viygrali"<<endl;} 
   if ( (S[0][0]+S[1][0]+S[2][0]==win)  || (S[0][1]+S[1][1]+S[2][1]==win)  || (S[0][2]+S[1][2]+S[2][2]==win) )    {cout<<"Vi viygrali"<<endl;} 
   if ( (S[0][0]+S[0][1]+S[0][2]==win)  || (S[1][0]+S[1][1]+S[1][2]==win)  || (S[2][0]+S[2][1]+S[2][2]==win) )    {cout<<"Vi viygrali"<<endl;}
//______________________________________Óñëîâèÿ ïðîéãðûøГ*__________________________________________________________________________
   if ( (S[0][0]+S[1][1]+S[2][2]==loss) || (S[0][2]+S[1][1]+S[2][0]==loss) )                                      {cout<<"Vi proigrali"<<endl;}
   if ( (S[0][0]+S[1][0]+S[2][0]==loss) || (S[0][1]+S[1][1]+S[2][1]==loss) || (S[0][2]+S[1][2]+S[2][2]==loss) )   {cout<<"Vi proigrali"<<endl;}
   if ( (S[0][0]+S[0][1]+S[0][2]==loss) || (S[1][0]+S[1][1]+S[1][2]==loss) || (S[2][0]+S[2][1]+S[2][2]==loss) )   {cout<<"Vi proigrali"<<endl;}
//________________________________________Óñëîâèÿ Г*ГЁГ·ГјГЁ____________________________________________________________________________
 else                               {cout<<"Nichya"<<endl;}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru