贪吃蛇游戏设计梁伟解析.docVIP

  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文档。上传文档
查看更多
基 于 D S P 的 贪 吃 蛇 游 戏 设 计 基于DSP的贪吃蛇游戏设计 班 级: 13级7班 学 号 姓 名: 梁 伟 一、实验目的 1.熟练掌握 C6713 的中断结构和对中断的处理过程。 2.熟练掌握 C6713 定时器的控制和使用方法。 3.熟练掌握键盘的使用原理及编程方法。 4.熟练掌握使用C6713DSP的扩展空间控制外围设备信息的方法;掌握蜂鸣器发声原理和音乐发生方法;掌握液晶显示器的显示控制原理及编程方法。 5.掌握C6713的系统自启动设计方法。 6.熟练掌握C语言开发DSP程序的流程及调试方法。 二、实验设备 计算机,ICETEK-C6713-EDU 实验箱,示波器。 三、实验内容 3.1贪吃蛇概述 2设计原理 #include limits.h /* for CHAR_BIT */ #define BITMASK(b) (128 ((b) % CHAR_BIT)) #define BITSLOT(b) ((b) / CHAR_BIT) #define BITSET(a, b) ((a)[BITSLOT(b)] |= BITMASK(b)) #define BITCLEAR(a, b) ((a)[BITSLOT(b)] = ~BITMASK(b)) #define BITTEST(a, b) ((a)[BITSLOT(b)] BITMASK(b)) #define BITNSLOTS(nb) ((nb + CHAR_BIT - 1) / CHAR_BIT) //nb从1开始,nb-1从0开始,符合一个字节里的8位在一个CHAR_BIT里的要求。 + CHAR_BIT 是为了符合C的数组第一个元素都是从0开始的要求。 union { char bitarray[BITNSLOTS(16*32)]; unsigned char LCDarray[4*16]; }Ground; //游戏背景 int SnakeBody[SnakeMaxLong]; //蛇身结点 memset函数 void?*?memset?(void?*?p, int?c, size_t?n); 其中,指针p为所操作的内存空间的首地址,c为每个字节所赋的值,n为所操作内存空间的字节长度,也就是内存被赋值为c的字节数。 在使用memset时经常要注意的它是以字节为单位进行赋值的,所赋值的范围是0x00~0xFF。 3.2.2食物的产生设置 在C语言里所提供的随机数发生器的用法:现在的C编译器都提供了一个基于ANSI标准的伪随机数发生器函数,用来生成随机数,就是rand()和srand()函数。这二个函数的工作过程如下: 1) 首先给srand()提供一个种子,它是一个unsigned int类型,其取值范围从0~max,max由系统决定; 2) 然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之间) 3) 根据需要多次调用rand(),从而不间断地得到新的随机数; 4) 无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果。 rand()是按照指定顺序生成随机数的,所以每次生成的随机数都是一致的。如果想每次产生的随机数不同,则需要函数void srand(unsigned seeed) (来自stdlib.h)为随机数生成器播散种子。如果在调用rand()前不执行srand(),则默认产生的种子是1,即执行srand(1)和不执行srand的结果是一样的。 至于种子怎么选,一般常用的方法是利用time函数(在头文件time.h)来获得系统时间,它的返回值为从1970年1月1日零时零分零秒到目前为止所经过秒数,然后将time_t型数据转化为unsigned型再传给srand函数,即srand((unsigned) time(NULL)) 这里注意time函数的调用,它的函数声明如下: time_t time(time_t * timer) 既可以通过函数参数timer返回现在的时间,也可以通过函数的返回值返回现在的时间,所以这里srand用到的是返回值返回的时间,用不到参数返回时间,故使用空指针作为参数。 如果想产生其他范围的随机数,例如[a,b],则需要利用求余运算(%): rand()%(b-a)+a 如果是产生[0,1]范围内的浮点型随机数,则使用除法运算(/): (double)rand()/RAND_MAX void food()

文档评论(0)

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

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

1亿VIP精品文档

相关文档