Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // GameCheerfulCook.cpp: определяет точку входа для консольного приложения.
- //
- #include "stdafx.h"
- #include <iostream> //стандартная библиотека
- #include <time.h> //случайные числа
- #include <stdio.h> //для printf
- #include <windows.h> // для HANDLE, курсора, цвета
- #include <conio.h> //для kbhit
- #include <locale.h>
- using namespace std;
- char a[1000][1000];
- /*
- a[1000][1000] - поле игры
- */
- const int N = 10, M = 22, INTERVAL = 200;
- /*
- константы,
- N - высота
- M - ширина
- INTERVAL - интервал в миллисекундах
- */
- int px, py; // координаты сковороды
- int sx, sy; // координаты сосиски
- int k;
- void gotoxy(int xpos, int ypos)
- {
- COORD scrn;
- HANDLE hOuput = GetStdHandle(STD_OUTPUT_HANDLE);
- scrn.X = xpos;
- scrn.Y = ypos;
- SetConsoleCursorPosition(hOuput, scrn);
- }
- void setColor(int text, int background)
- {
- HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
- SetConsoleTextAttribute(hStdOut, (WORD)((background << 4) | text));
- }
- // вводить setColor (цвет текста, цвет фона);
- class objects
- {
- public:
- void drawField(); //отрисовка поля
- };
- void objects::drawField()
- {
- system("cls");
- for (int i = 0; i <= N + 1; ++i)
- for (int j = 0; j <= M + 1; ++j)
- cout << (i == 0 || j == 0 || i == N + 1 || j == M + 1 ? '#' : a[i][j]) << (j <= M ? "" : "\n");
- }
- class movement :public objects // класс движения
- {
- const int panSize = 3;
- const char sausage = '!'; // собствнно, сама сосиска
- const char pan = '-'; // и сковорода
- char symbol;
- public:
- void standartSettings(); // установка стандартных настроек
- void drawSausage(); //рисуем сосиску
- void drawPan(); //рисование сковороды
- void clearPanOnField(); // удаляем с поля сковороду
- void clearSausageOnField(); // удаляем с поля сосиску
- void changePanCoordinates(); // двигаем сковороду
- void changeSausageCoordinates(); // движение сосиски
- void nextStep(); // делаем следующий шаг
- };
- void movement::standartSettings() // установка стандартных настроек
- {
- k = 1;
- px = 10;
- py = M;
- sx = 1;
- }
- void movement::drawSausage() //рисуем сосиску
- {
- /*int sC, bC;
- bC = 0;
- sC = rand() % 15 + 1;
- srand(time(NULL));
- setColor(sC, bC);*/
- //sy = rand() % M;
- sy = 20;
- a[sx][sy] = sausage;
- }
- void movement::drawPan() //рисование сковороды
- {
- a[px][py] = pan;
- }
- void movement::clearSausageOnField() // очищаем координаты, где была сосиска
- {
- a[sx][sy] = ' ';
- }
- void movement::clearPanOnField() // очищаем координаты, где была сковорода
- {
- a[px][py] = ' ';
- }
- void movement::changePanCoordinates() // движение сковороды
- {
- if (GetAsyncKeyState(VK_LEFT) && py != M - 21) // при нажатии буквы "а" смещаем сковороду на одно деление влево
- py = py - 1;
- if (GetAsyncKeyState(VK_RIGHT) && py != M) // при нажатии буквы "d" смещаем сковороду на одно деление вправо
- py = py + 1;
- if (GetAsyncKeyState(VK_ESCAPE))
- exit(0);
- // чтоб прервать работу программы нажать "Esc"
- }
- void movement::changeSausageCoordinates() // движение сосиски
- {
- if (a[sx][sy] != a[px][py]) // пока координаты сосиски не станут равны
- { // координатам сковороды, она летит
- sx += k; // вниз
- }
- else
- {
- k = -1; // а потом -
- sx += k; // вверх
- }
- }
- int main()
- {
- objects Field;
- movement Move;
- Move.standartSettings(); // вводим настройки по-умолчанию
- while (1)
- {
- if (_kbhit() == true) // если нажата клавиша
- {
- Move.changePanCoordinates(); // двигаем сковороду
- }
- Move.drawPan();
- Move.drawSausage();
- Field.drawField(); //рисуем поле
- Move.clearSausageOnField(); // чистим поле от сосиски
- Move.changeSausageCoordinates(); // по идее, меняем координаты сосиски
- Sleep(INTERVAL); // приостонавливаем работу программы на 200 миллисикуна
- //Move.clearSausageOnField(); // чистим поле от сосиски
- Move.clearPanOnField(); // чистим поле от сковород
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement