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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
dion_86
 Аватар для dion_86
10 / 10 / 1
Регистрация: 27.11.2011
Сообщений: 251
27.11.2011, 20:15     Крестики нолики на Visual C++ #1
Пытаюсь написать игру крестики нолики на 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;}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2011, 20:15     Крестики нолики на Visual C++
Посмотрите здесь:

C++ Крестики-нолики
C++ Крестики Нолики
C++ крестики нолики
C++ Народ нужен рабочи код Крестики-нолики на visual studio 2010
C++ Крестики нолики
Крестики нолики C++
C++ Крестики-нолики
Крестики нолики C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dion_86
 Аватар для dion_86
10 / 10 / 1
Регистрация: 27.11.2011
Сообщений: 251
28.11.2011, 23:06  [ТС]     Крестики нолики на Visual C++ #2
Напишите хоть что то
dion_86
 Аватар для dion_86
10 / 10 / 1
Регистрация: 27.11.2011
Сообщений: 251
30.11.2011, 22:12  [ТС]     Крестики нолики на Visual C++ #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;
 
}
Yandex
Объявления
30.11.2011, 22:12     Крестики нолики на Visual C++
Ответ Создать тему
Опции темы

Текущее время: 12:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru