花了近一个月的时间,学习了一下VC++深入详解,做了个贪吃蛇小游戏,虽然有很多的瑕疵,但还是想分享一下战果。
说一下思路:
①我们要绘制图形,我们可以用CClientDC(客户区设备上下文,与特定的窗口关联)声明一个dc对象作图。
当然这里我们要画蛇的身体和食物,设置一个食物类和蛇身体结构体
②我们如何让图形动起来?SetTimer创建一个计时器,KillTimer()用来销毁计时器。
③向哪个方向移动? 蛇头的方向
④食物产生在何处?什么时间产生?
产生在客户区,当一个食物被吃掉以后,产生下一个食物
食物产生在客户区,客户区的大小如何获取?(GetClientRect(&rect)可以获取)
当蛇身可以移动,食物可以产生,吃掉食物,蛇身可以增加,贪吃蛇基本框架就做好了!
实现步骤:
①结构体的创建
struct Food
{
int fx;
int fy;
BOOL IsFood;
};//食物结构体
struct Snake
{
int sx;
int sy;
char Direction;
int sLength;
};//蛇身结构体
struct ClientSize
{
int width;
int Height;
};// 客户区的大小
还需要声明3个全局结构体变量
ClientSize clientsize;
Food food;
Snake snake[200];
②初始化(描绘蛇的初始长度和位置)
添加成员函数InitSnake();并在OnInitDialog()中调用该函数
BOOL C贪吃蛇Dlg::OnInitDialog()
{
... ...
// TODO: 在此添加额外的初始化代码
InitSnake();
}
void C贪吃蛇Dlg::InitSnake() /************************************初始化贪吃蛇****************/
{
snake[0].sx = 10;
snake[0].sy = 10;
snake[1].sx = 9;
snake[1].sy = 10;
snake[2].sx = 8;
snake[2].sy = 10;
snake[0].sLength = 3;
snake[0].Direction = 'R';
//SetTimer(1, 200, NULL);
}
②初始化之后&#