Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // functions.h----------------------------------------------------------------------------------------------------------------------
- #ifndef FUNCTIONS_H_FOR_KWADRAT //Straznik naglowka
- #define FUNCTIONS_H_FOR_KWADRAT
- #define FOREVER while(true) //Definicja innej nazwy dla nieskonczonej petli
- #define until(x) while(!(x)) //Petla until przeciwna do while
- #include <cstdlib> //Biblioteka dla funkcji system() (do obslugi wygladu konsoli)
- //Stale:
- const char BORDER_SIDE=186, BORDER_TOP=205,
- CORNER_TOP_LEFT=201, CORNER_TOP_RIGHT=187,
- CORNER_BOTTOM_LEFT=200, CORNER_BOTTOM_RIGHT=188,
- POSE=1, SPACE=32, COIN=15;
- //Stale te sluza funkcji board(char*) do rysowania mapy
- //Zmienne:
- extern int ruchy, //Wyjasnienie znaczenia tych zmiennych jest w pliku glownym (main.cpp)
- score,
- pos,
- posPoint;
- //Funkcje:
- void board(char*); //Funkcja rysujaca plansze (korzystajaca z cout i endl)
- void ruch (char*); //Funkcja odpowiedzialna za pobranie znaku z klawiatury, sprawdzenie poprawnosci ruchu, oraz wykonanie go
- void setup(void) ; //Funkcja wywolywana przy starcie aplikacji
- void point(char*); //Funkcja sprawdzajaca czy gracz zdobyl punkt
- void reset(char*); //Funkcja resetujaca rozgrywke
- bool check(void) ; //Funkcja sprawdzajaca czy gra sie nie zakonczyla
- #endif //FUNCTIONS_H_FOR_KWADRAT
- // functions.cpp--------------------------------------------------------------------------------------------------------------------
- #include "functions.h" //Plik naglowkowy
- #include <iostream> //Biblioteka dla:
- using std::endl; //1. cout -> pisanie po ekranie
- using std::cout; //2. endl -> przejcie do nowej linii
- #include <conio.h> //Biblioteka dla funkcji getch() (do wygodnego poruszania sie klawiatura)
- #include <ctime> //Biblioteka dla funkcji time() (na potrzeby generatora liczb pseudolosowych)
- //Objasnienie dzialan funkcji w pliku naglowkowym
- //------------BOARD------------
- void board(char *num)
- {
- cout<<CORNER_TOP_LEFT;
- for(int i=0; i<78; i++)cout<<BORDER_TOP;
- cout<<CORNER_TOP_RIGHT;
- for(int i=0; i<22; i++)
- {
- cout<<BORDER_SIDE;
- for(int j=0; j<78; j++)
- {
- cout<<*num;
- num++;
- }
- cout<<BORDER_SIDE;
- }
- cout<<CORNER_BOTTOM_LEFT;
- for(int i=0; i<78; i++)cout<<BORDER_TOP;
- cout<<CORNER_BOTTOM_RIGHT;
- cout<<" Punkty: "<<score<<"\t\t\t\t\t\t\t "<<"Ruchy: "<<ruchy;
- }
- //------------RUCH-------------
- void ruch(char *p)
- {
- char dir;
- do
- {
- dir=getch();
- }
- until(dir=='A' || dir=='a' || dir=='S' || dir=='s' || dir=='D' || dir=='d' || dir=='W' || dir=='w' || dir==' ');
- *p=SPACE;
- if((dir=='A' || dir=='a')) //Ruch w lewo
- {
- if(!(pos%78))
- {
- p+=77;
- pos+=77;
- }
- else
- {
- p--;
- pos--;
- }
- }
- else if((dir=='D' || dir=='d')) //Ruch w prawo
- {
- if(!((pos+1)%78))
- {
- p-=77;
- pos-=77;
- }
- else
- {
- p++;
- pos++;
- }
- }
- else if(dir=='W' || dir=='w') //Ruch w gore
- {
- if(pos>=0 && pos<=77)
- {
- p+=1638;
- pos+=1638;
- }
- else
- {
- p-=78;
- pos-=78;
- }
- }
- else if(dir=='S' || dir=='s') //Ruch w dol
- {
- if(pos>=1638 && pos<=1715)
- {
- p-=1638;
- pos-=1638;
- }
- else
- {
- p+=78;
- pos+=78;
- }
- }
- else if(dir==' ')
- {
- ruchy=1;
- }
- *p=POSE;
- ruchy--;
- }
- //------------POINT------------
- void point(char *p)
- {
- if(pos==posPoint)
- {
- do posPoint=rand()%1716;
- while(posPoint==pos);
- p[posPoint]=COIN;
- ruchy+=15;
- score++;
- }
- }
- //------------MENU-------------
- void setup()
- {
- srand(time(NULL));
- system("title KWADRAT");
- system("color 0F");
- cout<<"Gra \"Kwadrat\""<<endl;
- cout<<"Poruszaj sie kwadratem klawiszami WASD, zdobywaj punkty."<<endl;
- cout<<"Aby wyj† z gry nacinij spacj©."<<endl;
- cout<<"Celem gry jest zdobycie 40 punkt˘w."<<endl;
- cout<<"Moľesz jednak wykona† tylko 400 ruch˘w!"<<endl;
- cout<<"Za zdobycie punktu dostajesz dodatkowo 15 ruch˘w!"<<endl;
- cout<<"Powodzenia!"<<endl<<endl<<endl<<endl;
- cout<<"Nacinij spacj© aby rozpoczĄ†.";
- char key;
- while(key!=' ')key=getch();
- system("cls");
- }
- //------------RESET------------
- void reset(char* p)
- {
- delete [] p;
- ruchy=400;
- score=0;
- pos=895;
- posPoint=0;
- system("cls");
- }
- //------------CHECK------------
- bool check(void)
- {
- char key;
- if(score==40)
- {
- cout<<"Udao Ci si© zdoby† 40 punkt˘w, gratulacje!"<<endl;
- cout<<"Co chcesz teraz zrobi† (podaj numer dziaania):"<<endl;
- cout<<"1. Graj dalej"<<endl;
- cout<<"2. Rozpocznij nowĄ gr©"<<endl;
- cout<<"3. Wyjd† z gry:"<<endl;
- do
- key=getch();
- until(key=='1' || key=='2' || key=='3');
- if(key=='2')return true;
- else if(key=='3')exit(0);
- }
- else if(ruchy==0)
- {
- cout<<"Nie udao Ci si© zdoby† 40 punkt˘w. ";
- cout<<"Tw˘j wynik to "<<score;
- cout<<" punkt˘w."<<endl;
- cout<<"Co chcesz teraz zrobi† (podaj numer dziaania):"<<endl;
- cout<<"1. Rozpocznij nowĄ gr©"<<endl;
- cout<<"2. Wyjd« z gry"<<endl;
- do
- key=getch();
- until(key=='1' || key=='2');
- if(key=='1')return true;
- else if(key=='2')exit(0);
- }
- return false;
- }
- #undef until
- // main.cpp-------------------------------------------------------------------------------------------------------------------------
- /*
- * --------------------------
- * Gra "KWADRAT"
- * (C)Jakub M 2013
- * --------------------------
- */
- #include "functions.h" //Biblioteka z potrzebnymi funkcjami
- int ruchy=400, //Ilosc dostepnych ruchow (400 na start)
- score=0, //Zdobyte punkty (0 na start)
- pos=895, //Aktualna pozycja gracza (895 na start -> srodek mapy)
- posPoint=(rand()%1716); //Aktualna pozycja monety/punktu (liczba psudolosowa na start)
- int main()
- {
- setup();
- char *pole;
- FOREVER //Glowna petla gry
- {
- pole=new char [1716];
- for(int i=0; i<1716; i++)pole[i]=SPACE;
- pole[pos]=POSE;
- pole[posPoint]=COIN;
- FOREVER //Petla wykonywana w czasie rozgrywki
- {
- if(check())break;
- board(pole);
- ruch(&pole[pos]);
- system("cls");
- point(pole);
- }
- reset(pole);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement