Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //-------------------------------------------------------------------------------------------------
- //file:Solitaire.cpp
- //-------------------------------------------------------------------------------------------------
- #include <iostream>
- #include <conio.h>
- #include "ConsoleColor.cpp"
- using namespace std;
- void rysuj(int tab[7][7])
- {
- color(1);
- cout<<"\n 1 2 3 4 5 6 7\n";
- for(int i=0;i<7;i++)
- {
- color(1);
- color(0);
- cout<<" ";
- for(int j=0;j<15;j++)
- if(i)
- cout<<"-";
- cout<<endl<<i+1<<" ";
- for(int j=0;j<7;j++)
- {
- color(0);
- if(j)
- cout<<"|";
- else
- cout<<" ";
- color(1);
- if(tab[i][j]==1)
- cout<<"X";
- else if (!tab[i][j])
- cout<<" ";
- else
- {
- color(0);
- cout<<"*";
- }
- }
- cout<<endl;
- }
- cout<<endl;
- }
- int ruch()
- {
- int x;
- int y;
- cout<<"Podaj wspolrzedne";
- color(1);
- cout<<" [x]";
- color(0);
- cout<<" [y] --> ";
- color(1);
- cout<<"[x] ";
- color(0);
- cout<<"[y]: ";
- color(1);
- cout<<char ( y=getch() );
- if(y==27) return -1;
- x=int (y-'0')*1000;
- cout<<" "<<char ( y=getch() );
- if(y==27) return -1;
- x+=int (y-'0')*100;
- cout<<" --> ";
- cout<<char ( y=getch() );
- if(y==27) return -1;
- x+=int (y-'0')*10;
- cout<<" "<<char ( y=getch() )<<endl;
- if(y==27) return -1;
- x+=int (y-'0');
- return x;
- }
- bool zmien(int x, int tab[7][7])
- {
- int b=x/1000-1, a=(x/100)%10-1, d=(x/10)%10-1, c=x%10-1;
- if(a>6 || b>6 || c>6 || d>6) return false;
- if(tab[c][d] || tab[a][b]<=0) return false;
- if(a==c && abs(b-d)==2)
- {
- if(tab[a][(b+d)/2]==0) return false;
- tab[a][(b+d)/2]=0;
- tab[a][b]=0;
- tab[c][d]=1;
- return true;
- }
- else if(b==d && abs(a-c)==2)
- {
- if(tab[(a+c)/2][b]==0) return false;
- tab[(a+c)/2][b]=0;
- tab[a][b]=0;
- tab[c][d]=1;
- return true;
- }
- else return false;
- }
- bool sprawdz(int tab[7][7])
- {
- int x;
- for(int i=0;i<7;i++)
- for(int j=0;j<7;j++)
- if(tab[i][j]==1) x++;
- return (x>1 ? false:true);
- }
- void start(int tab[7][7])
- {
- color(2);
- cout<<"Gra Solitaire. Zasady:\n";
- color(1);
- cout<<"X";
- color(2);
- cout<<" - symbolizuje pionek. Gra polega na tym, zeby zbic inne pionki przestawiajac \njeden pionek nad drugim na wolne pole. "
- <<"Pionek, nad ktorym zostal wykonany ruch \nzostaje usuniety z planszy. Mozna przeskoczyc tylko nad jednym pionkiem. "
- <<"Celem \ngry jest doprowadzenie do tego, aby na planszy pozostal tylko jeden pionek.\nPoczatkowo wszystkie pola z wyjatkiem srodkowego sa zajete.\n"
- <<"By jaggi --> ";
- color(4);
- color(2);
- cout<<".\nNacisnij ";
- color(5);
- cout<<"ESC ";
- color(2);
- cout<<"aby zakonczyc gre. \nEnjoy :) \n";
- tab[0][0]=-1;
- tab[0][1]=-1;
- tab[0][5]=-1;
- tab[0][6]=-1;
- tab[1][0]=-1;
- tab[1][1]=-1;
- tab[1][5]=-1;
- tab[1][6]=-1;
- tab[5][0]=-1;
- tab[5][1]=-1;
- tab[5][5]=-1;
- tab[5][6]=-1;
- tab[6][0]=-1;
- tab[6][1]=-1;
- tab[6][5]=-1;
- tab[6][6]=-1;
- tab[3][3]=0;
- }
- int main()
- {
- int x;
- int tab[7][7];
- for(int i=0;i<7;i++)
- for(int j=0;j<7;j++)
- tab[i][j]=1;
- start(tab);
- do
- {
- rysuj(tab);
- do
- {
- x=ruch();
- if(x==-1) break;
- }while( !zmien(x, tab) );
- if(x==-1) break;
- }while(!sprawdz(tab));
- if(x!=-1)
- cout<<"Gratulacje, wygrales!";
- cout<<"\nNacisnij dowolny przycisk, aby zakonczyc dzialanie programu.";
- getch();
- return 0;
- }
- //-------------------------------------------------------------------------------------------------
- //file:ConsoleColor.cpp
- //-------------------------------------------------------------------------------------------------
- #include <windows.h>
- #define USTAW SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
- #define _X_ BACKGROUND_BLUE | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_INTENSITY );
- #define CZE FOREGROUND_RED |
- #define NIE FOREGROUND_BLUE |
- #define ZIE FOREGROUND_GREEN |
- #define INTENS FOREGROUND_INTENSITY);
- void color(short color)
- {
- switch(color)
- {
- case 0: USTAW CZE NIE ZIE INTENS break;
- case 1: USTAW CZE INTENS break;
- case 2: USTAW ZIE INTENS break;
- case 3: USTAW NIE INTENS break;
- case 4: USTAW NIE ZIE INTENS break;
- case 5: USTAW CZE NIE INTENS break;
- case 6: USTAW CZE NIE FOREGROUND_GREEN); break;
- default: USTAW color | INTENS
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment