Advertisement
Guest User

waz

a guest
Feb 13th, 2016
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.05 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <windows.h>
  4. #include <conio.h>
  5. #include <time.h>
  6.  
  7. #include "Snake.h"
  8.  
  9. #define N 20
  10. long long int licz = 1;
  11.  
  12. using namespace std;
  13.  
  14. Point randStart()
  15. {
  16.     Point p;
  17.     p.x = 2 + rand() % (N - 4);
  18.     p.y = 2 + rand() % (N - 4);
  19.     p.sign = 'O';
  20.  
  21.     return p;
  22. }
  23.  
  24. void fillTab(char A[N][N])
  25. {
  26.     for (int i = 0; i < N; i++)
  27.     for (int j = 0; j < N; j++)
  28.     {
  29.         if (j == 0 || j == N - 1)
  30.             A[i][j] = '*';
  31.         else if (i == 0 || i == N - 1)
  32.             A[i][j] = '*';
  33.         else
  34.             A[i][j] = ' ';
  35.     }
  36. }
  37.  
  38. void printTab(char A[N][N])
  39. {
  40.     for (int i = 0; i < N; i++)
  41.     {
  42.         for (int j = 0; j < N; j++)
  43.             cout << A[i][j];
  44.  
  45.         cout << '\n';
  46.     }
  47. }
  48.  
  49. void printSnake(Snake s, Point jedzenie)
  50. {
  51.     for (int k = 0; k < s.length; k++)
  52.     {
  53.         for (int i = 0; i < N; i++)
  54.         {
  55.             for (int j = 0; j < N; j++)
  56.             {
  57.                 if (s.pointTab[k].x==j && s.pointTab[k].y == i)
  58.                     cout << s.pointTab[k].sign;
  59.                 else
  60.                     cout << ' ';
  61.             }
  62.             cout << endl;
  63.         }
  64.     }
  65.  
  66.     for (int i = 0; i < N; i++)
  67.     {
  68.         for (int j = 0; j < N; j++)
  69.         {
  70.             if (jedzenie.x == j && jedzenie.y == i)
  71.                 cout << jedzenie.sign;
  72.             else
  73.                 cout << ' ';
  74.         }
  75.         cout << endl;
  76.     }
  77. }
  78.  
  79. int main()
  80. {
  81.     char A[N][N];  
  82.     fillTab(A);
  83.  
  84.     Snake waz(randStart());
  85.  
  86.     printTab(A);
  87.    
  88.  
  89.     while (1)
  90.     {
  91.         srand(time(NULL));
  92.         Point p = randStart();
  93.         p.x = 5; p.y = 5; p.sign = 'l';
  94.         char d;
  95.         Sleep(1000);
  96.         waz.move();
  97.  
  98.         if(_kbhit())
  99.             d = _getch();
  100.  
  101.         waz.reactForKey(d);
  102.         printTab(A);
  103.         printSnake(waz, p);
  104.  
  105.         if (waz.checkIfFood(p))
  106.             waz.eat(p);
  107.     }
  108.  
  109.     //  system("cls");
  110.  
  111.    
  112.     getchar();
  113. }
  114.  
  115.  
  116.  
  117.  
  118. #pragma once
  119.  
  120. class Point
  121. {
  122.     public:
  123.         int x;
  124.         int y;
  125.         char sign;
  126.  
  127.         bool Point::operator==(Point p)
  128.         {
  129.             return (this->x == p.x && this->y == p.y);
  130.         }
  131. };
  132.  
  133.  
  134.  
  135.  
  136.  
  137. #pragma once
  138. #include "Point.h"
  139. #include <iostream>
  140. #define M 40
  141.  
  142. using namespace std;
  143.  
  144. enum direction {west, east, north, south};
  145.  
  146. class Snake
  147. {
  148. public:
  149.     int length;
  150.     direction dir;
  151.     Point pointTab[M];
  152.     bool isAlive;
  153.  
  154.     Snake(Point);
  155.  
  156.     void move();
  157.     void spierdalaj();
  158.     void reactForKey(char);
  159.     bool checkIfFood(Point);
  160.     void eat(Point);
  161. };
  162.  
  163.  
  164.  
  165. Snake::Snake(Point p)
  166. {
  167.     length = 1;
  168.     dir = west;
  169.     pointTab[0] = p;
  170. }
  171.  
  172. bool Snake::checkIfFood(Point p)
  173. {
  174.     return (this->pointTab[0] == p);
  175. }
  176.  
  177. void Snake::move()
  178. {
  179.  
  180.     for (int i = 0; i < length-1; i++)
  181.     {
  182.         pointTab[i + 1] = pointTab[i];
  183.     }
  184.  
  185.     switch (dir)
  186.     {
  187.     case west:
  188.         pointTab[0].x--;
  189.         break;
  190.  
  191.     case east:
  192.         pointTab[0].x++;
  193.         break;
  194.  
  195.     case south:
  196.         pointTab[0].y++;
  197.         break;
  198.  
  199.     case north:
  200.         pointTab[0].y--;
  201.         break;
  202.     }
  203. }
  204.  
  205. void Snake::reactForKey(char c)
  206. {
  207.     switch (c)
  208.     {
  209.     case 'w':
  210.         dir = north;
  211.         break;
  212.  
  213.     case 's':
  214.         dir = south;
  215.         break;
  216.  
  217.     case 'a':
  218.         dir = west;
  219.         break;
  220.  
  221.     case 'd':
  222.         dir = east;
  223.         break;
  224.  
  225.     default:
  226.             break;
  227.     }
  228. }
  229.  
  230. void Snake::eat(Point p)
  231. {
  232.     for (int i = 0; i < length; i++)
  233.     {
  234.         pointTab[i + 1] = pointTab[i];
  235.     }
  236.  
  237.     pointTab[0] = p;
  238.     length++;
  239. }
  240.  
  241. void Snake::spierdalaj()
  242. {
  243.     cout << "wypierdalaj za brame"<<endl;
  244. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement