蛇游戏C ++尾类如何添加新对象

时间:2018-11-22 12:40:06

标签: c++ class console

我是C ++的初学者,我希望获得一些帮助以继续执行我的蛇项目。 为了对类进行一些练习,我决定使用该程序来使用它们,而不是习惯于使用可能会被滥用的函数之类的东西。

我的问题是当我必须为蛇做尾巴时,因为要使用类使其成为蛇尾,我需要一种命令来“召唤”程序中的新尾巴对象。

例如:我的头刚好碰到食物,尾巴必须长大,但是                             我如何召唤一个新的尾巴物体?

下面是代码(我将尽快在以后删除system(“ 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;
        }


    }

};

我希望您能为我提供帮助,因为这是一个需要完成的项目,因为对我来说,这是我用c ++编写过的最困难的事情(乒乓球之后)

0 个答案:

没有答案