XX 学
C语言程序设计 课程设计(文)
题目: 贪吃蛇
院(系): 软件学院
专业班级:
学 号:
学生姓名:
指导教师:
教师职称:
起止时间:2010122020101231
课程设计(报告)务评语
院(系):软件学院 教研室:软件教研窒
学 号
学生姓名
专业班级
程序设计(报告)题目
贪吃蛇
程序设计(报告)务
程序设计务求:
(1)掌握C语言编程基础知识
(2)较熟练编写C语言应程序
(3)解C语言常标准函数编程技巧异常处理
(5)联系已学容巩固学理增强独立工作力
(6)通设计学生独立编写程序程理学动手力提高
(7)通次设计进步培养学生热爱专业思想时专业综合素质提高起积极推动作
课程设计程中严格遵守实践环节时间安排听指导教师指导正确完成述容记录实日记规范完整撰写出课程设计报告
指导教师评语成绩
成绩: 指导教师签字:
2011 年 X 月 X 日
目 录
第1章 课程设计目求 1
11 课程设计目 1
12 课程设计实验环境 1
13 课程设计预备知识 1
14 课程设计求 1
第2章 课程设计容 2
21程序功介绍 2
22程序整体设计说明 2
221设计思路 2
222数结构设计法说明 3
223程序结构(流程图) 4
224模块功程序说明 5
225程序结果 5
23程序源代码注释 6
第3章 课程设计总结 15
参考资料 ……………………………………………………………………………………17
第1章 课程设计目求
11 课程设计目
课程设计计算机科学技术专业重实践性环节学生学完程序设计语言(C)课程进行次全面综合练课程设计目务:
1 巩固加深学生C语言课程基知识理解掌握
2 掌握C语言编程程序调试基技
3 利C语言进行基软件设计
4 掌握书写程序设计说明文档力
5 提高运C语言解决实际问题力
12 课程设计实验环境
硬件求运行Windows 2000XP操作系统微机系统C语言程序设计相应开发环境
13 课程设计预备知识
熟悉C语言C语言开发工具
14 课程设计求
1 分析课程设计题目求
2 写出详细设计说明
3 编写程序代码调试程序正确运行
4 设计完成软件便操作
5 设计完成提交课程设计报告
第2章 课程设计容
21程序功介绍
贪吃蛇游戏封闭围墙里机出现食物通键盘左右四光标键控制蛇移动方蛇头撞倒食物食物吃掉蛇身体长节时记10分果蛇移动中撞墙身体交叉蛇头撞身体游戏结束
22程序整体设计说明
221设计思路
矩形块表示蛇节身体增加矩形块蛇身长节蛇头俩节表示必须蛇头开始移动蛇相反方移动果光标键蛇行前方前移动效方键蛇头着该方移动步移动节身体效方键应先确定蛇头位置然蛇身体蛇头移动图形实现蛇头新位置开始画出蛇时未清屏原原蛇位置新蛇位置相差单位起蛇会节身体蛇节背景色覆盖食物出现消失画矩形块覆盖矩形块便理解定义两结构体:食物蛇表示食物蛇矩形块设计10*10素单位食物基数域出现位置xy座标表示矩形块函数rectangle(xyx+10y+10)rectangle(xyx+10y10)画出次出现食物设定yes表示否出现食物蛇节身体矩形块表示矩形块需起点座标xy身体断增长数组存放节座标设定N200node表示前节数保存蛇移动方变量direction生命变量life旦life1表示蛇死游戏结束
222数结构设计法说明
int key
键获
int score0
分
int gamespeed50000
游戏速度调整
struct Food
{
int x
食物横坐标
int y
食物坐标
int yes
判断否出现食物变量
}food
食物结构体
struct Snake
{
int x[N]
int y[N]
int node
蛇节数
int direction
蛇移动方
int life
蛇生命0活着1死亡
}snake
223程序结构(流程图)
224模块功程序说明
函数定义常数全局变量函数原型说明初始化图形系统调drawk()画开始画面调gameplay()关闭图形系统成语结束画界面函数drawk 面封闭围墙两循环语句分水垂直方输出连续宽度高度均10单位矩形方块表示围墙函数setlinestyle(solidlinethickwidth)设置线形宽度3素设置3素围墙线游戏函数gameplay()次移动时重节倒数第2节前节坐标付节坐标移动节颜色覆盖然蛇头方键更改位置游戏结束函数gameover()函数结束清屏输出分数显示游戏结束信息Prscore()输出分数指定位置Prscore()整数转字符串outtextxy()函数输出void main() 游戏程序
算法:(1)设置初始值食物设置机数发生器初始时蛇蛇头设定开始方(2)循环执行esc退出1)没键时循环执行没食物机出现食物食物显示食物蛇移动身体根蛇移动方改变坐标判断蛇否撞墙蛇死调结束函数gameover()结束游戏重新开始蛇吃食物蛇身体长节数组元素增加身体节数分数增加新位置画出蛇2)果键识键值键ESC结束游戏键方键根该键改变代表蛇方变量direction值反方键效游戏结束函数gameover()游戏结束清屏输出分数显示游戏结束信息prscore()输出分数指定位置sprintf()整数转字符串outtextxy()输出bar()函数处覆盖原值close()图形结束显示游戏结束信息画面时意键关闭图形系统程序结束
225程序结果
图贪吃蛇运行图运行中方键左右控制蛇身运行方蛇吃食物蛇身加长继续游戏蛇身体交叉蛇头撞身体撞墙蛇死游戏结束
图2251图2252示
图2251 贪吃蛇运行图
图2252贪吃蛇运行结果图
23程序源代码注释
#define N 200
#include
#include
#include
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define DOWN 0x5000
#define UP 0x4800
#define ESC 0x011b
int ikey
int score0
*分*
int gamespeed50000
*游戏速度调整*
struct Food
{
int x
*食物横坐标*
int y
*食物坐标*
int yes
*判断否出现食物变量*
}food
*食物结构体*
struct Snake
{
int x[N]
int y[N]
int node
*蛇节数*
int direction
*蛇移动方*
int life
* 蛇生命0活着1死亡*
}snake
void Init(void)
*图形驱动*
void Close(void)
*图形结束*
void DrawK(void)
*开始画面*
void GameOver(void)
*结束游戏*
void GamePlay(void)
*玩游戏具体程*
void PrScore(void)*输出成绩*
*函数*
void main(void)
{
Init()
*图形驱动*
DrawK()
*开始画面*
GamePlay()
*玩游戏具体程*
Close()
*图形结束*
}
*图形驱动*
void Init(void)
{
int gdDETECTgm
registerbgidriver(EGAVGA_driver)
initgraph(&gd&gmc\\program files\\winyes\\tc20h\\bgi)
cleardevice()
}
*开始画面左角坐标(5040)右角坐标(610460)围墙*
void DrawK(void)
{
*setbkcolor(LIGHTGREEN)*
setcolor(11)
setlinestyle(SOLID_LINE0THICK_WIDTH)
*设置线型*
for(i50i<600i+10)
*画围墙*
{
rectangle(i40i+1049)
*边*
rectangle(i451i+10460)
*边*
}
for(i40i<450i+10)
{
rectangle(50i59i+10)
*左边*
rectangle(601i610i+10)
*右边*
}
}
*玩游戏具体程*
void GamePlay(void)
{
randomize()
*机数发生器*
foodyes1
*1表示需出现新食物0表示已存食物*
snakelife0
*活着*
snakedirection1
*方右*
snakex[0]100snakey[0]100
*蛇头*
snakex[1]110snakey[1]100
snakenode2
*节数*
PrScore()
*输出分*
while(1)
*重复玩游戏压ESC键结束*
{
while(kbhit())
*没键情况蛇移动身体*
{
if(foodyes1)
*需出现新食物*
{
foodxrand()400+60
foodyrand()350+60
while(foodx100)
*食物机出现必须食物够整格样蛇吃*
foodx++
while(foody100)
foody++
foodyes0
*画面食物*
}
if(foodyes0)
*画面食物显示*
{
setcolor(GREEN)
rectangle(foodxfoodyfoodx+10foody10)
}
for(isnakenode1i>0i)
*蛇环节前移动贪吃蛇关键算法*
{
snakex[i]snakex[i1]
snakey[i]snakey[i1]
}
*1234表示右左四方通判断移动蛇头*
switch(snakedirection)
{
case 1snakex[0]+10break
case 2 snakex[0]10break
case 3 snakey[0]10break
case 4 snakey[0]+10break
}
for(i3i
{
if(snakex[i]snakex[0]&&snakey[i]snakey[0])
{
GameOver()
*显示失败*
snakelife1
break
}
}
if(snakex[0]<55||snakex[0]>595||snakey[0]<55||
snakey[0]>455)
*蛇否撞墙壁*
{
GameOver()
*次游戏结束*
snakelife1
*蛇死*
}
if(snakelife1)
*两种判断果蛇死跳出循环重新开始*
break
if(snakex[0]foodx&&snakey[0]foody)
*吃食物*
{
setcolor(0)
*画面食物东西掉*
rectangle(foodxfoodyfoodx+10foody10)
snakex[snakenode]20snakey[snakenode]20
*新节先放见位置次循环取前节位置*
snakenode++
*蛇身体长节*
foodyes1
*画面需出现新食物*
score+10
PrScore()
*输出新分*
}
setcolor(4)
*画出蛇*
for(i0i
snakey[i]10)
delay(gamespeed)
setcolor(0)
*黑色蛇节*
rectangle(snakex[snakenode1]snakey[snakenode1]
snakex[snakenode1]+10snakey[snakenode1]10)
} *endwhile(kbhit)*
if(snakelife1)
*果蛇死跳出循环*
break
keybioskey(0)
*接收键*
if(keyESC)
*ESC键退出*
break
else
if(keyUP&&snakedirection4)
*判断否相反方移动*
snakedirection3
else
if(keyRIGHT&&snakedirection2)
snakedirection1
else
if(keyLEFT&&snakedirection1)
snakedirection2
else
if(keyDOWN&&snakedirection3)
snakedirection4
}*endwhile(1)*
}
*游戏结束*
void GameOver(void)
{
cleardevice()
PrScore()
setcolor(RED)
settextstyle(004)
outtextxy(200200GAME OVER)
getch()
}
*输出成绩*
void PrScore(void)
{
char str[10]
setfillstyle(SOLID_FILLYELLOW)
bar(501522035)
setcolor(6)
settextstyle(002)
sprintf(strscoredscore)
outtextxy(5520str)
}
*图形结束*
void Close(void)
{
getch()
closegraph()
}
第3章 课程设计总结
通次课程设计学关计算机方面知识时通次实际操作C语言更进步解更加喜欢学科样次锻炼机会
课程设计培养学生综合运学知识发现提出分析解决实际问题锻炼实践力重环节学生实际工作力具体训练考察程着科学技术发展日新月异计算机应生活中说处作二十世纪学说掌握计算机开发技术十分重设计程中遇问题说困难重重毕竟第次做难免会遇种样问题时次课程设计中认识做程序设计项工作中具备素质:1强团队精神协作力文档惯相信车山前必路说法认懒惰者寻懒惰口积极握努力做仅已力觉程序段必太高级天事高低分决定优劣集体中某部分强弱起决定作组合元素谐集体中发挥长处避免短处集体实际组合量优良文档正规研发流程中非常重环节缺乏文档软件系统缺乏生命力未查错升级模块复时会遇极麻烦外编程项高精度工作规范化标准化代码编写惯通次编程深深感受代码变量命名代码注释格式甚嵌套中行缩进长度函数间空行数字明确规定良编写惯助代码移植纠错助员间协作2模块化思维力模块化思维编程功模块函数时候想局限完成前务简单思路想想该模块否脱离系统存否通简单修改参数方式系统应环境直接引样极避免重复性开发工作3学总结善总结学力种体现次完成编程务段代码应目踪该程序应状况时总结找足样编写程序逐步提高生活样汗水预示着结果见证着收获课程设计程中学生哲理懂样制定计划样实现计划掌握执行程中样克服心理良情绪黑夜收获黎明次实际操作必成生旅途非常美回忆
通次文设计初步学会文设计基方法学会样鉴方法验知道查找资料整合处理资料学毕业设计文初步基础获益享受种成功喜悦两星期中开始确定做文题目然网图书馆查找资料编写C语言原程序进行编译环节非常痛苦艰难常常会点错误编译失败然次修改失败次数越考验越编译程序运行成功享受成功喜悦越外调试程序程中断思考运已学知识提高
参考资料
[1] 姜仲秋C语言程序设计基础南京南京学出版社1998
[2] 张颖江C语言程序设计北京科学出版社1998
[3] 李友C语言程序设计基础北京清华学出版社1999
[4] 谭浩强C语言程序设计北京清华学出版社2000
[5] 钱启C语言程序设计基础北京中国铁道出版社2000
[6] 胡元义邓亚玲等数结构(c语言)实践教程西安电子科技学出版社2007
[7] 鲁沐浴C语言新编程技巧200例电子工业出版社2008
[8] 李春葆 张植民 肖忠付C语言程序设计题典清华学出版社2006
[9] 刑馥生刘志远姜德森C语言程序设计应高等教育出版社2008
[10] 徐金梧杨德斌TURBO C实全机械工业出版社2009
[11] 朱战立数结构—c语言西安交通学出版社2005
[12] 刘变红C语言高级编程实例剖析 民邮电出版社2008
[13] 徐德民新C语言程序设计北京电子工业出版社2008
[14] 科钦C语言程序设计北京电子工业出版社2010
[15] 李成付C语言程序设计基础北京科学出版社2008
辽ning工业学
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档