这是以前写的C++版贪吃蛇游戏,也是我学C++时的课程设计题目。通过这个游戏的开发,使我对编程有了更大的兴趣,也对自己逐渐有了信心。
贪吃蛇游戏的设计思路如下:
1)用二维数组来存储显示面板,即有蛇的地方用1表示,没有的地方用0表示,最后据此来绘制图。
2)用时间函数来控制小蛇的移动速度,如每个1秒或500ms等,可以用此来设置等级。
3)贪吃蛇所有的轨迹都是其蛇头走过的轨迹,所以只要记录蛇头的位置,其后的节点都跟随他。
4)用二维数组来记录蛇的所有节点。
截图:
转载请标明出处:http://blog.csdn.net/u012027907
过多的我就不说了,下面是代码,有很详细的注释。
#include <stdio.h>
#include <windows.h>
#include <time.h>
#include <conio.h>
#include <iostream.h>
//-------------------------------------------------------------------
void GotoXY(int x, int y) //设定输出位置
{
COORD c;
c.X = x-1;
c.Y = y-1;
SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);
}
//-----------------------------------------------------------------
void color(int a) //颜色函数
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);
}
struct HeroList
{
char Name[10];
int Highscore;
}Hero[10];
//----------------------------------------------------------
void Save() //存储最高分及名字
{
FILE *fp;
if((fp=fopen("Hero_list","wb"))==NULL)
{cout<<"can not open file!"<<endl;return;}
if(fwrite(&Hero[0],sizeof(struct HeroList),1,fp)!=1)
cout<<"file write error!"<<endl;
fclose(fp);
}
//**********************************************************
class CSnake
{
int image[20][20]; //游戏面板,即小蛇活动范围
int FoodX; //事物出现的X坐标
int FoodY; //事物出现的Y坐标
int snakeX; //记录小蛇的头部X坐标
int snakeY; //记录小蛇的头部Y坐标
int head; //小蛇头部下标
int tail; //小蛇尾部下标
int snake[2][2000]; //记录小蛇所有身体的坐标
int node; //小蛇的节数
int direction; //小蛇头部的方向
int i,j;
int gamespeed; //速度
int score; //记录分数
char arrowKey; //接受按键的变量
int GameOver; //使游戏结束的变量
int level; //设置等级
int length; //为了设置等级而与node一样记录设的长度
public:
CSnake() //构造函数初始化部分变量
{
head=3; //初始化头部下标
tail=0; //初始化尾部下标
node=4; //小蛇初始节数为4节
gamespeed=300; //游戏速度(移动的间隔时间)
score=0; //初始化分数为0
direction=6; //小蛇的初始方向向右
GameOver=0; //进入游戏初始化为0
level=1;
length=4;
}
~CSnake() //析构函数
{}
void Init(); //初始化游戏面板及小蛇的坐标
int DrawSnake(); //记录小蛇每次移动后头部及身体的下一坐标
void Automove(); //使小蛇自动移动
int Gameover(); //判断游戏是否结束
int Generatefood(); //产生食物
void display(); //显示游戏面板
void shiftLeft(); //控制左移
void shiftRight(); //控制右移
void shiftDown(); //控制下移
void shiftUp(); //控制上移
int PlayGame(); //执行游戏的函数
void Setspeed(); //设置速度
int Pause(); //游戏的暂停
};
//-------------------------------------- -------------------------------
void CSnake::Init() //