Поиск
 
 

Результаты :
 


Rechercher Расширенный поиск

Кто сейчас на форуме
Сейчас посетителей на форуме: 1, из них зарегистрированных: 0, скрытых: 0 и гостей: 1

Нет

[ Посмотреть весь список ]


Больше всего посетителей (9) здесь было Вс Фев 11, 2018 12:54 pm
Самые активные пользователи за неделю
Ярослав
 


Игра «Роботы» (тема: массивы)

Перейти вниз

Игра «Роботы» (тема: массивы)

Сообщение автор Ярослав в Вс Мар 19, 2017 4:41 pm

Код:
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <conio.h>

using namespace std;

int main () {
   const int WIDTH = 20;
   const int HEIGHT = 10;
   const int ROBOTS = 5;

   int playerX = rand () % WIDTH, playerY = rand () % HEIGHT; // позиция игрока
   int portalX = rand () % WIDTH, portalY = rand () % HEIGHT; // позиция портала
   int robotX[ROBOTS], robotY[ROBOTS]; // позиции роботов
   int teleports = 2; // количество оставшихся телепортов
   int freezes = 1; // количество оставшихся остановок времени
   int timeStop = 0; // если больше нуля, показывает, сколько ходов ещё длится остановка времени

   srand (unsigned (time (0)));

   // расставляем роботов
   for (int i = 0; i < ROBOTS; i++) {
      robotX[i] = rand () % WIDTH;
      robotY[i] = rand () % HEIGHT;
   }

   while (true) { // повторяем игру бесконечно
      // риусем поле
      system ("cls");
      for (int y = 0; y < HEIGHT; y++) {
         for (int x = 0; x < WIDTH; x++)
            if (playerX == x && playerY == y)
               cout << 'P';
            else if (portalX == x && portalY == y)
               cout << '0';
            else {
               // тут есть робот?
               bool robotHere = false;
               for (int i = 0; i < ROBOTS; i++)
                  if (robotX[i] == x && robotY[i] == y) {
                     robotHere = true;
                     break;
                  }
               if (robotHere)
                  cout << 'r';
               else
                  cout << '.';
            }
         cout << endl;
      }
      cout << "Teleports (T): " << teleports << endl;
      cout << "Time Freezes (F): " << freezes << endl;
      if (timeStop > 0)
         cout << "TIME STOPPED" << endl;
      // ход игрока
      char key = _getch ();
      switch (key) {
      case 'w':
         playerY--;
         break;
      case 'a':
         playerX--;
         break;
      case 's':
         playerY++;
         break;
      case 'd':
         playerX++;
         break;
      case 't':
         if (teleports > 0) {
            playerX = rand () % WIDTH;
            playerY = rand () % HEIGHT;
            teleports--;
         }
         break;
      case 'f':
         if (freezes > 0) {
            timeStop = 3; // роботы 3 хода не ходят
            freezes--;
         }
         break;
      }
      if (playerX == portalX && playerY == portalY) {
         cout << "You escaped from robots!" << endl;
         return 0;
      }
      // ход роботов
      if (timeStop > 0) { // если время остановлено, роботы не ходят
         timeStop--;
         continue;
      }
      for (int i = 0; i < ROBOTS; i++) {
         // идти в сторону игрока
         if (playerX < robotX[i])
            robotX[i]--;
         else if (playerX > robotX[i])
            robotX[i]++;
         if (playerY < robotY[i])
            robotY[i]--;
         else if (playerY > robotY[i])
            robotY[i]++;
         // наступил на игрока?
         if (playerX == robotX[i] && playerY == robotY[i]) {
            cout << "Robot turns you into a robot!" << endl;
            return 0;
         }
      }
   }
}
avatar
Ярослав
Admin

Posts : 500
Join date : 2016-12-21
Location : Москва

Посмотреть профиль http://itstep.forum2x2.ru

Вернуться к началу Перейти вниз

Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения