ImageVerifierCode 换一换
格式:DOC , 页数:26 ,大小:2.40MB ,
资源ID:2076439      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/2076439.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     留言反馈    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(嵌入式软件开发课程设计-俄罗斯方块游戏.doc)为本站上传会员【w****g】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

嵌入式软件开发课程设计-俄罗斯方块游戏.doc

1、_ 淮 海 工 学 院 计算机工程学院课程设计报告设计名称: 嵌入式软件课程设计 姓 名: 学 号: 专业班级: 系 (院): 计算机工程学院 设计时间: 设计地点: 硬件综合室 成绩:成绩指导教师评语:评语 签名: 2015年1 月 日课 程 设 计 说 明 书1课程设计题目:基于Android环境的俄罗斯方块游戏设计2课程设计内容:俄罗斯方块是家喻户晓的益智小游戏,它由俄罗斯人阿列克谢帕基特诺夫(Alexey Pazhitnov)在1984年6月利用空暇时间编写的游戏程序,故此得名。俄罗斯方块的基本规则是移动、旋转和摆放游戏随机产生的各种方块,使之排列成完整的一行或多行并且消除得分。它看似

2、简单却变化无穷,俄罗斯方块上手极其简单,且游戏过程变化无穷,作为游戏本身很有魅力,但是要熟练掌握其中的操作和摆放技巧,难度却不低。此软件给用户提供了一个展现自己高超技艺的场所,在这里,它不仅放松自己,还能感受到游戏中的乐趣。游戏区域会从顶部不断落下8种下坠物的一种,游戏区域右上角有一个区域可以显示下一个下坠物的形状,玩家可以控制下坠物移动、旋转和一键到底,通过玩家的操作,下坠物在游戏区域以“摆积木”的形式出现。下坠物在一行或多行堆满后就可以自动消除,消行后会得到相应的分数,如果当前下坠物堆积至窗口顶端,则游戏结束。 3课程设计目的:嵌入式系统的教学可以分为课堂理论教学、实验教学和课程设计三个层

3、面。这三个层面的目标有所不同。理论学习的主要目标是掌握嵌入式系统的一般原理,例如实时调度策略、自动控制算法等;实验教学的主要目的是掌握嵌入式系统的主要开发流程和基本方法,例如开发工具链的使用、小型应用开发等;课程设计的主要目的是通过实际的嵌入式应用系统开发实例掌握嵌入式系统设计和开发的技能和专门知识,积累实践和工程经验。 课 程 设 计 说 明 书4课程设计要求:开发一个简单的俄罗斯方块游戏,并达到以下要求:1、开始游戏随机产生方块并自动下落。右上角2*2预示框显示即将出现的图形;2、按“|”键可以暂停游戏,按”GO”键开始游戏;3、点击屏幕变换方块角度,触屏向左(右)实现左(右)移,向下点击

4、加速下移;4、系统能够正确判断是否满行,并对已满的行实现消行并加分。5设计详细说明(1) 总体设计思路及算法描述(1)方块类:每个方块都有自己的ID、形状、颜色。每个方块都限定在4*4的矩形区域内变幻形状。以此矩形区域的左上方端点为坐标移动。在方块类中定义多个私有数组,将每种ID的方块的形状数据存储好,这样产生一个方块时只需要提供其ID即可。移动:在指定的游戏区域中移动,包括向左、右、下移动。以一个单元为单位。触屏向左(右)轻微移动实现左(右)移一格,触屏向左(右)长移实现左(右)移到最左(右)端,触屏向下轻微移动加速下移一格,触屏向下长移加速下移至底端。如果可以移动,则修改参考点的位置,并在

5、指定的游戏区域中重新填充自己,返回是否移动成功的信息。旋转:为了处理方块的旋转,我们不能只记录提供的8中方块形状,而应该把它们旋转后产生的每种形状都认为是一种不同的方块。这时候我们只处理一个方向的旋转,即顺时针旋转方式。然后在指定的区域中重新填充自己。(2)游戏区域类:可以用一个二维数组方便的实现。状态:游戏未开始;游戏已开始;游戏结束。方块落地:先执行清行操作,获得活动方块占用了哪些行的信息,然后逐行进行扫描:对每一行,检查其10列单元格是否都已经被填充,如果没有,则继续检查下一行,如果是,则将该行以上的游戏区域整体下移一行,并在最上面一行填充一行空格。执行完清行操作后,要产生下一个方块,方

6、块类似于“开始”命令中的步骤,此时要把活动方块指定为新产生的方块,而且还有检查新产生的方块是否能成功填充,如果填充失败,则游戏结束。课 程 设 计 说 明 书 5设计详细说明 续1(2) 硬件原理图及相关说明Android 有丰富的功能,因此很容易与桌面操作系统混淆。Android 是一个分层的环境,构建在 Linux 内核的基础上,它包括丰富的功能。UI 子系统包括:窗口,视图。用于显示一些常见组件(例如编辑框、列表和下拉列表)的小部件。Android 包括一个构建在 WebKit 基础上的可嵌入浏览器,iPhone 的 Mobile Safari 浏览器同样也是以 WebKit 为基础。A

7、ndroid 提供多种连接选项,包括 WiFi、蓝牙和通过蜂窝(cellular)连接的无线数据传输(例如 GPRS、EDGE 和 3G)。Android 应用程序中一项流行的技术是链接到 Google 地图,以便在应用程序中显示地址。Android 软件栈还提供对基于位置的服务(例如 GPS)和加速计的支持,不过并不是所有的 Android 设备都配备了必需的硬件。另外还有摄像支持。过去,移动应用程序努力向桌面应用程序看齐的两个领域分别是图形/媒体和数据存储方法。Android 通过提供对 2D 和 3D 图形的内置支持,包括 OpenGL 库,解决了图形方面的挑战。由于 Android 平

8、台包括流行的开源 SQLite 数据库,因此缓解了数据存储的负担。应用程序架构。如前所述,Android 运行在 Linux 内核上。Android 应用程序是用 Java 编程语言编写的,它们在一个虚拟机(VM)中运行。需要注意的是,这个 VM 并非您想象中的 JVM,而是 Dalvik Virtual Machine,这是一种开源技术。每个 Android 应用程序都在 Dalvik VM 的一个实例中运行,这个实例驻留在一个由 Linux 内核管理的进程中。(图1)课 程 设 计 说 明 书5设计详细说明 续2(3) 软件流程图及其说明 (图2) 1游戏方块控制功能 2游戏显示更新功能

9、3游戏速度更新功能 4游戏积分等级功能 5游戏规则 (图3) (图4)课 程 设 计 说 明 书5设计详细说明 续3(4) 功能模块设计说明 我主要负责游戏的形状视图以及各种方块的形状定义a.俄罗斯方块中的“山”型:在这个4*4的方块中,定义一个 (图4.1)二维数组,通过设置里面的小正方形的颜色来得到对应的图形,通过设置data02,data11,data12,data13从而得到如上图形,并设置成绿色。其具体的实现代码如下:data02.setSolid(true);data02.setColor(COLOR);data11.setSolid(true);data11.setColor(C

10、OLOR);data12.setSolid(true);data12.setColor(COLOR);data13.setSolid(true);data13.setColor(COLOR);同理可以得出“山”型的另外三种形状b. 俄罗斯方块中的“直线”型在这个4*4的方块中,定义一个 (图4.2)二维数组,通过设置里面的小正方形的颜色来得到对应的图形,通过设置data00,data01,data02,data33从而得到如上图形,并设置成蓝色。其具体的实现代码如下 :data00.setSolid(true); data00.setColor(COLOR); data01.setSolid(

11、true); data01.setColor(COLOR); data02.setSolid(true); data02.setColor(COLOR); data03.setSolid(true); data03.setColor(COLOR);同理可以得出“直线”型的另外一种形状c. 俄罗斯方块中的“N”型在这个4*4的方块中,定义一个 (图4.3)二维数组,通过设置里面的小正方形的颜色来得到对应的图形,通过设置data02,data11,data12,data21从而得到如上图形,并设置成粉红色。课 程 设 计 说 明 书5设计详细说明 续4其具体的实现代码如下 :data = getE

12、mptyShape(); data02.setSolid(true); data02.setColor(COLOR); data11.setSolid(true); data11.setColor(COLOR); data12.setSolid(true); data12.setColor(COLOR); data21.setSolid(true);data21.setColor(COLOR);同理可以得出“N”型的另外一种形状d. 俄罗斯方块中的“反N”型在这个4*4的方块中,定义一个 (图4.4)二维数组,通过设置里面的小正方形的颜色来得到对应的图形,通过设置data01,data11,d

13、ata12,data22从而得到如上图形,并设置成浅绿色。其具体的实现代码如下 :data01.setSolid(true); data01.setColor(COLOR); data11.setSolid(true); data11.setColor(COLOR); data12.setSolid(true); data12.setColor(COLOR); data22.setSolid(true); data22.setColor(COLOR);同理可以得出“反N”型的另外一种形状e. 俄罗斯方块中的“左拐杖”型在这个4*4的方块中,定义一个 (图4.5)二维数组,通过设置里面的小正方形

14、的颜色来得到对应的图形,通过设置data11,data12,data22,data32从而得到如上图形,并设置成灰色。其具体的实现代码如下 : data11.setSolid(true); data11.setColor(COLOR); data12.setSolid(true); data12.setColor(COLOR); data22.setSolid(true); data22.setColor(COLOR); data32.setSolid(true); data32.setColor(COLOR); 同理可以得出“左拐杖”型的另外三种形状课 程 设 计 说 明 书5设计详细说明

15、续5f. 俄罗斯方块中的“右拐杖”型在这个4*4的方块中,定义一个 (图4.6)二维数组,通过设置里面的小正方形的颜色来得到对应的图形,通过设置data11,data12,data21,data31从而得到如上图形,并设置成红色。其具体的实现代码如下 : data = getEmptyShape(); data11.setSolid(true); data11.setColor(COLOR); data12.setSolid(true); data12.setColor(COLOR); data21.setSolid(true); data21.setColor(COLOR); data31.

16、setSolid(true); data31.setColor(COLOR); 同理可以得出“右拐杖”型的另外三种形状g. 俄罗斯方块中的“田”型在这个4*4的方块中,定义一个 (图4.7)二维数组,通过设置里面的小正方形的颜色来得到对应的图形,通过设置data01,data02,data11,data12从而得到如上图形,并设置成黄色。其具体的实现代码如下 : data01.setSolid(true); data01.setColor(COLOR); data02.setSolid(true); data02.setColor(COLOR); data11.setSolid(true);

17、data11.setColor(COLOR); data12.setSolid(true); data12.setColor(COLOR); h. 俄罗斯方块中的“点”型在这个4*4的方块中,定义一个 (图4.8)二维数组,通过设置里面的小正方形的颜色来得到对应的图形,通过设置data02,从而得到如上图形,并设置成灰色。其具体的实现代码如下 : data02.setSolid(true); data02.setColor(COLOR); 课 程 设 计 说 明 书5设计详细说明 续6(5) 调试说明由于我主要负责游戏的形状视图,对界面设计和编程,在编程过程中,如何实现对界面的设计,遇到了很多

18、问题,例如,怎么把屏幕分成20*10的小方格,开始尝试了很多方法,最终通过设置若干条间隙来实现此布局,正如开始时的界面:(图5.1)然后关于如何实现8种方块的形状也遇到了一些问题,怎样把8种形状表示出来,主要通过定义小方块的颜色来实现,用不同的颜色来表示小方块,定义一个二维的数组,然后把小方块定义出来,并且附上不同的颜色,这样就能够区分开来了,而且这样还能够很容易的实现小方块的变形以及下降,从而为后面的功能实现提供了可行的措施,下图是其代码的声明: (图5.2)课 程 设 计 说 明 书5设计详细说明 续7根据调试后,能够正确的运行,如下图所示:(图5.3)最后关于菜单的设计,一个好的嵌入式软

19、件,要有其好的说明,我主要设计了四个菜单,分别是排行榜,游戏操作,关于作者,以及退出。其界面如图所示: (图5.4)课 程 设 计 说 明 书5设计详细说明 续8其中排行榜里有分数.日期,时间,玩家姓名等信息,如下图所示:(图5.5)游戏操作里面有俄罗斯方块的游戏说明,如下图所示:(图5.6)课 程 设 计 说 明 书5设计详细说明 续9最后是关于作者的显示内容,如下图所示:(图5.7)(6) 用户说明(1)开始游戏随机产生方块并自动下落。右上角2*2预示框显示即将出现的图形;(2)按“|”键可以暂停游戏,按”GO”键开始游戏;(3)点击屏幕变换方块角度,触屏向左(右)轻微移动实现左(右)移一

20、格,触屏向左(右)长移实现左(右)移到最左(右)端,触屏向下轻微移动加速下移一格,触屏向下长移加速下移至底端;(4)系统能够正确判断是否满行,并对已满的行实现消行并加分。同时消除一行时得一分,同时消除二行时得三分,同时消除三行时得六分,同时消除四行时得十分。(5)游戏升级:每得50分,游戏升一级,方块下降速度增加。(6)选择菜单 a游戏操作b退出 c作者 d 排行榜:游戏结束时分数,玩家姓名,IP号和日期将记录进排行榜课 程 设 计 说 明 书6程序代码 Bar.java /直线型的源代码package com.ding.shape;import android.graphics.Color;

21、/长棒形状的设置public class Bar extends ShapeAbstract private static final long serialVersionUID = -7974219679616324149L;/序列号的时候,被序列化的类要有一个唯一标记。 private final static int COLOR = Color.BLUE;设置颜色为蓝色 Rectangle data = null; /矩形数组/设置直线横条 data = getEmptyShape(); data00.setSolid(true); data00.setColor(COLOR); dat

22、a01.setSolid(true); data01.setColor(COLOR); data02.setSolid(true); data02.setColor(COLOR); data03.setSolid(true); data03.setColor(COLOR); m_shapes.add(data);/设置直线竖条 data = getEmptyShape(); data01.setSolid(true); data01.setColor(COLOR); data11.setSolid(true); data11.setColor(COLOR); data21.setSolid(t

23、rue); data21.setColor(COLOR); data31.setSolid(true); data31.setColor(COLOR); m_shapes.add(data); public String toString() return Bar; 课 程 设 计 说 明 书6程序代码 续1Hill.java /”山“型源代码package com.ding.shape;import android.graphics.Color;public class Hill extends ShapeAbstract private static final long serialVe

24、rsionUID = 1005482779396338610L;唯一的序列号 private final static int COLOR = Color.GREEN;设置颜色为绿色 Rectangle data = null; data = getEmptyShape(); data02.setSolid(true); data02.setColor(COLOR); data11.setSolid(true); data11.setColor(COLOR); data12.setSolid(true); data12.setColor(COLOR); data13.setSolid(true

25、); data13.setColor(COLOR); m_shapes.add(data); data = getEmptyShape(); data02.setSolid(true); data02.setColor(COLOR); data12.setSolid(true); data12.setColor(COLOR); data22.setSolid(true); data22.setColor(COLOR); data13.setSolid(true);data13.setColor(COLOR);m_shapes.add(data); data = getEmptyShape();

26、 data11.setSolid(true); data11.setColor(COLOR); data12.setSolid(true); data12.setColor(COLOR); data13.setSolid(true); data13.setColor(COLOR); data22.setSolid(true);data22.setColor(COLOR); 课 程 设 计 说 明 书6程序代码 续2m_shapes.add(data); data = getEmptyShape(); data02.setSolid(true); data02.setColor(COLOR);

27、data12.setSolid(true); data12.setColor(COLOR); data22.setSolid(true); data22.setColor(COLOR); data11.setSolid(true); data11.setColor(COLOR); m_shapes.add(data); public String toString() return Hill; Square.java /田字型源代码package com.ding.shape;import android.graphics.Color;public class Square extends S

28、hapeAbstract private static final long serialVersionUID = 3870772549631600871L;/唯一的序列号 private final static int COLOR = Color.YELLOW;设置颜色为黄色 Rectangle data = getEmptyShape(); data01.setSolid(true); data01.setColor(COLOR); data02.setSolid(true); data02.setColor(COLOR); data11.setSolid(true); data11.s

29、etColor(COLOR); data12.setSolid(true); data12.setColor(COLOR); m_shapes.add(data); public String toString() return Square; 课 程 设 计 说 明 书6程序代码 续3ShapeView.javapackage com.ding.tetris;import com.ding.shape.Rectangle;import com.ding.shape.Shape;import android.content.Context;import android.graphics.Can

30、vas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Rect;import android.util.AttributeSet;import android.view.View;public class ShapeView extends View private int m_rectW; /矩形的宽 private int m_rectH; /矩形的高 private int m_gap = 1; /间隙 protected Rectangle m_data; /构造方

31、法 public ShapeView(Context context) super(context); /构造方法 public ShapeView(Context context, AttributeSet as) super(context, as); /设置形状 public void setShape(Rectangle data) m_data = data; /设置矩形宽度 public void setRectWidth(int w) m_rectW = w; 课 程 设 计 说 明 书6程序代码 续4 /读取矩形宽度 public int getRectWidth() retu

32、rn m_rectW; /设置矩形高度 public void setRectHeight(int h) m_rectH = h; /读取矩形高度 public int getRectHeight() return m_rectH; /设置间隙 public void setGap(int gap) m_gap = gap; protected void onDraw(Canvas c) /设置整个背景形状 if (m_data != null) int w = m_data00.getWidth(); int h = m_data00.getHeight(); if (w = 0 | h =

33、 0) int totalW = getWidth(); int totalH = getHeight(); w = totalW / m_data0.length; h = totalH / m_data.length; if (w h) w = h; else h = w; totalW = w * m_data0.length; totalH = h * m_data.length; setMeasuredDimension(totalW, totalH);/设置当前view大小 课 程 设 计 说 明 书6程序代码 续5 for (int i = 0; i m_data.length; i+) Rectangle row = m_datai; for (int j = 0; j row.length; j+) Rectangle tempRect = rowj; int left = w * j; int top = h * i; int right = left + w - m_gap; int bottom = top + h - m_gap; Rect tempR = new Rect(left, top, right, bottom); Paint p = new Paint(); p.setColor(tempRect.getColor();

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服