




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
贪吃蛇游戏程序设计贪吃蛇游戏设计一、设计任务贪吃蛇游戏程序设计二、设计目的 通过对贪吃蛇游戏的设计,来将所学的C语言知识运用,从而达到巩固知识灵活运用知识的目的,实现理论与实际的结合。三、设计思路分析(1)游戏规则在一个四周都用“砖”围起来的空间里,空间里随机出现一个食物,食物出现的位置必须在围墙内,且出现的位置不能与蛇的位置重合。然后操作者通过上下左右键来控制蛇吃掉食物,蛇每吃掉一个食物,自己的长度就增加一节,同时游戏分数增加10分。蛇吃到食物后,系统又随机产生另一个新的食物。若蛇在运动过程中,撞到墙或碰到自己的身体,则立刻结束游戏,否则继续进行。 (2)蛇的运动此程序的关键就在于蛇的移动。游戏在进入界面后,在没有执行任何操作的情况下,蛇沿着原来的方向以某一速度前行。若蛇在水平方向上前行,操作者按向左或向右的键,此时该指令判为无效,蛇继续沿着原来水平的方向前行。同样的道理,若蛇在竖直的方向上前行,操作者按向上或向下的键,此时该指令也判为无效,蛇继续沿着原来竖直的方向前行。若蛇在运动过程中,操作者按下了有效的键后,首先应确定蛇头的位置,然后蛇的身体随着蛇头而运动。在新的蛇头确定的那一瞬间,蛇看上去好像比之前多了一节,为了不出现这样的情况,在新的蛇头出现的时候,就应该用程序的背景颜色将蛇尾遮盖掉。这样看起来,既实现了蛇的转向,又不会使蛇无缘无故的多一节。所以,在游戏的整个界面中,共有两个结构体-食物与蛇。(3)流程图开始否 是 否 是 否 是继续按原来方向前行按照指令方向前行输入指令?结束退出界面蛇死亡?是否吃到食物?蛇身变长一节随机产生另一个食物蛇开始沿原来初始的方向前行初始化界面初始化蛇的位置,蛇的长度四、程序模块化思想分析 整个程序主函数主要由四大部分构成:图形驱动,开始画面,玩游戏的具体过程,图形结束。/*void main()/主函数 Init();/图形驱动DrawK();/开始画面GamePlay();/玩游戏的具体过程 Close();/图形结束/* 所以只要分块完成对应的程序,然后把各个部分的程序连起来就可以了。(一) 图形的驱动 图形的驱动,首先是由detectgraph通过检测硬件确定图形驱动程序和模式,然后把自动测试硬件的结果赋给图形驱动器。不同的显示器适配器有不同的图形分辨率。即是同一显示器适配器, 在不同模式下也有不同分辨率。因此, 在屏幕作图之前, 必须根据显示器适配器种类将显示器设置成为某种图形模式, 在未设置图形模式之前,微机系统默认屏幕为文本模式(80列, 25行字符模式), 此时所有图形函数均不能工作。再由initgraph()函数,根据测试结果初始化图形。/*void Init()/图形驱动int gd=DETECT; / gd=DETECT把自动测试硬件的结果赋给图形驱动器 int gm;/图形模式initgraph(&gd,&gm, );/根据测试结果初始化图形cleardevice(); /清除图形屏幕/*(二) 开始画面画面的开始也就是画墙,其中要规定围墙的范围坐标。要设置“砖”的形状颜色,分数的背景颜色。setbkcolor函数用指定的颜色值来设置当前的背景色,如果指定的颜色值超出了当前设备的表示范围,则设置为最近似的、设备可以表示的颜色。setcolor图形屏幕函数设置前景颜色,也就是“砖”的颜色(BLACK黑 BLUE 兰 GREEN绿 CYAN青 RED红 MAGENTA洋红 BROWN棕 LIGHTGRAY淡灰 DARKGRAY深灰 LIGHTBLU淡兰 WHITE白LIGHTGREEN淡绿 LIGHTCYAN淡青 LIGHTMAGENTA 淡洋红 LIGHTRED 淡红YELLOW 黄)。rectangle(int left, int top, int right, int bottom)函数画矩形来做围墙,(left ,top )为矩形的左上坐标,(right,bottom)为矩形的右下坐标,两者可确定一个矩形的大小setlinestyle函数设置当前画线宽度和类型,也就是“砖”的线条的形状(PS_SOLID画笔画出的是实线 PS_DASH画笔画出的是虚线PS_DOT画笔画出的是点线 PS_DASHDOT画笔画出的是点划线PS_DASHDOTDOT画笔画出的是点-点-划线)。/*void DrawK()/开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙setbkcolor(BLUE);/分数背景颜色setcolor(GREEN);/边框颜色setlinestyle(PS_DASHDOT);/设置线型for(i=50;i=600;i+=10)/画围墙rectangle(i,40,i+10,49);/矩形上边 rectangle(i,451,i+10,460);/矩形下边for(i=40;i0;i-)/蛇的每个环节往前移动,也就是贪吃蛇的关键算法snake.xi=snake.xi-1;/把蛇的前一节横坐标给后一节的横坐标snake.yi=snake.yi-1;/把蛇的前一节纵坐标给后一节的纵坐标switch(snake.direction)/1,2,3,4表示上下左右四个方向,通过这个判断来移动蛇头case 1:snake.x0+=10;break;/向右移动case 2:snake.x0-=10;break;/向左移动case 3:snake.y0-=10;break;/向上移动case 4:snake.y0+=10;break;/向下移动for(i=3;isnake.node;i+)/从蛇的第四节开始判断是否撞到自己了,因为蛇头为两节,第三节不可能拐过来if(snake.xi=snake.x0&snake.yi=snake.y0) GameOver();/显示失败snake.life=1;break;if(snake.x0600|snake.y0450)/蛇是否撞到墙壁GameOver();/本次游戏结束snake.life=1;/蛇死if(snake.life=1)/以上两种判断以后,如果蛇死就跳出内循环,重新开始break;if(snake.x0=food.x&snake.y0=food.y)/吃到食物以后setcolor(0);/把画面上的食物去掉rectangle(food.x,food.y,food.x+10,food.y-10);snake.xsnake.node=-20;snake.ysnake.node=-20;/新的一节先放在看不见得位置,下次循环就取前一节的位置snake.node+;/蛇的身体长一节food.yes=1;score+=10;PrScore();/输出新的得分setcolor(WHITE);/画出蛇及规定其颜色for(i=0;isnake.node;i+)rectangle(snake.xi,snake.yi,snake.xi+10,snake.yi-10);Sleep(gamespeed);setcolor(0);/用黑色去除蛇的最后一节rectangle(snake.xsnake.node-1,snake.ysnake.node-1,snake.xsnake.node-1+10,snake.ysnake.node-1-10); /*endwhile(!kbhit)*/if(snake.life=1)/如果蛇死就跳出循环break;if(key=Esc)/按ESC键退出break;else if(key=UP&snake.direction!=4)snake.direction=3;else if(key=RIGHT&snake.direction!=2)snake.direction=1;else if(key=LEFT&snake.direction!=1)snake.direction=2;else if(key=DOWN&snake.direction!=3)snake.direction=4;/endwhile(1)/*/*(四)图形结束(游戏结束) 游戏结束包括清除屏幕,输出分数,用outtextxy函数输出提示语“欢迎您再回来!”,由setcolor()函数来控制其字体的颜色。然后就是退出界面。/*void GameOver()/游戏结束cleardevice();PrScore();setcolor(RED);outtextxy(100,100,欢迎您再回来!);getch();void PrScore()/输出成绩char str10;setfillstyle(SOLID_FILL,YELLOW);bar(50,15,220,35);setcolor(6);sprintf(str,score:%d,score);outtextxy(55,20,str);/*/*void Close()/图形结束 getch();closegraph();/*五、测试结果六、结语通过用C语言来编写贪吃蛇游戏程序,让我知道了编写程序要采用模块化思想。要学把一个大的程序分解成许多个小的模块来完成,那么函数调用就非常的重要。在编写程序前心里应非常的清楚程序的构成,首先是预处理部
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 扫黑除恶宣传课件
- 2025年中招考试常出题目及答案
- 徐绽范猛考研英语阅读理解总结
- 2025年赣州上犹中考试题及答案
- 慕课德育原理课件
- 贵州中考模考试卷及答案
- 盐城招生考试题目及答案
- 急性脑卒中护理课件
- 医院技能培训考试题及答案
- 快递转运安全培训课件
- 第1章 数据与统计学-统计学
- GB/T 2059-2000铜及铜合金带材
- GB/T 14456.1-2017绿茶第1部分:基本要求
- 远离电子烟主题班会课件
- 设备维护保养手册
- ZYHZYHC系列自控远红外电焊条烘干炉使用说明书
- 外科学课件:泌尿、男生殖系统外科检查
- 高中政治统编版(2022)必修3(教案)我国法治建设历程(完整文档)
- 市场营销策划(第五版)第08章 促销策划
- 内科学:心律失常
- 美术教学计划(湖南版美术出版社四年级上册)
评论
0/150
提交评论