[计算机软件及应用]贪吃蛇c程序设计报告含c代码.docVIP

[计算机软件及应用]贪吃蛇c程序设计报告含c代码.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[计算机软件及应用]贪吃蛇c程序设计报告含c代码

贪吃蛇 一 实验目的 1、 了解AVR ATmega128试验箱的基本构成 2、熟悉键盘的工作原理和设置 3、熟悉点阵的工作原理和设置 4、熟悉液晶显示器的工作原理和设置 5、熟悉语音播放的工作原理和设置 6、熟悉AVR ATmega128的中断功能 7、初步掌握用C语言编程的能力 二 实验内容: 1、设计题目: 根据液晶显示器中的提示,通过对4*4键盘的按键输入,选择游戏的难度,继而控制点阵中点列的移动、长度的增加,只有在规定的时间(30秒、20秒、10秒)内完成任务(吃10个),就可游戏胜利,否则失败。同时在游戏的开始、胜利、失败时都将伴随着声音的输出。 三 硬件原理 1、AVR ATmega128单片机及片外选址电路 2、LDM点阵显示电路 3、LCD液晶显示电路 4、键盘连接电路及语音输出连接电路 四 程序流程图 (1)、主函数 只有在规定的时间内完成“吃下”10个点,游戏才能成功,除了上图中的当第一点碰触到自身点导致失败情况下,在规定的时间内没有完成任务,将会导致中断相应,推出程序运行,最终游戏失败。 (2)、随机点产生函数 void _rand(void) 函数中应用了产生随机点的函数rand(),其头文件必须包括“#includestdlib.h” (3)、第一点的操作函数 void operate(unsigned char in) 产生第一点运动后的在点阵中显示的码值(数组change[]) Leader_i,leader_j分别为第一点相对于点阵中左上角上的点的绝对坐标值,其中每一个点的直径长设为1。 (4)、擦除函数void _eraser(void) 产生被擦除点的码值的反(eraser[]) 由于最后一个点的位置可以由第一个点根据先前操作逆走N步得到,所以eraser_i=leader_i+n1-n2和eraser_j=leader_j+n3-n4得到被擦除点相对于点阵左上点的绝对坐标。由于eraser_i、eraser_j可能为负值,因而为求得最后一个点在点阵中的位置,使其任意加一足够大的能被8整除的正整数(设为800),再与8除求余。即:eraser_i=(eraser_i+800)%8,eraser_j=(eraser_j+800)%8。后经eraser[eraser_i]=~(1eraser_j)求得被擦除点在点阵中显示码值的反码。 (5)、状态保存函数 void status_save(void) 将前一状态与第一点移动后产生的第一点新码值(change[])进行或运算,再与产生的被擦除点显示码值的反(eraser[])进行与运算,得到新的显示状态(除随机点)的码值。 (6)、第一点的操作过程记录函数 void renew(unsigned char in) 根据需要记录第一个点的N个运行过程(设为20) (7)、吃点函数 void eat(unsigned char in) 将记录的随机点显示码值的数组font[]清零,让第一个点再向前操作一步,但不擦除最后一个点,用来实现吃点效果。最后调用产生随机点函数重新产生一随机点。 (8)、结合函数 void join(void) 用于产生要显示的码值。将表示状态的数组status[]与表示随机点的数组font[]进行或运算就可以实现。 (9)、测试函数 unsigned char test(unsigned char *tester) 这个函数在程序中用于两个地方,一是在产生随机点的函数中,如果产生的随机点在“蛇”身上(返回值为2),则重新产生随机点;二是在第一个操作完一步后,判断此时第一点的位置,如果在“蛇”身上(返回值为2),则游戏失败。 (10)、液晶显示器显示函数 void print_message(char *message) 用于显示字符串message。 (11)、函数 void start(void)、void _win(void)、void lose(void) 用于在游戏开始时、胜利时、失败时的液晶显示、语音输出以及LED点阵输出。 (12)、难度选择函数 void choose(void) 根据液晶显示的提示,选择游戏难度等级。在按确认键后开中断。程序流程图如下: (13)、中断程序 SIGNAL(SIG_OVERFLOW3) 用于限制游戏进行的时间,在规定时间内完成游戏任务,则关中断,中断程序不在执行,如果在规定时间没有完成,则调用失败函数(lose()),游戏失败。程序流程图如下: c程序代码: /**************************************************** DOS 游戏,贪吃蛇。编辑器Win-TC,编译器TC 2内核。 作者:樊毅。 时间

文档评论(0)

qiwqpu54 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档