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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
dion_86
10 / 10 / 1
Регистрация: 27.11.2011
Сообщений: 251
#1

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

27.11.2011, 20:15. Просмотров 1499. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2011, 20:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Крестики нолики на Visual C++ (C++):

Народ нужен рабочи код Крестики-нолики на visual studio 2010 - C++
Много где искал код крестики-нолики везде он не рабочий я хз почему мож вы поможете ))))

Крестики/нолики - C++
Я не понимаю почему не работает, и в этом моя проблема. Буду благодарен любой помощи, а так же любой конструктивной критике по коду. Если...

Крестики-нолики - C++
Помогите пожалуйста создать игру крестики-нолики на 2 игроков, поле игры - массив 3х3. Нашла несколько вариантов кода, но как-то все...

крестики нолики - C++
Я дошел до проверки или кто-то выиграл и тут мне немного не понравилось.Для того чтобы проверить есть ли победитель, я сравниваю элементы...

Крестики-нолики 10 на 10 - C++
Нужно написать игру крестики-нолики. Застрял на алгоритме проверки победителя, точнее я написал, она работает, но алгоритм проверки в плане...

Крестики-нолики - C++
Здраствуйте,помогите пожалуйсто с програмкои крестики нолики проблема не могу в вести символы. Вот собственно сам код рамки . ...

2
dion_86
10 / 10 / 1
Регистрация: 27.11.2011
Сообщений: 251
28.11.2011, 23:06  [ТС] #2
Напишите хоть что то
0
dion_86
10 / 10 / 1
Регистрация: 27.11.2011
Сообщений: 251
30.11.2011, 22:12  [ТС] #3
Спасибо всем!! Уже написал

Добавлено через 5 минут
Кто хочет может глянуть. Для крестика работает для нолика не совсем.
Крестик как и надо ходит первый, но при выборе нолика - нолик должен ходить вторым а здесь он ходит первый. Короче, если надо кому-то доделайте.
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
#include<iostream.h>
#include<time.h>
#include<string.h>
#include <stdlib.h>
void main()
{
char KN[9]={' ',' ',' ',' ',' ',' ',' ',' ',' '};
int n_y;
int t=0, i=0, r=0, hod=0, f=0, v=0;
int krst=264;
int nl=237;
int nich=32;
int DA=0;
int vibor=0;
char * nolik = new char[17];
char * krestik = new char[17];
char * probel = new char[17];
 
 
            //______________________________ÑõåìГ* èãðû________________________________________
                cout<<"\n\t  ********************************************************"<<endl;
                       cout<<"\n\t\tDOBRO POGHALOVAT V IGRU  < KRESTIKI NOLIKI >\n\n\a\a"<<endl;
                       cout<<"\t\t     NA RISUNKE IZOBRAGHENA  SHEMA IGRI\n\n"<<endl;
                    cout<<"\t\t  **    **    **   "<<"-------"<<"   **    **   **  "<<endl;
                    cout<<"\t\t**  **   **  **    "<<"|1|2|3|"<<"    **  **  **  **"<<endl;
                    cout<<"\t\t**  **     **      "<<"-------"<<"      **    **  **"<<endl;
                    cout<<"\t\t**  **     **      "<<"|4|5|6|"<<"      **    **  **"<<endl;
                    cout<<"\t\t**  **     **      "<<"-------"<<"      **    **  **"<<endl;
                    cout<<"\t\t**  **   **  **    "<<"|7|8|9|"<<"    **  **  **  **"<<endl;
                    cout<<"\t\t  **    **    **   "<<"-------"<<"   **    **   **  "<<endl;
                cout<<"\n\t  ********************************************************\n\n"<<endl; 
                cout<<" Viberite kem vi hotite bit\n"<<endl;
            //______________________________Âûáîð ñèìâîëГ*_____________________________________
                do{ 
                    cout<<" KRESTIKOM < X > -> 1\n\n NOLIKOM   < O > -> 2\n\n Vash vibor: ";
                    cin>>vibor; cout<<"\a";
                    if(vibor!=1 && vibor!=2) 
                    {
                        cout<<endl<<"Vi moghete vibrat tolko 1 - <X> ili 2 - <O>\n\n\n\n\a";
                    }
                    if(vibor==1) { cout<<"\nVi vibrali < KRESTIK >\n\n";}
                    if(vibor==2) { cout<<"\nVi vibrali < NOLIK >\n\n";  }
                }while(vibor!=1 && vibor!=2);
 
 
//______________Ââîä ñèìâîëГ* ïîëüçîâГ*òåëåì________________________
for(hod=1; hod<=6; hod++)
{
    cout<<"Vvedite nomer yacheyki : ";
    cin>>n_y;  cout<<endl;          
        int cifr_klav[9]={1,2,3,4,5,6,7,8,9};
        if(n_y>0 && n_y<10)
        {
            for(f=0; f<9; f++)
            {
                if(n_y==cifr_klav[f])
                {
                    if( KN[f]!=' ')
                        { cout<<endl<<"Eta yacheyka zanyata! Viberite pustuyu yacheyku!\a\n"<<endl; r=1; hod--;}
                    
                    else
                    {
                        if(vibor==1) // X             
                        { KN[f]='X'; itoa(KN[f],krestik,10); r=0;}
                        if(vibor==2) // O           
                        { KN[f]='O'; itoa(KN[f],nolik,10); r=0;}
                    }
                }
            }           
            if (KN[n_y]==' ') { itoa(KN[n_y],probel,10); }
        }
        else { cout<<endl<<"Vi moghete vibrat yacheyku tolko v diapazone ot < 1 > do < 9 >\a\n"<<endl; r=1; hod=0; continue;}
 
 
//______________Ââîä ñèìâîëГ* êîìïüþòåðîì_____________________________
            if(r!=1)
            {
                srand( time( NULL ) );
                label:  n_y=rand()%9;
                        if(hod==5) 
                            {  n_y=rand()%10;}
                        else
                        {
                            if(KN[n_y]=='X' || KN[n_y]=='O')
                                     goto label;
                            else
                            {
                                if(vibor==1) // X
                                {   KN[n_y]='O'; itoa(KN[n_y],nolik,10);   }
                                if(vibor==2) // O
                                {   KN[n_y]='X'; itoa(KN[n_y],krestik,10); }
                            }
                        }
                
            }
//____________________________________________Âûâîä ðåçóëüòГ*ГІГ* Г*Г* ГҐГЄГ°Г*Г*_____________________________________________________
                    cout<<"\t\t\t Hod : "<<hod<<"\n\n"<<endl;
                    cout<<"\t\t  **    **    **   "<<"-------"                              <<"   **    **   **  "<<endl;
                    cout<<"\t\t**  **   **  **    "<<"|"<<KN[0]<<"|"<<KN[1]<<"|"<<KN[2]<<"|"<<"    **  **  **  **"<<endl;
                    cout<<"\t\t**  **     **      "<<"-------"                              <<"      **    **  **"<<endl;
                    cout<<"\t\t**  **     **      "<<"|"<<KN[3]<<"|"<<KN[4]<<"|"<<KN[5]<<"|"<<"      **    **  **"<<endl;
                    cout<<"\t\t**  **     **      "<<"-------"                              <<"      **    **  **"<<endl;
                    cout<<"\t\t**  **   **  **    "<<"|"<<KN[6]<<"|"<<KN[7]<<"|"<<KN[8]<<"|"<<"    **  **  **  **"<<endl;
                    cout<<"\t\t  **    **    **   "<<"-------"                              <<"   **    **   ** \a\n "<<endl;
//______________________________________Åñëè âûáðГ*Г* êðåñòèê_______________________________________
   if ( (KN[0]+KN[4]+KN[8]==krst)  || (KN[2]+KN[4]+KN[6]==krst)  || 
        (KN[0]+KN[1]+KN[2]==krst)  || (KN[3]+KN[4]+KN[5]==krst)  || (KN[6]+KN[7]+KN[8]==krst) ||
        (KN[0]+KN[3]+KN[6]==krst)  || (KN[1]+KN[4]+KN[7]==krst)  || (KN[2]+KN[5]+KN[8]==krst)   )
   {
               if(vibor==1)
                 {cout<<"\n\t\t\t  !!!!!  VI VIYGRALI  !!!!!\n\n\a\a\a"<<endl; break;}
               if(vibor==2)
                    {cout<<"\t\t\t\tVI PROIGRALI\a\a"<<endl; break;}
 
   }
 
//______________________________________Åñëè âûáðГ*Г* Г*îëèê__________________________________
   if ( (KN[0]+KN[4]+KN[8]==nl) || (KN[2]+KN[4]+KN[6]==nl) ||                                
        (KN[0]+KN[1]+KN[2]==nl) || (KN[3]+KN[4]+KN[5]==nl) || (KN[6]+KN[7]+KN[8]==nl) ||   
        (KN[0]+KN[3]+KN[6]==nl) || (KN[1]+KN[4]+KN[7]==nl) || (KN[2]+KN[5]+KN[8]==nl)   )   
        {
               if(vibor==2)
                 {cout<<"\n\t\t\t  !!!!!  VI VIYGRALI  !!!!!\n\n\a\a\a"<<endl; break;}
               if(vibor==1)
                    {cout<<"\t\t\t\tVI PROIGRALI\a\a"<<endl; break;}
 
        }
//________________________________________Óñëîâèÿ Г*ГЁГ·ГјГЁ_____________________________________________________________________________________________________
  
     if ( (KN[0]+KN[4]+KN[8]!=krst)  && (KN[0]+KN[4]+KN[8]!=nl)  &&  (KN[0]+KN[1]+KN[2]!=krst)  && (KN[0]+KN[1]+KN[2]!=nl)  &&   
          (KN[0]+KN[3]+KN[6]!=krst)  && (KN[0]+KN[3]+KN[6]!=nl)  &&  (KN[2]+KN[4]+KN[6]!=krst)  && (KN[2]+KN[4]+KN[6]!=nl)  &&     
          (KN[3]+KN[4]+KN[5]!=krst)  && (KN[3]+KN[4]+KN[5]!=nl)  &&  (KN[1]+KN[4]+KN[7]!=krst)  && (KN[1]+KN[4]+KN[7]!=nl)  &&   
          (KN[6]+KN[7]+KN[8]!=krst)  && (KN[6]+KN[7]+KN[8]!=nl)  &&  (KN[2]+KN[5]+KN[8]!=krst)  && (KN[2]+KN[5]+KN[8]!=nl)  && 
          (KN[2]!=nich && KN[5]!=nich && KN[8]!=nich && KN[3]!=nich && KN[4]!=nich&& KN[5]!=nich && KN[6]!=nich&& KN[7]!=nich && KN[8]!=nich) && (hod==5)) 
                {cout<<"\t\t\t       XO! NICHYA !OX"<<endl;break;} 
                 
}
 
delete nolik;
delete krestik;
delete probel;
 
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2011, 22:12
Привет! Вот еще темы с ответами:

Крестики-нолики - C++
Ребят! Как сделать проверку на занятость квадратика? #include &lt;iostream&gt; using namespace std; int BoardSquare(int array) ...

крестики-нолики - C++
Здравствуйте! у кого есть примеры программ крестики-нолики? если не затруднит поделитесь пожалуйста..

Крестики Нолики - C++
вот задали написать игру , скажите нормально впринципе написал или нет , и один вопрос немогу почемут зделать чтоб проверяло кто выиграл ) ...

Крестики-нолики - C++
Доброго времени суток! Вот, решил для курсовой работы написать игру Крестики-нолики. Но мне требуется маленькая помощь. Подскажите, как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru