基于C语言的小蛇历险记.docVIP

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
小蛇历险记 PAGE 9 九江学院 程序设计论文 ——小蛇历险记 班级:信A0611 姓名:李波 学号:25 专业:计算机科学与技术 2008-11-19 游戏来历: 蛇引诱夏娃吃了苹果之后,就被贬为毒虫,阴险的象征。 而蛇吃东西是整只动物吞进去的,大概在文艺复兴的时候(好象是那个时候但是不确定) 就有人发明的一种游戏,是现在贪吃蛇的前身。后来慢慢的发展就变成了今天的贪吃蛇了。 程序需求: 小蛇历险记又名贪吃蛇,蛇吞蛋。该游戏已经成为一款经典游戏,也是游戏程序设计的一道基本训练项目。据不完全统计,现在的孩童90%以上都接触过这款游戏,甚至成年人对此游戏热情依然不减。所以可以说这款游戏是最受欢迎的游戏之一,与俄罗斯方块一样广为人知。 Tc,C++,Jave等各种设计语言都能设计出这个游戏。这里只介绍怎样用Tc设计这款游戏。(由于游戏界面特殊,不能截图,请原谅) 游戏思想: 该游戏只要蛇头接触到食物就会增加分数,一个食物为10分。 该游戏有三种方式结束: 直接按下结束键“ESC”; 蛇头碰到墙壁; 蛇头撞到身子; 当发生以上三种情况时,游戏结束,弹出结束画面并退出程序。 该游戏程序关键在于表示蛇的图形及蛇的移动。用一个小矩形块表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用俩节表示。移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现与消失也是画矩形块和覆盖矩形块。 定义函数、常量、结构体等: 定义两个结构体:食物与蛇。他们分别表示为: 食物的结构体: 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; 另外 score 表示得分,初始值设为0, i 表示坐标, key 表示按键, gamespeed 为游戏速度, void Init(void); 为图形驱动 void Close(void); 为图形结束 void DrawK(void); 为开始画面 void GameOver(void); 为结束游戏 void GamePlay(void); 为玩游戏具体过程 void PrScore(void); 为输出成绩 游戏设计: 开始画面 左上角坐标为(50,40),右下角坐标为(610,460)的围墙。 void DrawK(void) { setcolor(11); setlinestyle(SOLID_LINE,0,THICK_WIDTH); /*设置线型*/ for(i=50;i=600;i+=10) /*画围墙*/ { rectangle(i,40,i+10,49); /*上边*/ rectangle(i,451,i+10,460); /*下边*/ } for(i=40;i=450;i+=10) { rectangle(50,i,59,i+10); /*左边*/ rectangle(601,i,610,i+10); /*右边*/ } } 游戏的新的食物要随机出现,所以要用到随机发生器函数randomize(); 事物food.yes值为1表示需要出现新食物,0表示已经存在食物; 生命snake.life为0表示活着; snake.node为蛇的节数,初始设为3; PrScore()为输出分数函数; 为了让游戏能重复玩,用到循环函数while(1); 为了在没有按键的情况下,蛇自己移动身体,用到while(!kbhit()); 当需要出现新的事物时: if(food.yes==1) /*需要出现新食物*/ { food.x=rand()%400+60; food.y=rand

您可能关注的文档

文档评论(0)

机械中的AI混子 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档