@TOC
OpenGL贪吃蛇游戏简介
OpenGL初学,在VS利用贪吃蛇做一个小练习。贪吃蛇利用wasd输入控制方向,吃食物进行增长,撞上自己或者边界会GAMEOVER,输入1会重新开始(有上传工程https://download.csdn.net/download/weixin_44562141/12261576)。
说明
- wasd控制蛇的移动 ;
- 吃掉一个食物会增加一单位长度 ;
- 当蛇触碰到自己或者边界,则游戏失败,可选择重新开始(输入1)或者退出程序(其他) ;
- 画的是简易的三维,但没有调用glRotatef和 gluLookAt,可加上 ;
关键代码
//食物类
class Food
{
public:
int x;
int y;
bool Iseat;//食物状态
};斜体样式
//贪吃蛇类,以snake[0].alive记录蛇是否触碰到自己或者边界
class Snake
{
public:
int n;
int x;
int y;
char ch;
bool gamestate;
bool alive;
};
//初始化坐标,节数3,状态,最初运动方向
void initList()
{
snake[0].x = 0;
snake[0].y = 0;
snake[1].x = 1;
snake[1].y = 0;
snake[2].x = 2;
snake[2].y = 0;
snake[0].n = 3;
food->Iseat = false;
snake[0].alive = true;
snake[0].ch = 'w';
}
//移动部分主要代码,贪吃蛇运动规律是后一节会移动到前一节的位置
switch (snake[0].ch)
{
case 'w':
snake[0].y = snake[0].y + 1;
break;
case 's':
snake[0].y = snake[0].y - 1;
break;
case 'a':
snake[0].x = snake[0].x - 1;
break;
case 'd':
snake[0].x = snake[0].x + 1;
break;
}
//主程序
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(50, 50);
glutInitWindowSize(800, 800);
glutCreateWindow("贪吃蛇");
initList();
glutDisplayFunc(&RenderScene);
glutTimerFunc(800, TimeFunc, 0);
glutMainLoop();
return 0;
}