daily pastebin goal
57%
SHARE
TWEET

Untitled

a guest Jan 22nd, 2012 41 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include "SnakeGame.h"
  2. #include "Colors.h"
  3. #include <iostream>
  4. using namespace std;
  5.  
  6. char Map[20][60] = {"###########################################################",
  7.                     "#                                                         #",
  8.                     "#                                                         #",
  9.                     "#                                                         #",
  10.                     "#                                                         #",
  11.                     "#                                                         #",
  12.                     "#                                                         #",
  13.                     "#                                                         #",
  14.                     "#                                                         #",
  15.                     "#                                                         #",
  16.                     "#                                                         #",
  17.                     "#                                                         #",
  18.                     "#                                                         #",
  19.                     "#                                                         #",
  20.                     "#                                                         #",
  21.                     "#                                                         #",
  22.                     "#                                                         #",
  23.                     "#                                                         #",
  24.                     "#                                                         #",
  25.                     "###########################################################"};
  26.  
  27. //Colors color;
  28. SnakeGame::SnakeGame(int StartX,int StartY,int Length,char SnakeChar, char FruitChar, char WallChar,
  29.                                          int UpKey, int DownKey, int RightKey, int LeftKey)
  30. {
  31.         Wallc = WallChar;
  32.         Fruitc = FruitChar;
  33.     PChar = SnakeChar;
  34.  
  35.     Lkey = LeftKey;
  36.     Rkey = RightKey;
  37.     Ukey = UpKey;
  38.     Dkey = DownKey;
  39.  
  40.     Head_x = StartX;
  41.     Head_y = StartY;
  42.  
  43.         Dir = RIGHT;
  44.        
  45.         if(Head_x > Length) // sprawdza zeby snake na starcie nie wchodzil w sciane
  46.         {
  47.                 for(int i=0; i<Length; i++)
  48.                 {
  49.                         Lx.push_back(Head_x-i);
  50.                         Ly.push_back(Head_y);
  51.                 }
  52.         }else
  53.         {
  54.                 cout << "Pozycja X weza jest mniejsza niż jego dlugosc, popraw";
  55.                 ExitProcess(0);
  56.         }
  57.                
  58. }
  59.  
  60.  
  61. void SnakeGame::DrawMap()
  62. {
  63.         //color.green();
  64.     for(unsigned short rows=0; rows < 20 ; rows++)
  65.                 cout << Map[rows] << "\n";
  66.         //color.white();
  67.     return ;
  68. }
  69. void SnakeGame::SnakeGrow(int n)
  70. {
  71.         for(int i=0;i<n;i++)
  72.         {
  73.                 Lx.push_front(Lx.front());
  74.                 Ly.push_front(Ly.front());
  75.         }
  76. }
  77. void SnakeGame::DropRandFruit()
  78. {
  79.         srand(GetTickCount());
  80.     unsigned short Fruitx = rand() % 57 +1;
  81.     unsigned short Fruity = rand() % 18 +1;
  82.         //color.red();
  83.     if(Map[Fruity][Fruitx] == PChar) //Patrzy czy owoc nie jest umieszczany na wezu
  84.         {
  85.                 //color.red();
  86.                 DropRandFruit();
  87.                 //color.white();
  88.         }
  89.     else
  90.         {
  91.                 //color.red();
  92.                 Map[Fruity][Fruitx] = Fruitc;
  93.                 //color.white();
  94.         }
  95.         //color.white();
  96. }
  97. bool SnakeGame::DropFruitXY(int x,int y)
  98. {
  99.         //color.red();
  100.         if(Map[y][x] == PChar) // Patrzy czy owoc nie jest umieszczany na wezu
  101.     {
  102.                 DropRandFruit();
  103.                 return 0;
  104.         }
  105.     else
  106.         {
  107.        Map[y][x] = Fruitc;
  108.            return 1;
  109.         }
  110.         //color.white();
  111. }
  112. void SnakeGame::HandleKeys()
  113. {
  114.  
  115.     if(GetAsyncKeyState(Rkey) != 0)
  116.         {
  117.             if(Dir != LEFT)
  118.             Dir = RIGHT;
  119.         }
  120.         else if(GetAsyncKeyState(Ukey) != 0)
  121.         {
  122.             if(Dir != DOWN)
  123.             Dir = UP;
  124.         }
  125.         else if(GetAsyncKeyState(Dkey) != 0)
  126.         {
  127.             if(Dir != UP)
  128.             Dir = DOWN;
  129.         }
  130.         else if(GetAsyncKeyState(Lkey) != 0)
  131.         {
  132.             if(Dir != RIGHT)
  133.             Dir = LEFT;
  134.         }
  135.     return;
  136. }
  137. int SnakeGame::SnakeMove()
  138. {
  139.         int ret = 1;
  140.         if(Dir == RIGHT){
  141.         if(Map[Head_y][Head_x+1] == Wallc || Map[Head_y][Head_x+1] == PChar) //Kolizja
  142.             ret = 0;
  143.         else
  144.         {
  145.             if(Map[Head_y][Head_x+1] == Fruitc) // Owoc
  146.             {
  147.                 Map[Head_y][Head_x+1] = PChar;
  148.                                 SnakeGrow(1);
  149.                 ret = 2;
  150.             }
  151.             Head_x++;
  152.         }
  153.  
  154.     }else if(Dir == LEFT){
  155.         if(Map[Head_y][Head_x-1] == Wallc || Map[Head_y][Head_x-1] == PChar)
  156.             ret = 0;
  157.                 else
  158.         {
  159.             if(Map[Head_y][Head_x-1] == Fruitc)
  160.             {
  161.                 Map[Head_y][Head_x-1] = PChar;
  162.                                 SnakeGrow(1);
  163.                 ret = 2;
  164.             }
  165.             Head_x--;
  166.         }
  167.  
  168.     }else if(Dir == DOWN){
  169.         if(Map[Head_y+1][Head_x] == Wallc || Map[Head_y+1][Head_x] == PChar)
  170.             ret = 0;
  171.         else
  172.         {
  173.             if(Map[Head_y+1][Head_x] == Fruitc)
  174.             {
  175.                 Map[Head_y+1][Head_x] = PChar;
  176.                                 SnakeGrow(1);
  177.                 ret = 2;
  178.             }
  179.             Head_y++;
  180.         }
  181.  
  182.     }
  183.     else if(Dir == UP){
  184.         if(Map[Head_y-1][Head_x] == Wallc || Map[Head_y-1][Head_x] == PChar)
  185.             ret = 0;
  186.         else
  187.         {
  188.             if(Map[Head_y-1][Head_x] == Fruitc)
  189.             {
  190.                                 Map[Head_y-1][Head_x] = PChar;
  191.                                 SnakeGrow(1);
  192.                 ret = 2;
  193.             }
  194.             Head_y--;
  195.         }
  196.     }
  197.  
  198.     if(ret != 0)
  199.     {
  200.         Ly.push_back(Head_y);
  201.         Lx.push_back(Head_x);
  202.  
  203.         Map[Ly.back()][Lx.back()] = PChar;
  204.         Map[Ly.front()][Lx.front()] = ' ';
  205.  
  206.         Ly.pop_front();
  207.         Lx.pop_front();
  208.     }
  209.  
  210.     return ret;
  211. }
RAW Paste Data
Pastebin PRO WINTER Special!
Get 40% OFF Pastebin PRO accounts!
Top