Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Недодневник
- Версия Beta 2.0
- Работает правильно
- 1)Игрок всегда ноmер 1
- 2)Продолжил делать интерфейс
- 3)Игра завершается при победе одного из игроков
- 4)Баг:3.2 вместо 1.1. Походу нужно будет разводить подсчёт единиц и двоек в разные циклы
- 5)Если разводить,то это ещё +-60 строчек и код утяжелится для компилятора.
- 3)Нужны тестировщики
- коды ходов
- 1.1-победа по вертикал
- 1.2- поражение по вертикали
- 2.1-победа по диагонали
- 2.2- поражение по диагонали
- 3.1-победа по горизонтали
- 3.2- поражение по горизонтали
- Инструкция для тестеровщика
- 1)нажми кнопку RUN
- 2)вводи координаты точки куда хочешь сходить,в виде :у пробел х. Ты играешь единицами
- 3) не ходи в те клетки,которые заняты.Ты,конечно,можешь,но не можешь
- 4)после того как сходил,отмотай большой бегунок максимально вниз
- 5)игра не завершится после чьей-либо победы
- 6)когда игра закончится,будет надпись:game over
- 7)для новой игры введи любую надпись кроме "end"
- 8)если ИИ сделал неправильный ход,два хода подряд,не сходил-скинь код хода(он будет слева от верхней черты)
- */
- #include <string>
- #include <iostream>
- using namespace std;
- int pole[3][3];
- /* y x
- 0 1 2 x
- 0 0 1 2
- 1 0 1 2
- 2 0 1 2
- y
- */
- int y,x,gg,ii=0,jj=0,iii=3,jjj=3;
- void out()//готово
- {
- cout<<"_____________________________________"<<endl;
- cout<<pole[0][0]<<pole[0][1]<<pole[0][2]<<endl;
- cout<<pole[1][0]<<pole[1][1]<<pole[1][2]<<endl;
- cout<<pole[2][0]<<pole[2][1]<<pole[2][2]<<endl;
- cout<<"_____________________________________"<<endl;
- }
- int bestplay(int play)
- {
- int win=0,dun=0;
- if(play>2)
- {
- win=0;
- dun=0;
- for(int i=0;i<3;i++)//чекает по горизонталям
- {
- for(int j=0;j<3;j++)
- {
- if(pole[i][j]==2)
- {
- win++;
- }
- if(pole[i][j]==1)
- {
- dun++;
- }
- if(dun==3)
- {
- gg=1;
- return 0;
- }
- if(win==2||dun==2)
- {
- for(int k=0;k<3;k++)
- {
- if(pole[i][k]==0)
- {
- pole[i][k]=2;
- if(win==2)
- {
- cout<<"3.1";
- gg=2;
- return 0;
- }
- win=0;
- dun=0;
- cout<<"3.2";
- return 0;
- }
- }
- }
- }
- win=0;
- dun=0;
- }
- win=0;
- dun=0;
- for(int i=0;i<3;i++)//чекает по вертикалям
- {
- for(int j=0;j<3;j++)
- {
- if(pole[j][i]==2)
- {
- win++;
- }
- if(pole[j][i]==1)
- {
- dun++;
- }
- if(dun==3)
- {
- gg=1;
- return 0;
- }
- if(win==2||dun==2)
- {
- for(int k=0;k<3;k++)
- {
- if(pole[k][i]==0)
- {
- pole[k][i]=2;
- if(win==2)
- {
- gg=2;
- cout<<"1.1";
- }
- win=0;
- dun=0;
- cout<<"1.2";
- return 0;
- }
- }
- }
- }
- win=0;
- dun=0;
- }
- win=0;
- dun=0;
- for(int i=0;i<3;i++)//чекает по диагоналям
- {
- if(pole[i][ii]==1)
- {
- dun++;
- }
- if(pole[i][ii]==2)
- {
- win++;
- }
- if(dun==3)
- {
- gg=1;
- return 0;
- }
- if(win==2||dun==2)
- {
- for(int j=0;j<3;j++)
- {
- if(pole[j][jj]==0)
- {
- if(win==2)
- {
- gg=2;
- cout<<"2.1";
- return 0;
- }
- pole[j][jj]=2;
- cout<<"2.2";
- return 0;
- }
- jj++;
- }
- }
- ii++;
- }
- ii=0;
- jj=0;
- }
- if(pole[1][1]==0)
- {
- pole[1][1]=2;
- return 0;
- }
- if(pole[0][2]==0)
- {
- pole[0][2]=2;
- return 0;
- }
- for(int i=0;i<3;i++)
- {
- for(int j=0;j<3;j++)
- {
- if(pole[j][i]==0)
- {
- pole[j][i]=2;
- return 0;
- }
- }
- }
- return 0;
- }
- void input()//готово
- {
- int y;
- int x;
- cin>>y>>x;
- pole[y][x]=1;
- }
- void newgame()//готово
- {
- for(int i=0;i<3;i++)
- {
- for(int j=0;j<3;j++)
- {
- pole[i][j]=0;
- }
- }
- out();
- }
- int main()//готово
- {
- int play=0;
- string kom="a";
- setlocale(LC_ALL,"Russian");
- cin>>kom;
- while(kom!="end")
- {
- newgame();
- for(int i=0;play<9;i++)
- {
- play++;
- input();
- play++;
- bestplay(play);
- switch (gg)
- {
- case 2:
- cout<<"ты проиграл"<<endl;
- play=0;
- break;
- case 1:
- cout<<"ты победил"<<endl;
- play=0;
- break;
- }
- out();
- }
- cout<<endl<<"game over"<<endl;
- fflush(stdin);
- cout<<"____________________________";
- play=0;
- cin>>kom;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement