Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* #include */
- #include <iostream>
- #include <string>
- using namespace std;
- #include <windows.h>
- #include <cstdlib>
- #include <ctime>
- #include <conio.h>
- char tabla[10],tasta;
- short scor1=0,scor2=0,modjoc;
- char nume1[20],nume2[20]="Calculator";
- HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);
- CONSOLE_CURSOR_INFO CursorInfo;
- struct Culoare
- {
- Culoare(unsigned short c): cul(c) {}
- Culoare() {}
- unsigned short cul;
- };
- ostream& operator<< (ostream& os,Culoare c)
- {
- SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),c.cul);
- return os;
- }
- Culoare arraycul[9];
- const Culoare NC=7;
- const Culoare ROSU=12;
- const Culoare VERDE=10;
- const Culoare GOLD=6;
- void curataecran()
- {
- COORD home;home.X=0;home.Y=0;DWORD Written;
- FillConsoleOutputCharacter(hOut,(TCHAR)' ',(80*300),home,&Written);
- FillConsoleOutputAttribute(hOut,7,(80*300),home,&Written);
- SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),home);
- SetConsoleTextAttribute(hOut,7);
- }
- void asteapta()
- {
- INPUT_RECORD InputRecord;
- DWORD Writtten;
- HANDLE hStdIn = GetStdHandle(STD_INPUT_HANDLE);
- while(true)
- {
- ReadConsoleInputA(hStdIn,&InputRecord,1,&Writtten);
- if(InputRecord.EventType==KEY_EVENT&&InputRecord.Event.KeyEvent.bKeyDown) break;
- }
- }
- void AiMove()
- {
- srand(time(0));
- do{
- tasta=rand()%9;
- }while(tabla[tasta]=='X'||tabla[tasta]=='0');
- tasta+=49;
- if(tabla[0]=='0'&&tabla[1]=='0'&&tabla[2]=='3') tasta='3';
- if(tabla[1]=='0'&&tabla[2]=='0'&&tabla[0]=='1') tasta='1';
- if(tabla[0]=='0'&&tabla[2]=='0'&&tabla[1]=='2') tasta='2';
- if(tabla[3]=='0'&&tabla[4]=='0'&&tabla[5]=='6') tasta='6';
- if(tabla[4]=='0'&&tabla[5]=='0'&&tabla[3]=='4') tasta='4';
- if(tabla[3]=='0'&&tabla[5]=='0'&&tabla[4]=='5') tasta='5';
- if(tabla[6]=='0'&&tabla[7]=='0'&&tabla[8]=='9') tasta='9';
- if(tabla[7]=='0'&&tabla[8]=='0'&&tabla[6]=='7') tasta='7';
- if(tabla[0]=='0'&&tabla[4]=='0'&&tabla[8]=='9') tasta='9';
- if(tabla[4]=='0'&&tabla[8]=='0'&&tabla[0]=='1') tasta='1';
- if(tabla[0]=='0'&&tabla[8]=='0'&&tabla[4]=='5') tasta='5';
- if(tabla[2]=='0'&&tabla[4]=='0'&&tabla[6]=='7') tasta='7';
- if(tabla[4]=='0'&&tabla[6]=='0'&&tabla[2]=='3') tasta='3';
- if(tabla[2]=='0'&&tabla[6]=='0'&&tabla[4]=='5') tasta='5';
- if(tabla[0]=='0'&&tabla[3]=='0'&&tabla[6]=='7') tasta='7';
- if(tabla[3]=='0'&&tabla[6]=='0'&&tabla[0]=='1') tasta='1';
- if(tabla[0]=='0'&&tabla[6]=='0'&&tabla[3]=='4') tasta='4';
- if(tabla[1]=='0'&&tabla[4]=='0'&&tabla[7]=='8') tasta='8';
- if(tabla[4]=='0'&&tabla[7]=='0'&&tabla[1]=='2') tasta='2';
- if(tabla[1]=='0'&&tabla[7]=='0'&&tabla[4]=='5') tasta='5';
- if(tabla[2]=='0'&&tabla[5]=='0'&&tabla[8]=='9') tasta='9';
- if(tabla[5]=='0'&&tabla[8]=='0'&&tabla[2]=='3') tasta='3';
- if(tabla[2]=='0'&&tabla[8]=='0'&&tabla[5]=='6') tasta='6';
- if(tabla[6]=='0'&&tabla[8]=='0'&&tabla[7]=='8') tasta='8';
- if(tabla[0]=='0'&&tabla[4]=='0'&&tabla[8]=='9') tasta='9';
- ////// blocare
- if(tabla[0]=='X'&&tabla[1]=='X'&&tabla[2]=='3') tasta='3';
- if(tabla[1]=='X'&&tabla[2]=='X'&&tabla[0]=='1') tasta='1';
- if(tabla[0]=='X'&&tabla[2]=='X'&&tabla[1]=='2') tasta='2';
- if(tabla[3]=='X'&&tabla[4]=='X'&&tabla[5]=='6') tasta='6';
- if(tabla[4]=='X'&&tabla[5]=='X'&&tabla[3]=='4') tasta='4';
- if(tabla[3]=='X'&&tabla[5]=='X'&&tabla[4]=='5') tasta='5';
- if(tabla[6]=='X'&&tabla[7]=='X'&&tabla[8]=='9') tasta='9';
- if(tabla[7]=='X'&&tabla[8]=='X'&&tabla[6]=='7') tasta='7';
- if(tabla[0]=='X'&&tabla[4]=='X'&&tabla[8]=='9') tasta='9';
- if(tabla[4]=='X'&&tabla[8]=='X'&&tabla[0]=='1') tasta='1';
- if(tabla[0]=='X'&&tabla[8]=='X'&&tabla[4]=='5') tasta='5';
- if(tabla[2]=='X'&&tabla[4]=='X'&&tabla[6]=='7') tasta='7';
- if(tabla[4]=='X'&&tabla[6]=='X'&&tabla[2]=='3') tasta='3';
- if(tabla[2]=='X'&&tabla[6]=='X'&&tabla[4]=='5') tasta='5';
- if(tabla[0]=='X'&&tabla[3]=='X'&&tabla[6]=='7') tasta='7';
- if(tabla[3]=='X'&&tabla[6]=='X'&&tabla[0]=='1') tasta='1';
- if(tabla[0]=='X'&&tabla[6]=='X'&&tabla[3]=='4') tasta='4';
- if(tabla[1]=='X'&&tabla[4]=='X'&&tabla[7]=='8') tasta='8';
- if(tabla[4]=='X'&&tabla[7]=='X'&&tabla[1]=='2') tasta='2';
- if(tabla[1]=='X'&&tabla[7]=='X'&&tabla[4]=='5') tasta='5';
- if(tabla[2]=='X'&&tabla[5]=='X'&&tabla[8]=='9') tasta='9';
- if(tabla[5]=='X'&&tabla[8]=='X'&&tabla[2]=='3') tasta='3';
- if(tabla[2]=='X'&&tabla[8]=='X'&&tabla[5]=='6') tasta='6';
- if(tabla[6]=='X'&&tabla[8]=='X'&&tabla[7]=='8') tasta='8';
- if(tabla[0]=='X'&&tabla[4]=='X'&&tabla[8]=='9') tasta='9';
- }
- void deseneaza_tabla()
- {
- cout
- <<nume1<<" : "<<scor1<<" "<<nume2<<" : "<<scor2<<endl<<endl
- <<" | | "<<endl
- <<" "<<arraycul[0]<<tabla[0]<<NC<<" | "<<arraycul[1]<<tabla[1]<<NC<<" | "<<arraycul[2]<<tabla[2]<<NC<<endl
- <<" | | "<<endl
- <<"-----|-----|-----"<<endl
- <<" | | "<<endl
- <<" "<<arraycul[3]<<tabla[3]<<NC<<" | "<<arraycul[4]<<tabla[4]<<NC<<" | "<<arraycul[5]<<tabla[5]<<NC<<endl
- <<" | | "<<endl
- <<"-----|-----|-----"<<endl
- <<" "<<arraycul[6]<<tabla[6]<<NC<<" | "<<arraycul[7]<<tabla[7]<<NC<<" | "<<arraycul[8]<<tabla[8]<<NC<<endl
- <<" | | "<<endl
- <<" | | "<<endl;
- }
- short joculsaterminat()
- {
- if(tabla[0]==tabla[1]&&tabla[1]==tabla[2]) {arraycul[0].cul=13;arraycul[1].cul=13;arraycul[2].cul=13;return 1;}
- if(tabla[3]==tabla[4]&&tabla[4]==tabla[5]) {arraycul[3].cul=13;arraycul[4].cul=13;arraycul[5].cul=13;return 1;}
- if(tabla[6]==tabla[7]&&tabla[7]==tabla[8]) {arraycul[6].cul=13;arraycul[7].cul=13;arraycul[8].cul=13;return 1;}
- if(tabla[0]==tabla[3]&&tabla[3]==tabla[6]) {arraycul[0].cul=13;arraycul[3].cul=13;arraycul[6].cul=13;return 1;}
- if(tabla[1]==tabla[4]&&tabla[4]==tabla[7]) {arraycul[1].cul=13;arraycul[4].cul=13;arraycul[7].cul=13;return 1;}
- if(tabla[2]==tabla[5]&&tabla[5]==tabla[8]) {arraycul[2].cul=13;arraycul[5].cul=13;arraycul[8].cul=13;return 1;}
- if(tabla[0]==tabla[4]&&tabla[4]==tabla[8]) {arraycul[0].cul=13;arraycul[4].cul=13;arraycul[8].cul=13;return 1;}
- if(tabla[2]==tabla[4]&&tabla[4]==tabla[6]) {arraycul[2].cul=13;arraycul[4].cul=13;arraycul[6].cul=13;return 1;}
- if(!(tabla[0]=='1'||tabla[1]=='2'||tabla[2]=='3'||tabla[3]=='4'))
- if(!(tabla[4]=='5'||tabla[5]=='6'||tabla[6]=='7'||tabla[7]=='8'||tabla[8]=='9'))
- return -1;
- return 0;
- }
- void gotoxy_s(int x,int y,string text)
- {
- COORD CursorPos;
- CursorPos.X=x;CursorPos.Y=y;
- SetConsoleCursorPosition(hOut,CursorPos);
- cout<<text;
- }
- void gotoxy(short x,short y)
- {
- COORD CursorPos;
- CursorPos.X=x;CursorPos.Y=y;
- SetConsoleCursorPosition(hOut,CursorPos);
- }
- void curata()
- {
- gotoxy(0,0);
- for(int j=0;j<19;j++,cout<<" \n",Sleep(80));
- SetConsoleTextAttribute(hOut,7);
- gotoxy(0,0);
- }
- short MainMenu()
- {
- GetConsoleCursorInfo(hOut,&CursorInfo);
- CursorInfo.bVisible=FALSE;
- SetConsoleCursorInfo(hOut,&CursorInfo);
- int len,y,i=0,border,j,cursor=0;
- string MainMenu[]={"In doi","Vs calculator","Instructiuni","Credite","Iesi din joc"};
- short MenuCords[]={3,5,7,9,11};
- string holder=" ";
- string X[]=
- {" "
- ," "
- ," "
- ," "
- ," "
- ," "
- ,"X X"
- ," X X "
- ," X X "
- ," X "
- ," X X "
- ," X X "
- ,"X X"
- ," "
- ," "
- ," "
- ," "
- ," "
- };
- string Zero[]=
- {" "
- ," "
- ," "
- ," "
- ," "
- ," O "
- ," O O "
- ,"O O"
- ,"O O"
- ,"O O"
- ," O O "
- ," O "
- ," "
- ," "
- ," "
- ," "
- ," "
- ," "
- };
- len=17;
- MenuBeg:
- gotoxy(0,0);
- SetConsoleTextAttribute(hOut,FOREGROUND_BLUE|FOREGROUND_GREEN);
- cout<<"######################";for(int border=0;border<20;++border,cout<<'\xcd');cout<<'\xbb'<<endl;
- cout<<"# # \xba"<<endl
- <<"# # \xba"<<endl
- <<"# # \xba"<<endl
- <<"# # \xba"<<endl
- <<"# # \xba"<<endl
- <<"# # \xba"<<endl
- <<"# # \xba"<<endl
- <<"# # \xba"<<endl
- <<"# # \xba"<<endl
- <<"# # \xba"<<endl
- <<"# # \xba"<<endl
- <<"# # \xba"<<endl
- <<"# # \xba"<<endl
- <<"# # \xba"<<endl
- <<"# # \xba"<<endl
- <<"# # \xba"<<endl
- <<"# # \xba"<<endl
- <<"######################";for(int border=0;border<20;++border,cout<<'\xcd');cout<<'\xbc'<<endl;
- while(true){
- i++;
- for (y=0;y<len;y++)
- {
- SetConsoleTextAttribute(hOut,FOREGROUND_GREEN);
- gotoxy_s(2,1+y,X[y]);
- }
- for (y=0;y<len;y++)
- {
- SetConsoleTextAttribute(hOut,FOREGROUND_RED);
- gotoxy_s(13,1+y,Zero[y]);
- }
- holder = X[len];
- for (y=len;y>0;y--)
- {
- X[y]=X[y-1];
- }
- X[0]=holder;
- holder =Zero[0];
- for (y=0;y<len;y++)
- {
- Zero[y]=Zero[y+1];
- }
- Zero[len]=holder;
- for(j=0;j<5;j++)
- {
- gotoxy(24,MenuCords[j]);
- SetConsoleTextAttribute(hOut,FOREGROUND_GREEN|FOREGROUND_INTENSITY);
- cout<<' '<<MainMenu[j];
- if(j==cursor)
- {
- gotoxy(24,MenuCords[j]);
- SetConsoleTextAttribute(hOut,BACKGROUND_BLUE|BACKGROUND_RED|BACKGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_INTENSITY);
- cout<<'>'<<MainMenu[cursor];
- SetConsoleTextAttribute(hOut,FOREGROUND_GREEN|FOREGROUND_INTENSITY);
- }
- }
- Sleep(80);
- if(GetAsyncKeyState(VK_UP)) {if(cursor==0) cursor=4; else --cursor;}
- if(GetAsyncKeyState(VK_DOWN)) {if(cursor==4) cursor=0; else ++cursor;}
- if(_kbhit()) if(getch()=='\r')
- {
- switch (cursor)
- {
- case 0: curata(); return 1; break;
- case 1: curata(); return 2; break;
- case 2: curata();
- SetConsoleTextAttribute(hOut,FOREGROUND_BLUE|FOREGROUND_GREEN);
- cout<<"###########################################"<<endl
- <<"# #"<<endl
- <<"# #"<<endl
- <<"# #"<<endl
- <<"# #"<<endl
- <<"# #"<<endl
- <<"# #"<<endl
- <<"# #"<<endl
- <<"# #"<<endl
- <<"# #"<<endl
- <<"# #"<<endl
- <<"# #"<<endl
- <<"# #"<<endl
- <<"# #"<<endl
- <<"# #"<<endl
- <<"# #"<<endl
- <<"# #"<<endl
- <<"# #"<<endl
- <<"###########################################"<<endl;
- gotoxy(16,3);
- cout<<GOLD<<"Instructiuni";
- gotoxy(5,5);
- cout<<"Tastele 1,2,3,4,5,6,7,8,9 pentru a";
- gotoxy(2,8);
- cout<<"selecta casuta ,ENTER pentru a confirma";
- gotoxy(12,16);
- cout<<"Apasa ENTER pentru a continua";
- while(getch()!='\r'); goto MenuBeg; break;
- case 3: curata();
- SetConsoleTextAttribute(hOut,FOREGROUND_BLUE|FOREGROUND_GREEN);
- cout<<"###########################################"<<endl
- <<"# #"<<endl
- <<"# #"<<endl
- <<"# #"<<endl
- <<"# #"<<endl
- <<"# #"<<endl
- <<"# #"<<endl
- <<"# #"<<endl
- <<"# #"<<endl
- <<"# #"<<endl
- <<"# #"<<endl
- <<"# #"<<endl
- <<"# #"<<endl
- <<"# #"<<endl
- <<"# #"<<endl
- <<"# #"<<endl
- <<"# #"<<endl
- <<"# #"<<endl
- <<"###########################################"<<endl;
- gotoxy(18,3);
- cout<<GOLD<<"Credite";
- gotoxy(7,5);
- cout<<"Programator : Paraschiv Sorin";
- gotoxy(9,8);
- cout<<"Designer : Popa Alexandru";
- gotoxy(5,11);
- cout<<"Inginer animatii : Silaghi Cosmin";
- gotoxy(12,16);
- cout<<"Apasa ENTER pentru a continua";
- while(getch()!='\r'); goto MenuBeg; break;
- case 4: return 3; break;
- }
- }
- if(i==len+1)
- {
- Sleep(100);i=0;
- }
- }
- }
- int main()
- {
- SetConsoleTitle("X si 0");
- modjoc=MainMenu();
- CursorInfo.bVisible=TRUE;
- CursorInfo.dwSize=100;
- SetConsoleCursorInfo(hOut,&CursorInfo);
- curataecran();
- if(modjoc==1)
- {
- cout<<"Nume jucator 1 : ";cin>>nume1;
- cout<<"Nume jucator 2 : ";cin>>nume2;
- }
- if(modjoc==2)
- {
- cout<<"Nume jucator : ";cin>>nume1;
- }
- if(modjoc==3) return 0;
- short numarmiscari=1;int verif;
- char simbol;char dinnou=' ';
- srand(time(0));
- inceput:
- verif=0;
- for(int i=0;i<10;i++) tabla[i]=i+49;
- for(int i=0;i<10;i++) arraycul[i].cul=8;
- while(verif==0)
- {
- curataecran();
- simbol=(numarmiscari%2)?'X':'0';
- deseneaza_tabla();
- if(simbol=='X') cout<<"Este randul lui "<<nume1<<" (X) "<<endl;
- if(simbol=='0') cout<<"Este randul lui "<<nume2<<" (0) "<<endl;
- if(modjoc==1)
- cin>>tasta;
- if(modjoc==2)
- {
- if(simbol=='X')
- cin>>tasta;
- if(simbol=='0')
- {
- Sleep(rand()%400+200);
- AiMove();
- }
- }
- switch(tasta)
- {
- case '1':if(tabla[0]=='1') {tabla[0]=simbol;++numarmiscari;if(simbol=='X') arraycul[0].cul=10;
- if(simbol=='0') arraycul[0].cul=12;} else {cout<<ROSU<<"\nMiscare invalida\n"<<NC;asteapta();}break;
- case '2':if(tabla[1]=='2') {tabla[1]=simbol;++numarmiscari;if(simbol=='X') arraycul[1].cul=10;
- if(simbol=='0') arraycul[1].cul=12;} else {cout<<ROSU<<"\nMiscare invalida\n"<<NC;asteapta();}break;
- case '3':if(tabla[2]=='3') {tabla[2]=simbol;++numarmiscari;if(simbol=='X') arraycul[2].cul=10;
- if(simbol=='0') arraycul[2].cul=12;} else {cout<<ROSU<<"\nMiscare invalida\n"<<NC;asteapta();}break;
- case '4':if(tabla[3]=='4') {tabla[3]=simbol;++numarmiscari;if(simbol=='X') arraycul[3].cul=10;
- if(simbol=='0') arraycul[3].cul=12;} else {cout<<ROSU<<"\nMiscare invalida\n"<<NC;asteapta();}break;
- case '5':if(tabla[4]=='5') {tabla[4]=simbol;++numarmiscari;if(simbol=='X') arraycul[4].cul=10;
- if(simbol=='0') arraycul[4].cul=12;} else {cout<<ROSU<<"\nMiscare invalida\n"<<NC;asteapta();}break;
- case '6':if(tabla[5]=='6') {tabla[5]=simbol;++numarmiscari;if(simbol=='X') arraycul[5].cul=10;
- if(simbol=='0') arraycul[5].cul=12;} else {cout<<ROSU<<"\nMiscare invalida\n"<<NC;asteapta();}break;
- case '7':if(tabla[6]=='7') {tabla[6]=simbol;++numarmiscari;if(simbol=='X') arraycul[6].cul=10;
- if(simbol=='0') arraycul[6].cul=12;} else {cout<<ROSU<<"\nMiscare invalida\n"<<NC;asteapta();}break;
- case '8':if(tabla[7]=='8') {tabla[7]=simbol;++numarmiscari;if(simbol=='X') arraycul[7].cul=10;
- if(simbol=='0') arraycul[7].cul=12;} else {cout<<ROSU<<"\nMiscare invalida\n"<<NC;asteapta();}break;
- case '9':if(tabla[8]=='9') {tabla[8]=simbol;++numarmiscari;if(simbol=='X') arraycul[8].cul=10;
- if(simbol=='0') arraycul[8].cul=12;} else {cout<<ROSU<<"\nMiscare invalida\n"<<NC;asteapta();}break;
- default:cout<<ROSU<<"\nMiscare invalida\n"<<NC;asteapta();
- }
- verif=joculsaterminat();
- if(verif==1)
- {
- curataecran();deseneaza_tabla();
- if(simbol=='X') {cout<<nume1<<" a castigat !\n\n";++scor1;cout<<"Doriti sa jucati din nou <y/n> : ";cin>>dinnou;}
- if(simbol=='0') {cout<<nume2<<" a castigat !\n\n";++scor2;cout<<"Doriti sa jucati din nou <y/n> : ";cin>>dinnou;}
- }
- if(verif==-1)
- {
- curataecran();deseneaza_tabla();
- cout<<VERDE<<"\nEgalitate !\n\n"<<NC;cout<<"Doriti sa jucati din nou <y/n> : ";cin>>dinnou;
- }
- if(dinnou=='y'||dinnou=='Y') {dinnou=0;goto inceput;}
- }
- asteapta();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment