ARM课程设计报告 俄罗斯方块.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文档。上传文档
查看更多
ARM课程设计报告 俄罗斯方块

嵌入式系统课程设计报告 设计题目: 简单游戏程序设计(俄罗斯方块) 班 级: 09电信(1)班 姓 名: 陈 文 娟 学 号: 20094081020 指导教师: 叶 希 梅 调试地点: 瑞 樟 8 调试时间: 2012年5月30号 成 绩: PAGE 9 1、设计任务及要求 本实验主要是用arm实验箱实现一个简单的游戏设计,我选择的是设计一个俄罗斯方块小游戏,主要要实现方块的移动、变形、随机出现下一个方块、触屏控制、停止、嵌套、消行、计分等功能。要求:良好的方块形状设计,绘制七种常见的基本图形(方形、长条形、7形、反7形、Z形、反Z形、T形),各个方块要实现它的移动、变形;良好的用户界面,有关分数和等级显示等。 2、总体设计思路及功能描述 2.1、设计思路 整个游戏界面的设计和控制:通过手动描绘,设计一个左边是10X15附有框图的游戏界面。右边为控制和显示的界面,控制自然是绘制按键图案通过触屏控制来实现。显示的内容有下一个、得分、等级。 方块的移动:通过定时器1,改变方块左右移动的地址来实现。 方块的变形:可通过运用三维数组储存7个基本方块形状,采用线性代数转置的思路改变数组的值并设定一个缓冲区储存变形数组,从而达到变形的效果。 方块的碰边处理:可设定一个二维数组储存整个游戏界面的最新状态,有方块为1,没有则为0,并在游戏界面周围填入1,通过方块地址和数组位置的转换判定数组中的值,为0说明可走,为1则不能通过,从而实现碰边处理。 方块的嵌套:与碰边原理相似,可将之前停止在界面上的方块位置对应数组中的值赋1,再判断当前方块每一列的最后一行下是否有方块,实现方块嵌套。 方块的随机出现:当方块到达最后一行或嵌套成功后停止,然后将出现下一个方块,可通过定时器取出末尾三位实现随机性。并在右边显示下一个方块的形状。 消行处理:可通过处理界面的数组判断某一行是否都为1,若为1就执行将上一行赋给下一行,并将第一行赋为0。 分数及等级的计算:当方块到达最后一行或嵌套成功后停止分数加1,当消行成功加10,当分数超过100,等级加1。 2.2 功能描述 左、右、下移动; 方块变形; 随机出现下一个方块; 触屏控制界面(左、右、下、变形、开始、暂停、结束) 左右碰撞检测; 嵌套停止判断 消行 得分等级显示 2.3 程序流程图 图 2-1 程序流程图 3、各部分程序功能及详细说明 3.1游戏界面函数 本实验设计了一个左边是10X15附有框图的游戏界面。右边为控制和显示的界面,分别有显示下一个方块、开始、结束、暂停、变形、向左、向右、向下、得分、等级等,并且大部分都是通过触屏控制达到相应效果。 void InitGame () { U16 i,j; Set_Color(GUI_BLACK); //设定背景颜色API Fill_Rect(0,0,639,479); //填充底色 for(i=0;i10;i++) //10x15格游戏界面 for(j=0;j15;j++) { Set_Color (GUI_BLACK); Draw_VLine(10+i*32, 15, 480);//竖线 Draw_HLine(15+j*30, 10, 10+11*32); //横线 Set_Color (GUI_WHITE); //填充白色 Fill_Rect(10+i*32+1, 15+j*30+1,10+(i+1)*32-1,15+(j+1)*30-1);//填充 } Set_Color(GUI_GREEN); Set_Font (CHINESE_FONT16); Disp_String (CN_start下一个CN_end,9*40-20,27); Disp_String (CN_start得分CN_end,9*40-10,5*40+10); Disp_String (CN_start等级CN_end,13*40-10,5*40+10); Set_Color(GUI_YELLOW); Fill_Rect(14*40-20,20,15*40,60);//开始、结束、暂停 Fill_Rect(14*40-20,80,15*40,120); Fill_Rect(14*40-2

文档评论(0)

133****9031 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档