C++版贪吃蛇游戏

本文介绍了一款C++实现的贪吃蛇游戏,作者通过这个游戏加深了对编程的理解和兴趣。游戏设计中,使用二维数组存储显示面板,利用时间函数控制蛇的移动速度,并用数组记录蛇的节点位置。
摘要由CSDN通过智能技术生成

      这是以前写的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()             //
  • 9
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值