Змеиная игра c ++ tail класс как добавить новый объект - PullRequest
0 голосов
/ 22 ноября 2018

Я начинающий программист на С ++, и мне нужна помощь, чтобы продолжить мой проект Snake.Для того, чтобы немного попрактиковаться с классами, я решил использовать эту программу, чтобы они не использовали дурную привычку использовать такие вещи, как множество функций, которые могут быть синтезированы.

Моя проблема возникает, когда мне нужно сделать хвост длямоя змея, потому что для того, чтобы делать это с классами, мне понадобится некая команда, которая "вызывает" новый объект хвоста в программе. Например,

: моя голова только что столкнулась с едой, и хвост должен расти,но как я могу вызвать новый хвостовой объект ??

вот код (я скоро поработаю над удалением системы ("cls"), чтобы программа работала более плавно):

:::::::::::::::: SNAKE.cpp :::::::::::::::::

#include <iostream>
#include <conio.h>
#include <Windows.h>

#include "Head.h"


int score = 0;


int main()
{
    HEAD head;


    while (1)
    {
        head.key();
        head.movement();
        head.show();

        if (GetKeyState(VK_ESCAPE) & 0x8000)
        {
            return 0;
        }

        Sleep(100);
        system("cls");
    }

}

::::::::::::: HEAD.h:::::::::::::

#include <iostream>

void gotoxy(int x, int y)
{
    COORD coord;
    coord.X = x;
    coord.Y = y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}

class HEAD
{

private:
    int x = 20;
    int y = 20;
    int direction, lastdirection;


public:

    void show()
    {
        gotoxy(x, y); std::cout << "@";
    }

    void movement()
    {
        lastdirection = direction;

        switch (direction)
        {
        case 1:
            y--;
            break;
        case 2:
            x--;
            break;
        case 3:
            y++;
            break;
        case 4:
            x++;
            break;
        }

    }
    void key()
    {
        //------------directions-----------

        if (GetKeyState('W') & 0x8000)
        {
            direction = 1;
        }

        if (GetKeyState('A') & 0x8000)
        {
            direction = 2;
        }

        if (GetKeyState('S') & 0x8000)
        {
            direction = 3;
        }

        if (GetKeyState('D') & 0x8000)
        {
            direction = 4;
        }

        //-------specific direction changes--------

        if (lastdirection == 1 && direction == 3 || lastdirection == 3 && direction == 1)
        {
            direction = lastdirection;
        }

        if (lastdirection == 2 && direction == 4 || lastdirection == 4 && direction == 2)
        {
            direction = lastdirection;
        }


    }

};

Я надеюсь, что вы можете мне помочь, потому что это проект, который нужно завершить, потому что для меня это самая трудная вещь, которую я когда-либо программировалв с ++ (после понга)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...