嵌入式软件开发课程设计-俄罗斯方块游戏_第1页
嵌入式软件开发课程设计-俄罗斯方块游戏_第2页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、班级学号:姓名:日期:淮 海 工 学 院 计算机工程学院课程设计报告姓 系 学 成绩:成绩签名:2015年 1 月 日第 - 0 - 页 共 21 页班级学号:姓名:日期:课 程 设 计 说 明 书基于 Android 环境的俄罗斯方块游戏设计 Pazhitnov)在 1984 年 6 月利用空暇时间编写的游戏程序,故此得名。俄罗斯方块的基本规则是移动、旋转和摆放游戏随机产生的各种方块,使之排列成完整的一行或多行并作为游戏本身很有魅力,但是要熟练掌握其中的操作和摆放技巧,难度却不低。此软件给用户提供了一个展现自己高超技艺的场所,在这里,它不仅放松自己,还能感受到游戏中的乐趣。游戏区域会从顶部不

2、断落下 8 种下坠物的一种,游戏区域右上角有一个区域可以显下坠物在游戏区域以“摆积木”的形式出现。下坠物在一行或多行堆满后就可以自动消除,消行后会得到相应的分数,如果当前下坠物堆积至窗口顶端,则游戏结束。嵌入式系统的教学可以分为课堂理论教学、实验教学和课程设计三个层面。这三个层面的目标有所不同。理论学习的主要目标是掌握嵌入式系统的一般原理,例如实时调度策略、自动控制算法等;实验教学的主要目的是掌握嵌入式系统的主要开发流程和基本方法,例如开发工具链的使用、小型应用开发等;课程设计的主要目的是通过实际的嵌入式应用系统开发实例掌握嵌入式系统设计和开发的技能和专门知识,积累实践和工程经验。第 - 1

3、- 页 共 21 页班级学号:姓名:日期:课 程 设 计 说 明 书开发一个简单的俄罗斯方块游戏,并达到以下要求:1、开始游戏随机产生方块并自动下落。右上角 2*2 预示框显示即将出现的图形;2、按“|”键可以暂停游戏,按”GO”键开始游戏;3、点击屏幕变换方块角度,触屏向左(右)实现左(右)移,向下点击加速下移;4、系统能够正确判断是否满行,并对已满的行实现消行并加分。(1)方块类:每个方块都有自己的ID、形状、颜色。每个方块都限定在4*4 的矩形区域内变幻形状。以此矩形区域的左上方端点为坐标移动。在方块类中定 ID 时只需要提供其 ID 即可。移动:在指定的游戏区域中移动,包括向左、右、下

4、移动。以一个单元为单位。触屏向左(右)轻微移动实现左(右)移一格,触屏向左(右)长移实现左(右)移到最左(右)端,触屏向下轻微移动加速下移一格,触屏向下长移加速下移至底端。如果可以移动,则修改参考点的位置,并在指定的游戏区域中重新填充自己,返回是否移动成功的信息。方块的旋转,我们不能只记录提供的 8 中方块形状,而应该把它们旋转后产生的每种形状都认为是一种不同的方块。这时候我们只处理一个方向的旋转,即顺时针旋转方式。然后在指定的区域中重新填充自己。(2)游戏区域类:可以用一个二维数组方便的实现。方块落地:先执行清行操作,获得活动方块占用了哪些行的信息,然后逐行进行扫描:对每一行,检查其10列单

5、元格是否都已经被填充,如果没有,则继续检查下一行,如果是,则将该行以上的游戏区域整体下移一行,并在最上面一行填充一行空格。执行完清行操作后,要产生下一个方块,方块类似于“开始”命令中的步骤,此时要把活动方块指定为新产生的方块,而且还有检查新产生的方块是否能成功填充,如果填充失败,则游戏结束。第 - 2 - 页 共 21 页Android 有丰富的功能,因此很容易与桌面操作系统混淆。Android 是一个分层的环境,构建在Linux 子系统包括:窗口,视图。用于显示一些常见组件(例如编辑框、列表和下拉列表)的小部件。Android 包括一个构建在 WebKit 基础上的可嵌入浏览器, iPhon

6、e 的 MobileSafari 浏览器同样也是以 WebKit 为基础。Android提供多种连接选项,包括 WiFi、 和 应用程序中一项流行的技术是链接到 Google 地图,以便在应用程序中显示地址。Android 软件栈还提供对基于位置的服务(例如 GPS)和加速计的支持,不过并不是所有的 Android 通过提供对2D 和 3D OpenGL Android平台包括流行的开源 SQLite 数据库,因此缓解了数据存储的负担。 运行在 Linux 应用程序是用Java VM 并非您想象中的 DalvikVirtual Android 应用程序都在 Dalvik VM 的一个实例中运行

7、,这个实例驻留在一个由 Linux 内核管理的进程中。(图1)(4) 功能模块设计说明我主要负责游戏的形状视图以及各种方块的形状定义a.俄罗斯方块中的“山”型:二维数组,通过设置里面的小正方形的颜色来得到对应的图形,通过设置data02,data11data12data13从而得到如上图形,并设置成绿色。其具体的实现代码如下:二维数组,通过设置里面的小正方形的颜色来得到对应的图形,通过设置data00,data01data02data33从而得到如上图形,并设置成蓝色。其具体的实现代码如下 :二维数组,通过设置里面的小正方形的颜色来得到对应的图形,通过设置data02,data11data12

8、data21从而得到如上图形,并设置成粉红色。二维数组,通过设置里面的小正方形的颜色来得到对应的图形,通过设置data01,data11data12data22从而得到如上图形,并设置成浅绿色。其具体的实现代码如下 :二维数组,通过设置里面的小正方形的颜色来得到对应的图形,通过设置data11,data12data22data32从而得到如上图形,并设置成灰色。其具体的实现代码如下 :true二维数组,通过设置里面的小正方形的颜色来得到对应的图形,通过设置data11,data12data21data31从而得到如上图形,并设置成红色。其具体的实现代码如下 :二维数组,通过设置里面的小正方形的

9、颜色来得到对应的图形,通过设置data01,data02data11data12从而得到如上图形,并设置成黄色。其具体的实现代码如下 :俄罗斯方块中的“点”型二维数组,通过设置里面的小正方形的颜色来得到对应的图形,通过设置data02,从而得到如上图形,并设置成灰色。true由于我主要负责游戏的形状视图,对界面设计和编程,在编程过程中,如何实现对界面的设计,遇到了很多问题,例如,怎么把屏幕分成20*10 的小方格,开始尝试了很多方法,最终通过设置若干条间隙来实现此布局,正如开始时的界面:然后关于如何实现 8 种方块的形状也遇到了一些问题,怎样把 8 种形状表示出来,然后把小方块定义出来,并且附

10、上不同的颜色,这样就能够区分开来了,而且这样还能够很容易的实现小方块的变形以及下降,从而为后面的功能实现提供了可行的措施,下图是其代码的声明:分别是排行榜,游戏操作,关于作者,以及退出。其界面如图所示:班级学号:姓名:日期:课 程 设 计 说 明 书续 92*2预示框显示即将出现的图形;(2)按“|”键可以暂停游戏,按”GO”键开始游戏;(3)点击屏幕变换方块角度,触屏向左(右)轻微移动实现左(右)移一格,触屏向左(右)长移实现左(右)移到最左(右)端,触屏向下轻微移动加速下移一格,触屏向下长移加速下移至底端;同时消除三行时得六分,同时消除四行时得十分。(5)游戏升级:每得50分,游戏升一级,

11、方块下降速度增加。 a游戏操作b退出 c作者d IP号和日期将记录进排行榜第 - 11 - 页 共21 页班级学号:姓名:日期:课 程 设 计 说 明 书import android.graphics.Color;/长棒形状的设置public class Bar extends ShapeAbstract private static final longserialVersionUID= -7974219679616324149L;/序列号的时候,被序列化的类要有一个唯一标记。COLORdata = getEmptyShape();第 - 12 - 页 共21 页班级学号:姓名:日期:课 程

12、 设 计 说 明 书import android.graphics.Color;public class Hill extends ShapeAbstract serialVersionUID= 1005482779396338610L;唯一的COLORdata = getEmptyShape();data = getEmptyShape();第 - 13 - 页 共21 页班级学号:姓名:日期:课 程 设 计 说 明 书data = getEmptyShape();package com.ding.shape;import android.graphics.Color;public clas

13、s Squareextends ShapeAbstract serialVersionUID= 3870772549631600871L;/唯一的COLOR=Color.YELLOW;设置颜色为黄色Rectangle data = getEmptyShape();data01.setSolid(true);data01.setColor(COLOR);data02.setSolid(true);data02.setColor(COLOR);data11.setSolid(true);data11.setColor(COLOR);data12.setSolid(true);data12.setC

14、olor(COLOR);m_shapes.add(data);第 - 14 - 页 共21 页班级学号:姓名:日期:课 程 设 计 说 明 书ShapeView.javaprotected Rectangle m_data;m_rectW = w;第 - 15 - 页 共21 页班级学号:姓名:日期:课 程 设 计 说 明 书public void setRectHeight(int h) m_rectH = h;setMeasuredDimension(totalW, totalH);/设置当前view大小第 - 16 - 页 共21 页班级学号:姓名:日期:课 程 设 计 说 明 书for

15、 (int i = 0; i m_data.length; 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();Paint p = new Paint();Rect r = new Rect(0, 0, h * m_data0.length -1, w * m_data.length - 1);protected void onMeasure(int widthMeasureSpec,

16、 int heightMeasureSpec)int width = h * m_data0.length;int height = w * m_data.length;setMeasuredDimension(width, height);第 - 17 - 页 共21 页班级学号:姓名:日期:课 程 设 计 说 明 书int totalW = getWidth(); else super.onMeasure(widthMeasureSpec, heightMeasureSpec);for (int i = 0; i m_data.length; i+) rect.setColor(Shape

17、.DEFAULT_COLOR);第 - 18 - 页 共21 页班级学号:姓名:日期:课 程 设 计 说 明 书1杨丰盛. Android应用开发揭秘M. 北京: 机械工业出版社, 2010.12刘新. Java开发技术大全M. 北京: 清华大学出版社, 2009.23李华明. Android游戏编程之从零开始M. 北京: 清华大学出版社, 2011.104吴亚峰, 苏亚光. Android游戏开发大全M. 北京: 人民邮电出版社, 2012.15王世江, 佘志龙, 陈昱勋, 郑名杰. Google Android SDK开发范例大全M.北京: 人民邮电出版社, 2011.116靳岩, 姚尚朗

18、. Android开发入门和实践M. 北京: 人民邮电出版社, 2009.77李刚. 疯狂Android讲义M. 北京: 电子工业出版社, 20098盖索林. Google Android开发入门指导M. 北京: 人民邮电出版社, 20079康德尔. Android 移动应用开发从入门到精通 M. 北京: 人民邮电出版社,2007为期三周的嵌入式软件开发课程设计终于结束了,通过这次课程设计,使我熟悉了嵌入式软件开发的流程和eclipseJava的一特别是对一个安卓工程的结构更加清楚,知道了每个文件夹里对应着什么类型和功能的文件。这次课程设计是分小组进行的,我主要是负责游戏的形状视图以及各种方块的形状定义,所以对页面布局这一块的内容有了更深的理解,还是学到的很多的安卓知识,尤其注意到了安卓和Java通过这次课程设计,发现它们之间还是有很大的不同,通过上网查找资料,也学到了很多,遇到问题,要善于利用互联网,当今是网络的时代,网上有海量的信息,我们在学习中遇到困难要及时上网查阅资料,这样我们才能学到更多的课本之外的知识。这次课程设计也让我知道了,我们学习不

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论