欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    C语言贪吃蛇程序设计说明书.doc

    • 资源ID:2384991       资源大小:49KB        全文页数:11页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言贪吃蛇程序设计说明书.doc

    贪吃蛇游戏程序设计说明书题 目:贪吃蛇游戏学 校: 系 别: 专 业 班 级:姓 名: 学 号:指导老师: 日 期:一、 设计题目:贪吃蛇是一款经典的休闲游戏,一条蛇在密闭的围墙内,随机出现一个食物,通过控制方向键操作小蛇不停的朝着食物前进,直到吃掉食物。每吃一个食物,小蛇都会长长一截,随之难度增大;当小蛇头撞到墙或自己时,小蛇死亡。二、 功能设计:本游戏要求实现以下几个功能:(1) 用上、下、左、右键控制游戏区蛇的运动方向,使之吃食而使身体变长;(2) 用户可以调节蛇的运行速度来选择不同的难度;(3) 游戏分多个难度级别;(4) 用户可自选颜色;(5) 记录成绩前五名的游戏玩家;(6) 增加背景音乐;(7) 提高障碍物和游戏级别。三、 程序模块图:贪吃蛇游戏初始化画图模块控制模块设置模块帮助模块墙体蛇身食物移动食物死亡变长成绩等级音效四、 算法流程图:是否否是否是开 始初始化界面和蛇身放置食物获取按键开始运动碰到边界蛇吃到食蛇长大蛇死亡继续结束五、 函数原型与功能1.主函数:void main() 启动程序,触动其他函数。2.初始化:void init () 设置背景框大小、蛇体初始值,随机产生食物。3.随机产生食物:void setfoodcrd() 设置食物生成坐标,0表示食物被吃。4.画食物:void showfood() 用矩形框来画食物5.画蛇:void showsnake() 根据蛇的坐标和节数,循环用矩形框来画蛇。6.蛇移动:void snakemove() 根据按键,重设坐标7.改变蛇的方向:void changeskdir() 响应用户的运动方向8.判断蛇是否死亡:void judgeslod 判断蛇是否碰到自己或墙。9.判断蛇是否吃到食物:void judgefood() 判断是否吃到食物,吃食后变0,蛇增长一节。10.结束游戏:void gameover() 结束话语,并执行下一步。六、 基本代码#include<graphics.h>#include<conio.h>#include<stdio.h>#pragma comment(lib,"Winmm.lib") #include "MyTimer.h"#define SIZEMAX 100 /*蛇最大长度*/#define SPEED 100 /*初始速度*/#define len 20 /*蛇宽度*/ #define lm 10 /*蛇每次移动距离*/#define initlen 600 /*初始化窗口正方形的长度*/#define Min_snakelen 2 /*蛇的最小长度*/typedef struct int x,y;DIR;int snakelen=Min_snakelen; /*蛇的长度*/int isfood=1; /*食物状态*/int isover=0; /*游戏状态*/int ispause=1; /*暂停状态*/int ismusic=1; /*音乐播放状态*/char dir; /*记录蛇运动的方向*/char c='d'DIR snake500,food; /*定义蛇节点和食物的类型*/int speed=SPEED;void drawmap() /*画地图函数*/IMAGE img;char str10;loadimage(&img,"贪吃蛇.jpg"); /*游戏界面*/putimage(0,0,&img);loadimage(&img,"7.jpg"); /*侧栏提示*/putimage(600,0,&img);sprintf(str,"%d",snakelen);setfont(30,0,"宋体");setbkmode(TRANSPARENT); outtextxy(620,10,"操作说明:"); setfont(20,0,"宋体");outtextxy(615,50,"awsd控制方向键");outtextxy(615,80,"p键暂停");outtextxy(615,110,"o键继续");outtextxy(615,200,"esc键退出");outtextxy(615,140,"l键暂停音乐");outtextxy(615,170,"k键继续播放");outtextxy(730,250,str);outtextxy(620,250,"蛇当前长度");void init() /*初始化蛇函数*/int i;IMAGE img;snake0.x=9*len+lm;snake0.y=4*len+lm; loadimage(&img,"1.jpg"); putimage(snake0.x-lm,snake0.y-lm,&img);for(i=1;i<snakelen;i+)snakei.x=len*(9-i)+lm; snakei.y=len*4+lm; loadimage(&img, "2.jpg"); putimage(snakei.x-lm,snakei.y-lm, &img);void showsnake() /*画蛇函数*/int i;IMAGE img; loadimage(&img, "1.jpg"); putimage(snake0.x-lm,snake0.y-lm , &img); loadimage(&img, "2.jpg"); for(i=1;i<snakelen;i+) putimage(snakei.x-lm,snakei.y-lm, &img);void snakemove() /*画动蛇函数*/int i; int mx=snake0.x; int my=snake0.y;switch(dir) case 'a':mx-=len;break;case 'd':mx+=len;break;case 'w':my-=len;break;case 's':my+=len;break;default:break; for(i=snakelen-1;i>=0;i-) snakei+1.x=snakei.x;snakei+1.y=snakei.y; snake0.x=mx;snake0.y=my; showsnake(); int ceshiover() /*检测游戏结束函数*/int i;if(snake0.x<0|snake0.x>30*len-lm|snake0.y<0|snake0.y>30*len-lm)return 1;for(i=1;i<snakelen;i+)if(snake0.x=snakei.x&&snake0.y=snakei.y)return 1;return 0;int foodinsnake() /*检测食物是否在蛇上函数*/for(int i=0;i<snakelen;i+)if(food.x=snakei.x&&food.y=snakei.y)return 1;elsereturn 0;void showfood() /*画食物函数*/IMAGE img; dofood.x=(rand()%30)*len+lm;food.y=(rand()%30)*len+lm;while(foodinsnake(); loadimage(&img, "3.jpg"); putimage(food.x-lm,food.y-lm , &img);isfood=0; void kmusic() if(ismusic=0) mciSendString("pause mymusic",NULL,0,NULL); if(ismusic=1) mciSendString("resume mymusic",NULL,0,NULL);void playbkmusic() /*播放背景音乐函数*/ mciSendString("open 超级玛丽.mp3 alias mymusic", NULL, 0, NULL); mciSendString("play mymusic repeat", NULL, 0, NULL); void playgame() /*玩游戏函数*/ c='d' /蛇开始向右移动isover=0;snakelen=Min_snakelen;dir='d' IMAGE img; MyTimer t; /定义精确延时对象 int T=200; / 延长时间drawmap(); /画游戏地图 init(); /画小蛇初始位置while(!isover) if(ispause) snakemove(); FlushBatchDraw(); /批量绘图 EndBatchDraw(); /结束批量绘图 if(snake0.x=food.x&&snake0.y=food.y) snakelen+; isfood=1; if(isfood) showfood(); if(snakelen<35) T=200-3*snakelen; t.Sleep(T); BeginBatchDraw(); / 开始批量绘图模式,防止闪烁问题 drawmap(); loadimage(&img, "3.jpg");/ 加载食物图片 putimage(food.x-lm,food.y-lm , &img); ; /按键控制 if(kbhit() c=getch(); switch(c)case 'a':if(dir!='d')dir=c; break;case 'd':if(dir!='a') dir=c; break;case 'w':if(dir!='s') dir=c; break;case 's':if(dir!='w') dir=c; break;case 27: exit(0); break; /游戏退出case 'p': ispause=0;break; /p暂停case 'o': ispause=1;break; /o继续游戏case 'l': ismusic=0;break; /l暂停音乐case 'k': ismusic=1;break; /k继续播放default:break;kmusic(); /音乐控制播放/判断游戏结束 if(ceshiover() isover=1; /判断是否重新再来 HWND wnd = GetHWnd(); /获取窗口句柄 if(isover) if (MessageBox(wnd, "游戏结束。n重来一局吗?", "询问", MB_YESNO | MB_ICONQUESTION) = IDYES) playgame(); /递归判断出口 EndBatchDraw(); /结束批量绘图模式void gameover() /游戏结束函数 IMAGE img; loadimage(&img,"结束.jpg"); putimage(0,0,&img);setcolor(BLUE);setfont(30,0,"宋体");settextcolor(YELLOW);outtextxy(280,100,"125042120 郭栋");outtextxy(320,150,"感谢您玩,谢谢");Sleep(2000);void gamebegin() /游戏开始函数 MOUSEMSG m; IMAGE img,img2; mciSendString("open bk.mp3 alias mymusic", NULL, 0, NULL);/打开音乐 mciSendString("play mymusic", NULL, 0, NULL); /播放音乐 loadimage(NULL, "开始.jpg"); putimage(0,0,&img); getimage(&img2,260,250,211,71); settextcolor(BLUE); setfont(70,0,"宋体"); setbkmode(TRANSPARENT); /设置字体背景为透明 outtextxy(260,100,"贪吃蛇"); RECT r = 260,250,470,320; setfont(40,0,"黑体"); setcolor(YELLOW); drawtext("开始游戏", &r, DT_CENTER | DT_VCENTER | DT_SINGLELINE); while(1) m=GetMouseMsg(); /获取鼠标消息 switch(m.uMsg) case WM_MOUSEMOVE : /鼠标移动 if(m.x>260&&m.x<470&&m.y>250&&m.y<320) setfillcolor(RED); fillrectangle(260,250,470,320); drawtext("开始游戏", &r, DT_CENTER | DT_VCENTER | DT_SINGLELINE); else putimage(260,250,&img2); setcolor(YELLOW); drawtext("开始游戏", &r, DT_CENTER | DT_VCENTER | DT_SINGLELINE); break; case WM_LBUTTONDOWN: /鼠标左键按下 if(m.x>260&&m.x<470&&m.y>250&&m.y<320) mciSendString("close mymusic", NULL, 0, NULL); /关闭音乐 playbkmusic(); cleardevice(); playgame(); break; default: break; if(isover=1) break; void main() initgraph(initlen+160,initlen);HWND hWnd=GetHWnd();SetWindowText(hWnd,"贪吃蛇游戏-郭栋"); gamebegin();gameover(); getch();closegraph();

    注意事项

    本文(C语言贪吃蛇程序设计说明书.doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开