Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <conio.h>
- using namespace std;
- bool gameOver;
- const int widht = 20, height = 20;
- int x, y, fruitX, fruitY, score;
- int tailX[100];
- int tailY[100];
- int nTail;
- enum eDirection { stop = 0, LEFT, RIGHT, DOWN, UP };
- eDirection dir;
- void setup() {
- gameOver = false;
- dir = stop;
- x = widht / 2 - 1;
- y = height / 2 - 1;
- fruitX = rand() % widht;
- fruitY = rand() % height;
- score = 0;
- }
- void draw() {
- system("cls");
- for (int i = 0; i < widht+1; i++) {
- cout << "#";
- }
- cout << '\n';
- for (int i = 0; i < widht; i++) {
- for (int j = 0; j < height; j++) {
- if (j == 0 || j == height - 1) {
- cout << "#";
- }
- if (i == y && j == x) {
- cout << "S";
- }
- else if (i == fruitY && j == fruitX) {
- cout << "0";
- }
- else {
- bool print = false;
- for (int k = 0; k < nTail; k++) {
- if (tailX[k] == j && tailY[k] == i) {
- print = true;
- cout << "s";
- }
- }
- if (print == false) {
- cout << " ";
- }
- }
- }
- cout << '\n';
- }
- for (int i = 0; i < widht+1; i++) {
- cout << "#";
- }
- cout << '\n';
- cout << "Ваш счет равен = " << score;
- }
- void input() {
- if (_kbhit() == true) {
- switch (_getch())
- {
- case 'a':
- dir = LEFT;
- break;
- case 'w':
- dir = UP;
- break;
- case 'd':
- dir = RIGHT;
- break;
- case 's':
- dir = DOWN;
- break;
- case 'g':
- gameOver = true;
- break;
- }
- }
- }
- void logic() {
- int prevX = tailX[0];
- int prevY = tailY[0];
- int prev2X, prev2Y;
- tailX[0] = x;
- tailY[0] = y;
- for (int i = 1; i < nTail; i++) {
- prev2X = tailX[i];
- prev2Y = tailY[i];
- tailX[i] = prevX;
- tailY[i] = prevY;
- prevX = prev2X;
- prevY = prev2Y;
- }
- switch (dir)
- {
- case LEFT:
- x--;
- break;
- case RIGHT:
- x++;
- break;
- case DOWN:
- y++;
- break;
- case UP:
- y--;
- break;
- }
- /*if (x > widht-2 || x < 0 || y > height-2 || y < 0) {
- gameOver = true;
- }*/
- if (x >= widht - 1) {
- x = 0;
- }
- else if (x < 0) {
- x = widht - 2;
- }
- if (y >= height) {
- y = 0;
- }
- else if (y < 0) {
- y = height-1;
- }
- for (int i = 0; i < nTail; i++) {
- if (tailX[i] == x && tailY[i] == y) {
- gameOver = true;
- }
- }
- if (x == fruitX && y == fruitY) {
- score+=10;
- fruitX = rand() % widht - 1;
- fruitY = rand() % height;
- nTail++;
- }
- }
- int main() {
- setlocale(LC_ALL, "Rus");
- setup();
- while (gameOver == false) {
- draw();
- input();
- logic();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment