c语言贪吃蛇小游戏程序课程设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学生课程设计报告

一、课程设计内容

贪吃蛇小游戏程序设计

(贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中身体交叉蛇头撞倒自己身体则游戏结束。)

二、技术路线

使用VC++6.0作为开发环境,

采用控制台的形式完成整个游戏的开发,没有用到MFC。

加入了pcc32.h的头文件及库文件,用于对控制台打印效果的控制。

同时也加入了PlaySound()函数,实现了对菜单选择,游戏开始,游戏结束的音效控制。游戏栏和输出栏的同时打印,数据的更新打印效果,没有采用双线程的方法实现。

接收用户键盘输入信息,实现游戏暂停,重新开始,菜单选择和进入菜单。

三、设计与实现

1.游戏基本功能:

游戏有开始菜单界面,并有开始游戏,游戏帮助,关于游戏,退出游戏四个选项

游戏初始化后,一条蛇在密闭的围墙内,在围墙内随机出现一个食物,

通过按键盘上的四个方向键控制蛇移动,

蛇在移动过程中撞到墙壁将不会死亡,而是穿过围墙继续行进,

但是如果蛇身体交叉蛇头撞到自己的身体,则游戏结束。

同时,游戏过程中可暂停游戏,并有积分系统,

且积分每满一定值,蛇的运行速度也会逐步增加。

2.函数定义和声明

(1)头文件

#include #include #include

#include

#include

#include "mmsystem.h" #pragma comment (lib,"winmm.lib")

#include"pcc32.h" #pragma comment

(lib, "pcc32_vc6.lib")

using namespace std; #define UP 72

//定义上下左右常量

#define DOWN 80

#define LEFT 75

#define RIGHT 77

#define ESC 27

#define SPACE 32

//空格

#define ENTER 13

//回车

(2)函数声明

void GamePrint();

//游戏开始画面函数

void Gameinit();

//游戏初始化函数

void Sweep_Screem();

//清屏函数

void Gotoxy(int , int); //光标移动函数

void Hid_Cursor();

//光标隐藏函数

void Snake_Move();

//蛇运动函数

int Create_Food();

//食物产生函数

void Pwall();

//画墙函数

void Key();

//键盘操作和处理函数

void Hit_Wall();

//判断是否撞墙

void Eat_Itself();

//判断是否咬到自己

void Whether_Eat();

//判断蛇是否吃到食物

void GameRun();

//游戏运行函数

void SurFace();

//开始菜单界面void GameOver();

//游戏结束判断函数

void Pause();

//游戏暂停函数

void MyCount1();

//统计边栏,用来做提示

void MyCount2();

//统计边栏,用来做一些统计

void Menu( int );

//开始界面

void Inti_Data();

//初始化数据

(3)变量声明

int X, Y;

//食物坐标

int Map[79][24]={{0}};

//地图尺寸,其实有食物记为1

int over = 0;

//用来标记游戏结束

int score = 0;

//记录分数

int speed = 130;

//记录速度

int ColoArray[15]=

{15,1,2,3,4,5,6,7,8,9,10,11,12,13,14} ;

//自己定义的用来控制颜色的数组

int length = 3;

//初始化蛇的长度为3

int Key_Menu;

//开始菜单界面用的零时按键

3.主函数int main()

int main() //主函数

{

START:

Inti_Data();

fixConsoleSize(18,15);

Hid_Cursor();

SurFace();

PlaySound(TEXT("m22.wav"), NULL, SND_FILENAME | SND_ASYNC );

fixConsoleSize(105,25);

GamePrint();

Gameinit();

GameRun();

while(over) //如果游戏结束了,是否重新开始。按R键为重新开始{

int t=getch();

if(t == 'r'||t == 'R')

{

system("cls");

goto START;

}

}

return 0;

}

4.界面函数Surface()

SurFace()是通过接受按键信息来调用Menu();

SurFace()中给出了四个菜单选项,

上下键实现对菜单的选择,

ENTER键实现对菜单的进入;

temp用于存放按键信息,

keytemp用于记录当前菜单的位置,

实现了在第一个菜单选项按上方向键会走到最后一个菜单选项(keytemp+=4),

在最后一个菜单选项按下方向键会走到第一个菜单选项(keytemp%4)

5.菜单函数Menu(int n)

调节输出的颜色给人以选择光效移动的效果,事实上只是先清屏然后重新打印了而已,通过SurFace()传参来控制菜单输出结果

相关文档
最新文档