Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdlib>
- using namespace std;
- void check(int **rysowanie, int height, int width,int zetony,bool &wygrana){
- //horizontal
- int wincondition;
- for (int i=1; i<width+1;i++){
- wincondition=1;
- for (int j=1; j<height+1;j++){
- if((rysowanie[i][j]==rysowanie[i][j+1])&&(rysowanie[i][j]!=0)){
- wincondition++;
- if(wincondition==zetony){
- cout<<"1";
- system("pause");
- wygrana=true;
- return;
- }}
- else
- wincondition=1;
- }}
- //vertical
- for (int i=1; i<width+1;i++){
- wincondition=1;
- for (int j=1; j<height+1;j++){
- if(rysowanie[j][i]==rysowanie[j+1][i]&&rysowanie[j][i]!=0){
- wincondition++;
- if(wincondition==zetony){
- cout<<"2";
- system("pause");
- wygrana=true;
- return;
- }}
- else
- wincondition=1;
- }}
- //diagonal up left
- for (int i=1; i<=height;i++){
- wincondition=1;
- for (int j=1; j<=width;j++){
- if (rysowanie[i][j]==rysowanie[i+1][j+1]&&(rysowanie[i][j]!=0)){
- wincondition++;
- if(wincondition==zetony){
- cout<<"3";
- system("pause");
- wygrana=true;
- return;
- }}
- else
- {
- wincondition=1;
- }}}
- //diagonal up right
- for (int i=1; i<=height;i++){
- wincondition=1;
- for (int j=width; j>=1;j--){
- if (rysowanie[i][j]==rysowanie[i+1][j-1]&&(rysowanie[i][j]!=0)){
- wincondition++;
- if(wincondition==zetony){
- cout<<"4";
- system("pause");
- wygrana=true;
- return;
- }}
- else
- {
- wincondition=1;
- }}}
- return;
- }
- void spr(){
- if(cin.fail())
- {
- cin.clear();
- char c;
- cin>>c;
- }
- return;
- }
- void nazwa(){
- cout << "==============="<< endl;
- cout << "MAGICZNE ZETONY"<< endl;
- cout << "==============="<< endl<<endl;
- return;
- }
- void display(int **rysowanie, int height, int width){
- for(int i=0; i<height+2;i++){
- cout << endl;
- for(int j=0; j<width+2;j++){
- if (rysowanie[i][j]==1){cout<<char(88);}
- else if (rysowanie[i][j]==2){cout<<char(79);}
- else if (rysowanie[i][j]==3){cout<<char(201);}
- else if (rysowanie[i][j]==4){cout<<char(187);}
- else if (rysowanie[i][j]==5){cout<<char(200);}
- else if (rysowanie[i][j]==6){cout<<char(188);}
- else if (rysowanie[i][j]==7){cout<<char(205);}
- else if (rysowanie[i][j]==8){cout<<char(186);}
- else if (rysowanie[i][j]==0){cout<<char(NULL);}
- }}
- return;
- }
- int main()
- {
- nazwa();
- bool wygrana=0, powtorka=0;
- int height, width, zetony, kolumna, parametr=0;
- char gracz=char(NULL);
- int ruch=1;
- cout << "podaj szerokosc planszy(od 1 w gore)" << endl;
- while (true){
- cin >> width;
- if(width>0) break;
- else cout <<endl << "podana wartosc nie jest wieksza od zera lub nie jest to liczba: ";
- spr();
- }
- cout << "podaj wysokosc planszy(od 1 w gore)" << endl;
- while (true){
- cin >> height;
- if(height>0) break;
- else cout <<endl << "podana wartosc nie jest wieksza od zera lub nie jest to liczba: ";
- spr();
- }
- cout << "podaj ile znakow w lini aby zakonczyc gre" << endl;
- while (true){
- cin >> zetony;
- if (((zetony<=height) || (zetony<=width))&&(zetony>0)) break;
- else cout <<endl << "podana wartosc jest niemozliwa do uzyskania lub nie jest to liczba: ";
- spr();
- }
- //definicja tablicy dwuwymiarowej dynamicznej
- int **rysowanie=new int *[height+2];
- for (int i=0;i<height+2;i++){
- rysowanie[i]=new int[width+2];
- }
- //int rysowanie[height+2/*wiersz*/][width+2/*kolumna*/];
- for(int i=0;i<height+2;i++)
- for(int j=0;j<width+2;j++){
- rysowanie[i][j]=0;
- if((j==0)||(j==width+1)){rysowanie[i][j]=8;}//pionoowe=8
- if((i==0)||(i==height+1)){rysowanie[i][j]=7;}//poziome =7
- if((i==0)&&(j==0)){rysowanie[i][j]=3;}//lewy g naroznik =3
- if((i==0)&&(j==width+1)){rysowanie[i][j]=4;}//prawy g naroznik=4
- if((i==height+1)&&(j==0)){rysowanie[i][j]=5;}//lewy d naroznik =5
- if((i==height+1)&&(j==width+1)){rysowanie[i][j]=6;}//prawy d naroznik=6
- }
- int poj[width];
- for(int i=0; i<width; i++){poj[i]=0;}
- gracz=char(88);
- //pocz¹tek gry
- while(!wygrana){
- if(powtorka==true)//spawdzanie czy kolumna sie powtórzy³¹
- {
- cout << "kolumna ktora wybrales jest pelna sprobuj jeszcze raz" << endl;
- ruch--;
- powtorka=false;
- system("pause");
- }
- system("cls");
- nazwa();
- cout <<"RUCH NUMER : "<< ruch<<endl;
- //RYSOWANIE
- display(rysowanie, height, width);
- cout<<endl;
- if(zetony==1){
- wygrana=true;
- }
- //KONIEC RYSOWANIA
- //sprawdzanie remisu
- if(ruch>height*width){
- check(rysowanie, height, width, zetony, wygrana);
- gracz=char(NULL);
- break;
- }
- //zmiana gracza
- else if(gracz==char(88)){
- cout << "ruch gracza 1(O)" << endl;
- gracz=char(79);
- }
- else if(gracz==char(79)){
- cout << "ruch gracza 2(X)" << endl;
- gracz=char(88);
- }
- //wybieranie dobrej kolumny
- cout << "wybierz kolumne" << endl;
- while (true){
- cin >> kolumna;
- if((kolumna <=width) && (kolumna> 0)) {
- poj[kolumna-1]++;
- if(gracz==char(88)){
- while((rysowanie[height-parametr][kolumna]==1 || rysowanie[height-parametr][kolumna]==2)&¶metr<height){
- parametr++;
- }
- rysowanie[height-parametr][kolumna]=1;
- }
- else if(gracz==char(79)){
- while(rysowanie[height-parametr][kolumna]==1 || rysowanie[height-parametr][kolumna]==2){
- parametr++;
- }
- rysowanie[height-parametr][kolumna]=2;
- }
- break;
- }
- else cout<< endl<< "wartosc nie jest mozliwa do uzyskania lub nie jest liczba: ";
- spr();
- }
- //sprawdzanie czy nie jest za du¿o liczb w kolumnie
- if (poj[kolumna-1]>height)
- {
- powtorka=true;
- poj[kolumna-1]-=1;
- int i=height-parametr, j=kolumna;
- if((j==0)||(j==width+1)){rysowanie[i][j]=8;}//pionoowe=8
- if((i==0)||(i==height+1)){rysowanie[i][j]=7;}//poziome =7
- i=0, j=0;
- if (gracz==char(88)) {gracz=char(79);}
- else {gracz=char(88);}
- }
- //zapisywanie gracza
- check(rysowanie, height, width, zetony, wygrana);
- parametr=0;
- ruch++;
- }
- system("cls");
- nazwa();
- display(rysowanie, height, width);
- cout << endl<<endl;
- for (int i=0;i<height+2;i++){
- delete [] rysowanie[i];
- }
- delete []rysowanie;
- if (gracz==char(88)){
- cout << "==============================="<<endl;
- cout << "ROZGRYWKE WYGRYWA GRACZ NUMER 2"<<endl;
- cout << "==============================="<<endl;}
- else if (gracz==char(79)){
- cout << "==============================="<<endl;
- cout << "ROZGRYWKE WYGRYWA GRACZ NUMER 1"<<endl;
- cout << "==============================="<<endl;}
- else if (gracz==char(NULL)){
- cout << "====="<<endl;
- cout << "REMIS"<<endl;
- cout << "====="<<endl;
- }
- cout << "w ruchu numer : " << ruch-1<<endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement