ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:25.75KB ,
资源ID:2844294      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2844294.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(贪吃蛇总结报告.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

贪吃蛇总结报告.docx

1、贪吃蛇总结报告贪吃蛇设计综合实验总结报告课程名称:程序设计实践选题名称:贪吃蛇小组长姓名: 方娟 200911211056小组成员姓名:邹甜 200911211004 杜家萱 200911211066任课老师:伊乾报告递交时间:2009.6.9一 系统功能说明贪食蛇游戏是一个深受人们喜爱的游戏:一条蛇在密闭的围墙内,在围墙内出现食物,通过按键控制蛇向上下左右四个方向移动,蛇撞到食物,则食物被吃掉,蛇的身体增加一节。如果蛇在移动的过程中,撞到墙壁或身体的交叉(蛇头撞到自己的身体)游戏结束。现要求利用Turbo C2.0来实现该游戏。功能要求如下:一、基本功能1.提供一个图形模式下的界面。2.开始

2、游戏:空格键或回车键;退出游戏:Esc键。3.支持用键盘的方向键来控制蛇的移动,蛇可以向上、下、左、右四个方向移动。4.当蛇头碰到食物时,食物被吃掉,蛇的身体增长一节。5.初始场景内随即出现1个食物,当食物被吃掉时,再随机出现一个食物。6.要有记分机制,没吃掉一个食物,增加相应的分数。7.蛇碰到墙壁或是自己身体的一部分则游戏结束。二、高级功能1.暂停功能:能随时通过按键来暂停游戏,再按一次则继续游戏。2.速度调节功能:当分数达到某个值后,对蛇的移动速度进行一定的提升,但会有一个速度上限。3.奖励机制:增加另一种的奖励食物,蛇吃到该种食物后蛇的身体减少一节(最短不能少于2节),但不增加分数。该种

3、食物的颜色要区别与普通食物的颜色。奖励食物有时间限制,在一定时间内没有吃掉则会消失。4.音效功能:在游戏开始、吃掉食物、撞墙、撞到自己时提供不同的音效。二 程序结构初始化图形模式(1)程序结构说明开始游戏 处理和实现游戏进行过程中的各种事件和功能结束游戏并关闭图形模式(2)重要数据说明基本思路:首先设计主界面,主界面是一个密封的围墙,并在屏幕最右面留一部分用来显示分数、计时等其他信息。围墙直接画一个矩形来表示,四面围成密闭的矩形来作为围墙。接着是初始化蛇与食物的位置并将他们用图形表示出来。然后进行一个循环,将蛇按当前的方向移动,并处理键盘的方向按键信息,调整蛇的移动方向。蛇头如果碰到食物,则食

4、物消失,蛇身增长一节,更新分数,并在另外的地方又随机出现食物;如果碰到围墙或是自己的身体,则游戏结束,关闭图形系统。1)游戏场景用一个二维坐标表示移动方向利用定义16位制键值如#define LEFT ox40b002)在函数中利用switch函数进行控制方向3)利用结构体来表示蛇,定义两个二维数组分别表示蛇的身体的每一节,记录其横纵坐标struct Snake /*定义蛇的结构体*/ int xN; int yN; int node; int direction;/*蛇移动方向*/ int life;/* 蛇的生命,0活着,1死亡*/snake;利用两个一维数组来控制蛇本身的横纵坐标 4)食

5、物的表示是一个结构体struct Fooda)int x;b)int y;c)int die;/*判断是否出现食物*/d)int bonus;/*判断是否要出现食物的变量*/(3)函数清单文件名函数原型函数功能处理描述draw.cvoid Init(void)初始化图形模式调用initgraph()切换到图形模式void Draw(void)初始化贪吃蛇界面调用rectangle()画围墙void Close(void)关闭图形调用closegraph()关闭图形timer.cvoid interrupt(*oldtimer)(void)指向原来的时钟中断处理过程入口中的中断处理函数指针(句柄

6、)void interrupt newtimer(void)新的时钟中断处理过程调用(*oldtimer)()函数句柄,计时器自动加1void SetTimer(void interrupt(*IntProc)(void)设置新的时钟中断处理过程调用setvect()设置新的时钟中断处理过程void KillTimer()恢复原有的时钟中断处理过程调用setvect()恢复原有的时钟中断处理过程play.cvoid GamePlay(void)游戏实现的过程如何画出蛇 蛇如何移动 蛇的身体怎样增加 怎样吃食物 怎样控制奖励 void GameOver(void)游戏结束后退出游戏如果蛇死,则退

7、出游戏void PrScore(void)打印出游戏得分在游戏界面的适当位置打印出游戏得分void IsBonus(void)判断是否产生奖励游戏的分数每增加100分,产生一个奖励void Eatfood(void)判断是否吃食物判断蛇头的位置和食物的位置是否相同void Eatbonus(void)判断是否吃奖励判断奖励的位置和蛇头的位置是否相同void Notbonus(void)到时间后奖励没被吃掉则奖励消失到达设定的时间后,若奖励没被吃则消失(4)重要函数算法分析整个贪吃蛇游戏由5个源文件组成,分别是snake.h、timer.c、draw.c、play.c、main.c、snake.

8、h文件Snake.h该文件包括贪吃蛇程序设计中所需要的系统头文件、宏定义、外部全局变量申明和函数原型说明等组成,使构成的贪吃蛇的各个C源文件只需要引用该头文件即可。#ifndef SNAKE_H#define SNAKE_H /*防止函数重定义*/#define N 200#include #include#include /*系统头文件*/#define LEFT 0x4b00 /*定义上下左右的键值*/#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011b#define ENTER 0x1c0d#

9、define SPACE 0x3920#define TIMER 0x1c /*定义时钟中断号*/unsigned int TimerCounter=0; /*计时变量*/int i,key;int score=0;int gamespeed=50000000;struct Food /*定义食物和奖励的结构体*/ int x; int y; int die; int bonus;/*判断是否要出现食物的变量*/food,good;struct Snake /*定义蛇的结构体*/ int xN; int yN; int node; int direction;/*蛇移动方向*/ int lif

10、e;/* 蛇的生命,0活着,1死亡*/snake;void Init(void); /*图形驱动*/void Close(void); /*图形结束*/void Draw(void); /*开始画面*/void GameOver(void); /*结束游戏*/void GamePlay(void);/* 游戏实现的过程*/void PrScore(void);/*打印游戏得分*/void IsBonus(void); /*判断是否产生奖励*/void Eatfood(void); /*判断是否吃食物*/void Eatbonus(void); /*判断是否吃奖励*/void Notbonus(

11、void); /*到时间后奖励没被吃掉则奖励消失*/void interrupt newtimer(void); /*指向原来的时钟中断处理过程入口中的中断处理函数指针(句柄)*/void interrupt newtimer1(void); /*新的时钟中断处理过程*/void SetTimer1(void interrupt(*IntProc)(void); /*设置新的时钟中断处理过程*/void SetTimer(void interrupt(*IntProc)(void); /*恢复原有的时钟中断处理过程*/void KillTimer();/*/#endif源代码Timer.c文件

12、时钟中断处理源程序文件,主要包括原先的时钟中断处理函数句柄、新的时钟中断处理函数、设置新的时钟中断处理过程、恢复原有的时钟中断处理过程的四个函数。#include“snake.h”Unsigned int TimerCounter=0;/*计时变量,每秒钟增加18*/*/*函数原型:void interrupt(*oldtimer)(void);*传入参数:无*返回值:无*函数功能:指向原来的时钟中断处理过程入口的中断处理函数指针(句柄)/*/void interrupt(*oldtimer)(void);/*/*函数原型:void interrupt newtimer(void);*传入参数

13、:无*返回值:无*函数功能:新的时钟中断处理函数/*/void interrupt newtimer(void) (*oldtimer)(); TimerCounter+;/*/*函数原型:void SetTimer(void interrupt(*IntProc)(void)*传入参数:无*返回值:无*函数功能:设置新的时钟中断处理函数/*/void SetTimer(void interrupt(*IntProc)(void) oldtimer=getvect(TIMER); disable(); setvect(TIMER,IntProc); enable();/*/*函数原型:void KillTimer()*传入参数:无*返回值:无*函数功能:恢复原先的时钟中断处理函数/*/void KillTimer() disable(); setvect(TIMER,oldtimer); enabl

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1