课程设计指导书 用C语言程序制作的小游戏——贪吃蛇.doc

上传人:e****s 文档编号:85471507 上传时间:2023-04-11 格式:DOC 页数:10 大小:34.50KB
返回 下载 相关 举报
课程设计指导书 用C语言程序制作的小游戏——贪吃蛇.doc_第1页
第1页 / 共10页
课程设计指导书 用C语言程序制作的小游戏——贪吃蛇.doc_第2页
第2页 / 共10页
点击查看更多>>
资源描述

《课程设计指导书 用C语言程序制作的小游戏——贪吃蛇.doc》由会员分享,可在线阅读,更多相关《课程设计指导书 用C语言程序制作的小游戏——贪吃蛇.doc(10页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、 计算机技术基础课程设计C语言设计报告题目:用C语言程序制作的小游戏贪吃蛇学院:电气与电子工程学院专业:电气工程及其自动化一、选题背景:我们经常玩的小游戏大多数是用C语言程序设计的。通过学习c语言,我们了解了c语言编程的过程。下面就是利用画图程序编辑设计的。二、设计思想:程序利用了图形库函数、数学函数等来实现程序的运行。蛇、食物和边墙都是运用坐标来表示的。整个游戏程序分为图形驱动、图形结束、开始画面、结束游戏、玩游戏具体过程和输出成绩等几个部分。开 始main()主函数三、流程图 :调用图形库函数图形驱动inpit()开始画面 DrawK(); 玩游戏具体过程GamePlay() 图形结束Cl

2、ose()for循环输出图形 完 成四、源代码:#define N 200#include #include #include #define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011bint i,key;int score=0;/*得分*/int gamespeed=50000;/*游戏速度自己调整*/struct Food int x;/*食物的横坐标*/ int y;/*食物的纵坐标*/ int yes;/*判断是否要出现食物的变量*/food;/*食物的结构体

3、*/struct Snake int xN; int yN; 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();/*图形驱动

4、*/ DrawK();/*开始画面*/ GamePlay();/*玩游戏具体过程*/ Close();/*图形结束*/*图形驱动*/void Init(void) int gd=DETECT,gm; initgraph(&gd,&gm,c:tc); cleardevice();/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/void DrawK(void)/*setbkcolor(LIGHTGREEN);*/ setcolor(11); setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/ for(i=50;i=600

5、;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; /*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*/ switch(snake.direction) case 1:snake.x0+=10;break; case 2: snake.x0-=10;break; case 3: snake.y0-=10

6、;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.x0595|snake.y0455)/*蛇是否撞到墙壁*/ GameOver();/*本次游戏结束*/ snake.life=1; /*蛇死*/if(snake.life=1)/*以上两种判断以后,如果蛇死就跳出内循环,重

7、新开始*/ 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(4)

8、;/*画出蛇*/for(i=0;isnake.node;i+) rectangle(snake.xi,snake.yi,snake.xi+10, snake.yi-10);delay(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; key=bioskey(0

9、);/*接收按键*/ 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; elseif(key=DOWN&snake.direction!=3) snake.direction=4; /*endwhile(1)*/*游戏结束*/

10、void GameOver(void) cleardevice(); PrScore(); setcolor(RED); settextstyle(0,0,4); outtextxy(200,200,GAME OVER); getch();/*输出成绩*/void PrScore(void) char str10; setfillstyle(SOLID_FILL,YELLOW); bar(50,15,220,35); setcolor(6); settextstyle(0,0,2); sprintf(str,score:%d,score); outtextxy(55,20,str);/*图形结

11、束*/void Close(void) getch(); closegraph();五、主要解决问题的方法及技术关键1、主要问题及解决方法:主要调用到,stdio.h,stdlib.h等重要库函数,运用结构体、链表以及结构体等进行编译。2、技术关键 If else、break continue等语句的运用,及绘图函数等函数的应用。食物和围墙坐标的设置。六、设计结果说明1、 设计优点:容易理解,而且操作简单。 并且运用了简单的C语言知识,巩固C语言运用的目的。2、 设计不足: 由于对C语言了解还不够,所以程序的某些地方还有些不足,游戏的趣味性还很不够,而且没有声音,要想效果更加好,还需加以改正。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 工程图纸

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com