我是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 ++编写过的最困难的事情(乒乓球之后)