Есть ответ 👍

Самостоятельная работа по разделу основы логики.

101
291
Посмотреть ответы 1

Ответы на вопрос:


#include<iostream>

#include<cstdlib>

#include<ctime>

#include<conio.h>

using std::cout;

using std::cin;

using std::endl;

bool gameOver;

const int width = 25;

const int height = 25;

int x, y, fruitX, fruitY, score;

int tailX[100], tailY[100];

int nTail;

enum eDirection { STOP = 0, LEFT, RIGHT, UP, DOWN };

eDirection dir;

void Setup() {

gameOver = false;

dir = STOP;

x = width / 2 - 1;

y = height / 2 - 1;

fruitX = rand() % width;

fruitY = rand() % height;

score = 0;

};

void Draw() {

cout << "w = UP" << endl;

cout << "s = DOVN" << endl;

cout << "d = RIGHT" << endl;

cout << "a = LEFT" << endl;

system("cls");//system("clear");

for (int i = 0;i < width + 1;i++) {

 cout << "##";

};

for (int i = 0;i < height;i++) {

 for (int j = 0;j < width;j++) {

  if (j == 0 || j == width - 1) {

   cout << "##";

  };

  if (i == y && j == x) {

   cout << "0";

  }

  else if (i == fruitY && j == fruitX) {

   cout << "F";

  }

  else {

   bool print = false;

   for (int k = 0;k < nTail;k++) {

    if (tailX[k] == j && tailY[k] == i) {

     print = true;

     cout << "o";

    }

   }

   if (!print) {

    cout << " ";

   }

  };

  cout << " ";

 };

 cout << endl;

};

cout << endl;

for (int i = 0;i < width;i++) {

 cout << "#";

};

cout << endl;

cout << "Score: " << score << endl;

};

void Input() {

if (_kbhit()) {

 switch (_getch()) {

 case'a': {

  dir = LEFT;

 }

     break;

 case'd': {

  dir = RIGHT;

 }

     break;

 case'w': {

  dir = UP;

 }

     break;

 case's': {

  dir = DOWN;

 }

     break;

 case'x': {

  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 UP:

 y--;

 break;

case DOWN:

 y++;

 break;

}

/*

if (x > width || x < 0 || y>height || y < 0) {

 gameOver = true;

};*/

if (x >= width - 1) {

 x = 0;

}

else if (x < 0) {

 x = width - 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() % width;

 fruitY = rand() % height;

 nTail++;

}

}

int main() {

srand(time(0));

Setup();

while (!gameOver) {

 Draw();

 Input();

 Logic();

}

return 0;

}

Объяснение:

эта игра работает только в кампиляторе Visual studio или qt creater

Реши свою проблему, спроси otvet5GPT

  • Быстро
    Мгновенный ответ на твой вопрос
  • Точно
    Бот обладает знаниями во всех сферах
  • Бесплатно
    Задай вопрос и получи ответ бесплатно

Популярно: Информатика

Caktus Image

Есть вопросы?

  • Как otvet5GPT работает?

    otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса.
  • Сколько это стоит?

    Проект находиться на стадии тестирования и все услуги бесплатны.
  • Могу ли я использовать otvet5GPT в школе?

    Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое!
  • В чем отличия от ChatGPT?

    otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.

Подпишись на наш телеграмм канал

GTP TOP NEWS