- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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()
您可能关注的文档
最近下载
- YY0306-2018 热辐射类治疗设备安全专用要求.pdf VIP
- 电力工程项目建设用地指标(风电场)(建标〔2011〕209号).pdf VIP
- 商品混凝土采购组织供应、运输、售后服务方案.docx VIP
- 《合成生物学》课件.pptx VIP
- 《中国文化概况》带翻译版.pdf VIP
- 消除艾滋病、梅毒和乙肝母婴传播项目工作制度及流程(模板).docx
- 2.1.2 认识地球(第2课时 地球仪与经纬网)七年级地理上册课件(湘教版).pptx VIP
- 二年级上册1-8单元看图写话.pdf VIP
- YY/T 0061-2021特定电磁波治疗器.pdf
- 沥青路面旧路改造工程施工方案.docx VIP
文档评论(0)