欢迎来到天天文库
浏览记录
ID:50180688
大小:157.00 KB
页数:16页
时间:2020-03-06
《《贪吃蛇游戏课程设计》报告.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、贪吃蛇游戏程序设计一、课程设计任务贪吃蛇小游戏程序设计二、设计要求通过游戏程序设计,提高编程兴趣与编程思路,巩固C语言中所学的知识,合理的运用资料,实现理论与实际相结合。(1).收集资料,分析课题,分解问题,形成总体设计思路;(2).对于设计中用到的关键函数,要学会通过查资料,弄懂其用法,要联系问题进行具体介绍;(3).上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能正常运行;(4).完成课程设计报告,并进行答辩三、需求分析3.1、程序功能贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里
2、,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。3.2、设计思想16程序关键在于表示蛇的图形及蛇的移动。用一个小矩形快表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用俩节表示。移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向
3、键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现与消失也是画矩形块和覆盖矩形块。为了便于理解,定义两个结构体:食物与蛇。3.3、流程图开始初始化界面和蛇身放置食物蛇开始运动蛇吃到食?蛇长大蛇死亡?继续?退出界面NNYNY游戏者按键选择Y16四、设计的具体实现(1)函数定义函数定义是对各个基础函数的定义,并且设置需要运用的信息,便于调用16#defi
4、neN200#defineM200#include"graphics.h"#include#include#include#include#include#include#include#defineLEFT97//A#defineRIGHT100//D#defineDOWN115//S#defineUP119//W#defineEsc0x011binti,key;intsc
5、ore=0;intgamespeed=250;//游戏速度可根据实际情况自行调整structFood{intx;//食物的横坐标inty;//食物的纵坐标intyes;//判断是否要出现食物的变量}food;//食物的结构体structSnake{intx[M];inty[M];intnode;//蛇的节数intdirection;//蛇的移动方向intlife;//蛇的生命,0表示活着,1表示死亡}snake;voidInit();//图形驱动voidClose();//图形结束voidDrawK();//
6、开始画面voidGamePlay();//玩游戏的具体过程voidGameOver();//游戏结束voidPrScore();//输出成绩16(2)主函数main() 主函数是程序的主流程,首先定义使用到的常数、全局变量及函数原型说明,然后初始化图形系统,调用函数DrawK()画出开始画面,调用函数GamePlay(),即玩游戏的具体过程,游戏结束后调用Close()关闭图形系统,结束程序voidmain()//主函数{Init();//图形驱动DrawK();//开始画面16GamePlay();//玩游
7、戏的具体过程Close();//图形结束}voidInit()//图形驱动{intgd=DETECT,gm;initgraph(&gd,&gm,"");/*此处为turboc的路径,读者可以根据自己的电脑而改*/cleardevice();}(3)画界面函数DrawK()主界面是一个封闭的围墙,用两个循环语句分别在水平和垂直方向输出连续的宽度和高度均的矩形方块,表示围墙,为了醒目,设置为白色。voidDrawK()//开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙{setbkcol
8、or(GREEN);setcolor(LIGHTRED);setlinestyle(0,0,5);//设置线型for(i=50;i<=600;i+=10)//画围墙{rectangle(i,40,i+10,49);//上边rectangle(i,451,i+10,460);//下边}for(i=40;i<=450;i+=10){rectangle(50,i,59,i+10);//左边rectangl
此文档下载收益归作者所有