Advertisement
Radfler

first game

Jun 8th, 2015
1,049
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.27 KB | None | 0 0
  1. // functions.h----------------------------------------------------------------------------------------------------------------------
  2.  
  3. #ifndef FUNCTIONS_H_FOR_KWADRAT //Straznik naglowka
  4. #define FUNCTIONS_H_FOR_KWADRAT
  5.  
  6. #define FOREVER while(true)   //Definicja innej nazwy dla nieskonczonej petli
  7. #define until(x) while(!(x))  //Petla until przeciwna do while
  8.  
  9. #include <cstdlib>              //Biblioteka dla funkcji system() (do obslugi wygladu konsoli)
  10.  
  11. //Stale:
  12. const char BORDER_SIDE=186, BORDER_TOP=205,
  13.            CORNER_TOP_LEFT=201, CORNER_TOP_RIGHT=187,
  14.            CORNER_BOTTOM_LEFT=200, CORNER_BOTTOM_RIGHT=188,
  15.  
  16.            POSE=1, SPACE=32, COIN=15;
  17.  
  18. //Stale te sluza funkcji board(char*) do rysowania mapy
  19.  
  20. //Zmienne:
  21.  
  22. extern int ruchy,               //Wyjasnienie znaczenia tych zmiennych jest w pliku glownym (main.cpp)
  23.            score,
  24.            pos,
  25.            posPoint;
  26.  
  27. //Funkcje:
  28.  
  29. void board(char*);              //Funkcja rysujaca plansze (korzystajaca z cout i endl)
  30. void ruch (char*);              //Funkcja odpowiedzialna za pobranie znaku z klawiatury, sprawdzenie poprawnosci ruchu, oraz wykonanie go
  31. void setup(void) ;              //Funkcja wywolywana przy starcie aplikacji
  32. void point(char*);              //Funkcja sprawdzajaca czy gracz zdobyl punkt
  33. void reset(char*);              //Funkcja resetujaca rozgrywke
  34. bool check(void) ;              //Funkcja sprawdzajaca czy gra sie nie zakonczyla
  35.  
  36. #endif //FUNCTIONS_H_FOR_KWADRAT
  37.  
  38. // functions.cpp--------------------------------------------------------------------------------------------------------------------
  39.  
  40. #include "functions.h"                           //Plik naglowkowy
  41. #include <iostream>                              //Biblioteka dla:
  42. using std::endl;                                 //1. cout -> pisanie po ekranie
  43. using std::cout;                                 //2. endl -> przejcie do nowej linii
  44. #include <conio.h>                               //Biblioteka dla funkcji getch() (do wygodnego poruszania sie klawiatura)
  45. #include <ctime>                                 //Biblioteka dla funkcji time() (na potrzeby generatora liczb pseudolosowych)
  46.  
  47. //Objasnienie dzialan funkcji w pliku naglowkowym
  48.  
  49. //------------BOARD------------
  50.  
  51. void board(char *num)
  52. {
  53.     cout<<CORNER_TOP_LEFT;
  54.     for(int i=0; i<78; i++)cout<<BORDER_TOP;
  55.     cout<<CORNER_TOP_RIGHT;
  56.  
  57.     for(int i=0; i<22; i++)
  58.     {
  59.         cout<<BORDER_SIDE;
  60.         for(int j=0; j<78; j++)
  61.         {
  62.             cout<<*num;
  63.             num++;
  64.         }
  65.         cout<<BORDER_SIDE;
  66.     }
  67.     cout<<CORNER_BOTTOM_LEFT;
  68.     for(int i=0; i<78; i++)cout<<BORDER_TOP;
  69.     cout<<CORNER_BOTTOM_RIGHT;
  70.     cout<<" Punkty: "<<score<<"\t\t\t\t\t\t\t     "<<"Ruchy: "<<ruchy;
  71. }
  72.  
  73. //------------RUCH-------------
  74.  
  75. void ruch(char *p)
  76. {
  77.     char dir;
  78.     do
  79.     {
  80.         dir=getch();
  81.     }
  82.     until(dir=='A' || dir=='a' || dir=='S' || dir=='s' || dir=='D' || dir=='d' || dir=='W' || dir=='w' || dir==' ');
  83.     *p=SPACE;
  84.     if((dir=='A' || dir=='a'))                   //Ruch w lewo
  85.     {
  86.         if(!(pos%78))
  87.         {
  88.             p+=77;
  89.             pos+=77;
  90.         }
  91.         else
  92.         {
  93.             p--;
  94.             pos--;
  95.         }
  96.  
  97.     }
  98.     else if((dir=='D' || dir=='d'))              //Ruch w prawo
  99.     {
  100.         if(!((pos+1)%78))
  101.         {
  102.             p-=77;
  103.             pos-=77;
  104.         }
  105.         else
  106.         {
  107.             p++;
  108.             pos++;
  109.         }
  110.     }
  111.     else if(dir=='W' || dir=='w')                //Ruch w gore
  112.     {
  113.         if(pos>=0 && pos<=77)
  114.         {
  115.             p+=1638;
  116.             pos+=1638;
  117.         }
  118.         else
  119.         {
  120.             p-=78;
  121.             pos-=78;
  122.         }
  123.     }
  124.     else if(dir=='S' || dir=='s')                //Ruch w dol
  125.     {
  126.         if(pos>=1638 && pos<=1715)
  127.         {
  128.             p-=1638;
  129.             pos-=1638;
  130.         }
  131.         else
  132.         {
  133.             p+=78;
  134.             pos+=78;
  135.         }
  136.     }
  137.     else if(dir==' ')
  138.     {
  139.         ruchy=1;
  140.     }
  141.     *p=POSE;
  142.     ruchy--;
  143. }
  144.  
  145. //------------POINT------------
  146.  
  147. void point(char *p)
  148. {
  149.     if(pos==posPoint)
  150.     {
  151.         do posPoint=rand()%1716;
  152.         while(posPoint==pos);
  153.         p[posPoint]=COIN;
  154.         ruchy+=15;
  155.         score++;
  156.     }
  157. }
  158.  
  159. //------------MENU-------------
  160.  
  161. void setup()
  162. {
  163.     srand(time(NULL));
  164.     system("title KWADRAT");
  165.     system("color 0F");
  166.     cout<<"Gra \"Kwadrat\""<<endl;
  167.     cout<<"Poruszaj sie kwadratem klawiszami WASD, zdobywaj punkty."<<endl;
  168.     cout<<"Aby wyj˜† z gry naci˜nij spacj©."<<endl;
  169.     cout<<"Celem gry jest zdobycie 40 punkt˘w."<<endl;
  170.     cout<<"Moľesz jednak wykona† tylko 400 ruch˘w!"<<endl;
  171.     cout<<"Za zdobycie punktu dostajesz dodatkowo 15 ruch˘w!"<<endl;
  172.     cout<<"Powodzenia!"<<endl<<endl<<endl<<endl;
  173.     cout<<"Naci˜nij spacj© aby rozpoczĄ†.";
  174.     char key;
  175.     while(key!=' ')key=getch();
  176.     system("cls");
  177. }
  178.  
  179. //------------RESET------------
  180.  
  181. void reset(char* p)
  182. {
  183.     delete [] p;
  184.     ruchy=400;
  185.     score=0;
  186.     pos=895;
  187.     posPoint=0;
  188.     system("cls");
  189. }
  190.  
  191. //------------CHECK------------
  192.  
  193. bool check(void)
  194. {
  195.     char key;
  196.  
  197.     if(score==40)
  198.     {
  199.         cout<<"Udaˆo Ci si© zdoby† 40 punkt˘w, gratulacje!"<<endl;
  200.         cout<<"Co chcesz teraz zrobi† (podaj numer dziaˆania):"<<endl;
  201.         cout<<"1. Graj dalej"<<endl;
  202.         cout<<"2. Rozpocznij nowĄ gr©"<<endl;
  203.         cout<<"3. Wyjd†˜ z gry:"<<endl;
  204.         do
  205.             key=getch();
  206.         until(key=='1' || key=='2' || key=='3');
  207.         if(key=='2')return true;
  208.         else if(key=='3')exit(0);
  209.     }
  210.  
  211.     else if(ruchy==0)
  212.     {
  213.         cout<<"Nie udaˆo Ci si© zdoby† 40 punkt˘w. ";
  214.         cout<<"Tw˘j wynik to "<<score;
  215.         cout<<" punkt˘w."<<endl;
  216.         cout<<"Co chcesz teraz zrobi† (podaj numer dziaˆania):"<<endl;
  217.         cout<<"1. Rozpocznij nowĄ gr©"<<endl;
  218.         cout<<"2. Wyjd« z gry"<<endl;
  219.         do
  220.             key=getch();
  221.         until(key=='1' || key=='2');
  222.         if(key=='1')return true;
  223.         else if(key=='2')exit(0);
  224.     }
  225.  
  226.     return false;
  227. }
  228.  
  229. #undef until
  230.  
  231. // main.cpp-------------------------------------------------------------------------------------------------------------------------
  232.  
  233. /*
  234.  *  --------------------------
  235.  *  Gra "KWADRAT"
  236.  *  (C)Jakub M 2013
  237.  *  --------------------------
  238.  */
  239.  
  240. #include "functions.h"              //Biblioteka z potrzebnymi funkcjami
  241.  
  242. int ruchy=400,                      //Ilosc dostepnych ruchow (400 na start)
  243.     score=0,                        //Zdobyte punkty (0 na start)
  244.     pos=895,                        //Aktualna pozycja gracza (895 na start -> srodek mapy)
  245.     posPoint=(rand()%1716);         //Aktualna pozycja monety/punktu (liczba psudolosowa na start)
  246.  
  247. int main()
  248. {
  249.     setup();
  250.     char *pole;
  251.     FOREVER                       //Glowna petla gry
  252.     {
  253.         pole=new char [1716];
  254.         for(int i=0; i<1716; i++)pole[i]=SPACE;
  255.         pole[pos]=POSE;
  256.         pole[posPoint]=COIN;
  257.  
  258.         FOREVER                   //Petla wykonywana w czasie rozgrywki
  259.         {
  260.             if(check())break;
  261.             board(pole);
  262.             ruch(&pole[pos]);
  263.             system("cls");
  264.             point(pole);
  265.         }
  266.  
  267.         reset(pole);
  268.     }
  269. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement