Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdlib.h>
- #include <windows.h>
- #include <conio.h>
- #include <time.h>
- #include "Snake.h"
- #define N 20
- long long int licz = 1;
- using namespace std;
- Point randStart()
- {
- Point p;
- p.x = 2 + rand() % (N - 4);
- p.y = 2 + rand() % (N - 4);
- p.sign = 'O';
- return p;
- }
- void fillTab(char A[N][N])
- {
- for (int i = 0; i < N; i++)
- for (int j = 0; j < N; j++)
- {
- if (j == 0 || j == N - 1)
- A[i][j] = '*';
- else if (i == 0 || i == N - 1)
- A[i][j] = '*';
- else
- A[i][j] = ' ';
- }
- }
- void printTab(char A[N][N])
- {
- for (int i = 0; i < N; i++)
- {
- for (int j = 0; j < N; j++)
- cout << A[i][j];
- cout << '\n';
- }
- }
- void printSnake(Snake s, Point jedzenie)
- {
- for (int k = 0; k < s.length; k++)
- {
- for (int i = 0; i < N; i++)
- {
- for (int j = 0; j < N; j++)
- {
- if (s.pointTab[k].x==j && s.pointTab[k].y == i)
- cout << s.pointTab[k].sign;
- else
- cout << ' ';
- }
- cout << endl;
- }
- }
- for (int i = 0; i < N; i++)
- {
- for (int j = 0; j < N; j++)
- {
- if (jedzenie.x == j && jedzenie.y == i)
- cout << jedzenie.sign;
- else
- cout << ' ';
- }
- cout << endl;
- }
- }
- int main()
- {
- char A[N][N];
- fillTab(A);
- Snake waz(randStart());
- printTab(A);
- while (1)
- {
- srand(time(NULL));
- Point p = randStart();
- p.x = 5; p.y = 5; p.sign = 'l';
- char d;
- Sleep(1000);
- waz.move();
- if(_kbhit())
- d = _getch();
- waz.reactForKey(d);
- printTab(A);
- printSnake(waz, p);
- if (waz.checkIfFood(p))
- waz.eat(p);
- }
- // system("cls");
- getchar();
- }
- #pragma once
- class Point
- {
- public:
- int x;
- int y;
- char sign;
- bool Point::operator==(Point p)
- {
- return (this->x == p.x && this->y == p.y);
- }
- };
- #pragma once
- #include "Point.h"
- #include <iostream>
- #define M 40
- using namespace std;
- enum direction {west, east, north, south};
- class Snake
- {
- public:
- int length;
- direction dir;
- Point pointTab[M];
- bool isAlive;
- Snake(Point);
- void move();
- void spierdalaj();
- void reactForKey(char);
- bool checkIfFood(Point);
- void eat(Point);
- };
- Snake::Snake(Point p)
- {
- length = 1;
- dir = west;
- pointTab[0] = p;
- }
- bool Snake::checkIfFood(Point p)
- {
- return (this->pointTab[0] == p);
- }
- void Snake::move()
- {
- for (int i = 0; i < length-1; i++)
- {
- pointTab[i + 1] = pointTab[i];
- }
- switch (dir)
- {
- case west:
- pointTab[0].x--;
- break;
- case east:
- pointTab[0].x++;
- break;
- case south:
- pointTab[0].y++;
- break;
- case north:
- pointTab[0].y--;
- break;
- }
- }
- void Snake::reactForKey(char c)
- {
- switch (c)
- {
- case 'w':
- dir = north;
- break;
- case 's':
- dir = south;
- break;
- case 'a':
- dir = west;
- break;
- case 'd':
- dir = east;
- break;
- default:
- break;
- }
- }
- void Snake::eat(Point p)
- {
- for (int i = 0; i < length; i++)
- {
- pointTab[i + 1] = pointTab[i];
- }
- pointTab[0] = p;
- length++;
- }
- void Snake::spierdalaj()
- {
- cout << "wypierdalaj za brame"<<endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement