淮海工学院计算机工程学院课程设计报告设计名称:嵌入式软件课程设计姓名:学号:专业班级:系(院):计算机工程学院设计时间:设计地点:硬件综合室5.设计详细说明续1(2)硬件原理图及相关说明Android 有丰富的功能,因此很容易与桌面操作系统混淆。
Android 是一个分层的环境,构建在 Linux 内核的基础上,它包括丰富的功能。
UI 子系统包括:窗口,视图。
用于显示一些常见组件(例如编辑框、列表和下拉列表)的小部件。
Android 包括一个构建在 WebKit 基础上的可嵌入浏览器,iPhone 的 Mobile Safari 浏览器同样也是以 WebKit 为基础。
Android 提供多种连接选项,包括 WiFi、蓝牙和通过蜂窝(cellular)连接的无线数据传输(例如 GPRS、EDGE 和 3G)。
Android 应用程序中一项流行的技术是链接到 Google 地图,以便在应用程序中显示地址。
Android 软件栈还提供对基于位置的服务(例如 GPS)和加速计的支持,不过并不是所有的 Android 设备都配备了必需的硬件。
另外还有摄像支持。
过去,移动应用程序努力向桌面应用程序看齐的两个领域分别是图形/媒体和数据存储方法。
Android 通过提供对2D 和 3D 图形的内置支持,包括 OpenGL 库,解决了图形方面的挑战。
由于 Android 平台包括流行的开源 SQLite 数据库,因此缓解了数据存储的负担。
应用程序架构。
如前所述,Android 运行在 Linux 内核上。
Android 应用程序是用Java 编程语言编写的,它们在一个虚拟机(VM)中运行。
需要注意的是,这个 VM 并非您想象中的 JVM,而是 Dalvik Virtual Machine,这是一种开源技术。
每个 Android 应用程序都在 Dalvik VM 的一个实例中运行,这个实例驻留在一个由 Linux 内核管理的进程中。
(图1)5.设计详细说明续2(3)软件流程图及其说明(图2)1游戏方块控制功能2游戏显示更新功能3游戏速度更新功能4游戏积分等级功能5游戏规则(图3)(图4)5.设计详细说明续3(4)功能模块设计说明我主要负责游戏的形状视图以及各种方块的形状定义a.俄罗斯方块中的“山”型:在这个4*4的方块中,定义一个(图4.1)二维数组,通过设置里面的小正方形的颜色来得到对应的图形,通过设置data[0][2],data[1][1],data[1][2],data[1][3]从而得到如上图形,并设置成绿色。
其具体的实现代码如下:data[0][2].setSolid(true);data[0][2].setColor(COLOR);data[1][1].setSolid(true);data[1][1].setColor(COLOR);data[1][2].setSolid(true);data[1][2].setColor(COLOR);data[1][3].setSolid(true);data[1][3].setColor(COLOR);同理可以得出“山”型的另外三种形状b.俄罗斯方块中的“直线”型在这个4*4的方块中,定义一个(图4.2)二维数组,通过设置里面的小正方形的颜色来得到对应的图形,通过设置data[0][0],data[0][1],data[0][2],data[3][3]从而得到如上图形,并设置成蓝色。
其具体的实现代码如下:data[0][0].setSolid(true);data[0][0].setColor(COLOR);data[0][1].setSolid(true);data[0][1].setColor(COLOR);data[0][2].setSolid(true);data[0][2].setColor(COLOR);data[0][3].setSolid(true);data[0][3].setColor(COLOR);同理可以得出“直线”型的另外一种形状c. 俄罗斯方块中的“N”型在这个4*4的方块中,定义一个(图4.3)二维数组,通过设置里面的小正方形的颜色来得到对应的图形,通过设置data[0][2],data[1][1],data[1][2],data[2][1]从而得到如上图形,并设置成粉红色。
5.设计详细说明续4其具体的实现代码如下:data = getEmptyShape();data[0][2].setSolid(true);data[0][2].setColor(COLOR);data[1][1].setSolid(true);data[1][1].setColor(COLOR);data[1][2].setSolid(true);data[1][2].setColor(COLOR);data[2][1].setSolid(true);data[2][1].setColor(COLOR);同理可以得出“N”型的另外一种形状d.俄罗斯方块中的“反N”型在这个4*4的方块中,定义一个(图4.4)二维数组,通过设置里面的小正方形的颜色来得到对应的图形,通过设置data[0][1],data[1][1],data[1][2],data[2][2]从而得到如上图形,并设置成浅绿色。
其具体的实现代码如下:data[0][1].setSolid(true);data[0][1].setColor(COLOR);data[1][1].setSolid(true);data[1][1].setColor(COLOR);data[1][2].setSolid(true);data[1][2].setColor(COLOR);data[2][2].setSolid(true);data[2][2].setColor(COLOR);同理可以得出“反N”型的另外一种形状e.俄罗斯方块中的“左拐杖”型在这个4*4的方块中,定义一个(图4.5)二维数组,通过设置里面的小正方形的颜色来得到对应的图形,通过设置data[1][1],data[1][2],data[2][2],data[3][2]从而得到如上图形,并设置成灰色。
其具体的实现代码如下:data[1][1].setSolid(true);data[1][1].setColor(COLOR);data[1][2].setSolid(true);data[1][2].setColor(COLOR);data[2][2].setSolid(true);data[2][2].setColor(COLOR);data[3][2].setSolid(true);data[3][2].setColor(COLOR); 同理可以得出“左拐杖”型的另外三种形状5.设计详细说明续5 f. 俄罗斯方块中的“右拐杖”型在这个4*4的方块中,定义一个(图4.6)二维数组,通过设置里面的小正方形的颜色来得到对应的图形,通过设置data[1][1],data[1][2],data[2][1],data[3][1]从而得到如上图形,并设置成红色。
其具体的实现代码如下:data = getEmptyShape();data[1][1].setSolid(true);data[1][1].setColor(COLOR);data[1][2].setSolid(true);data[1][2].setColor(COLOR);data[2][1].setSolid(true);data[2][1].setColor(COLOR);data[3][1].setSolid(true);data[3][1].setColor(COLOR);同理可以得出“右拐杖”型的另外三种形状g.俄罗斯方块中的“田”型在这个4*4的方块中,定义一个(图4.7)二维数组,通过设置里面的小正方形的颜色来得到对应的图形,通过设置data[0][1],data[0][2],data[1][1],data[1][2]从而得到如上图形,并设置成黄色。
其具体的实现代码如下:data[0][1].setSolid(true);data[0][1].setColor(COLOR);data[0][2].setSolid(true);data[0][2].setColor(COLOR);data[1][1].setSolid(true);data[1][1].setColor(COLOR);data[1][2].setSolid(true);data[1][2].setColor(COLOR);h.俄罗斯方块中的“点”型在这个4*4的方块中,定义一个(图4.8)二维数组,通过设置里面的小正方形的颜色来得到对应的图形,通过设置data[0][2],从而得到如上图形,并设置成灰色。
其具体的实现代码如下:data[0][2].setSolid(true);data[0][2].setColor(COLOR);5.设计详细说明续6(5)调试说明由于我主要负责游戏的形状视图,对界面设计和编程,在编程过程中,如何实现对界面的设计,遇到了很多问题,例如,怎么把屏幕分成20*10的小方格,开始尝试了很多方法,最终通过设置若干条间隙来实现此布局,正如开始时的界面:(图5.1)然后关于如何实现8种方块的形状也遇到了一些问题,怎样把8种形状表示出来,主要通过定义小方块的颜色来实现,用不同的颜色来表示小方块,定义一个二维的数组,然后把小方块定义出来,并且附上不同的颜色,这样就能够区分开来了,而且这样还能够很容易的实现小方块的变形以及下降,从而为后面的功能实现提供了可行的措施,下图是其代码的声明:(图5.2)5.设计详细说明续7根据调试后,能够正确的运行,如下图所示:(图5.3)最后关于菜单的设计,一个好的嵌入式软件,要有其好的说明,我主要设计了四个菜单,分别是排行榜,游戏操作,关于作者,以及退出。
其界面如图所示:(图5.4)5.设计详细说明续8其中排行榜里有分数.日期,时间,玩家姓名等信息,如下图所示:(图5.5)游戏操作里面有俄罗斯方块的游戏说明,如下图所示:(图5.6)课程设计说明书班级学号:姓名:日期:课程设计说明书第- 20 - 页共21 页。