应用软件开发实践第二阶段实验报告

编辑:阿文时间:2020-06-23 19:28:04
应用软件开发实践第二阶段实验报告,大学计算机学院,分别从游戏原理游戏截图关键算法心得体会介绍了游戏的开发过程,以及处理多线程,实验完成了实验基本要求并增加了一些扩展功能。

***大学计算机学院

***x本科课程报告

课程名称应用软件开发实践

报告时间:******

学生姓名 ***xx

学号 ******

专业 ******

任课教师 ***xx

任课教师评语

任课教师评语(①对课程基础理论的掌握;② 课程知识应用能力评价;③ 评估与课程报告相关的实验、作品和软件的结果;④ 课程学习态度与纪律;⑤ 课程成绩和报告工作量;⑥总体评价和成绩;⑦存在问题等):

成绩任课教师签字:

年月日 本次报告主要是介绍了android编写的连连看程序,分别从游戏原理、游戏截图、关键算法、心得体会介绍了游戏的开发过程,连连看程序中主要是利用对象数组,map将**和二维数组关联起来,以及handler处理多线程,里面用到了搜索算法是广度优先搜索,搜索过程中设置了边界减少了搜索范围,实验完成了实验基本要求并增加了一些扩展功能。

关键词:android;连连看;游戏

目录1 实验目的 1

2 实验背景 1

3实验环境 1

4实验定义 1

6实验结果 2

6.1运行结果 2

6.2目录结构 3

7实验原理 3

7.1实验原理 4

7.2游戏原理 4

8个核心算法和**4

8.1触摸游戏区的处理方法4

8.2以游戏时间为剩余时间开始或继续游戏6

8.4成功连接后的后处理6

8.5游戏初始化 7

8.6消除算法 8

8.6.1零折型 8

8.6.2一折型 10

8.6.3双折11型

9心得体会 12

根据连连看的功能需求,提出一系列技术问题,并进行深入详细剖析之后,给出主要的解决方案,为进一步设计软件、编写**打下基础。这也有助于了解android平台的开发环境和技术。

连连,做为一款休闲小游戏,深受很多人的喜爱。在这个项目中,我们将创建一个在android平台上持续**的游戏,方便用户随时随地享受这个小型休闲游戏。游戏启动之后会进入连连看消除界面,用户点击两个相同的**即可消除,在规定的时间之内消除完所有**则通关,时间结束之后若没有消除完所有的**则提示失败。

软件开发环境:eclipse 3.8 + adt 22.0.1 + android sdk 4.0.3。

软件运行环境:android 4.0.4及以上版本,与4.0.3之前的系统兼容。

android:是一个开放的移动设备操作系统平台,为移动设备提供了一个包含了操作系统、中间件及应用程序的软件叠层架构。

sdk:android sdk 为开发人员使用java 语言编写android 平台下的应用程序提供了必要的工具和api。

应用程序:android 平台搭载了一系列的核心应用程序,如e-mail 客户端、日历、浏览器、**簿。这些应用程序都是用java语言开发的。

项目发展计划:是将项目的某一过程与如何推进项目联系起来的计划。

6.1运行结果

本实验完成的程序可以显示全屏覆盖连续查看模式、逐行分布连续查看模式、逐列分布连续查看模式。总时间为100秒,中间可以暂停,可以刷新**分布,连线遵循0折型、1折型、2折型三种情况进行消除,如果在规定时间内完成消除则胜利,否则失败。

具体需求:

进入游戏之后直接显示连连看消除界面,连续点击两个相同的**,若这两个**能直接相连则消除该**片,当消除到只剩最后一**片的时候,消除该**片即通关会弹出通关提示。

(1) 显示连连看消除画面;

(2) 点击一张**;

(3) 点击另一张相同的**,当该**与之前的**可以直接相连的时候则消除改**片;

(4) 所有**在规定时间之内消除完毕则弹出通关提示;

图1 实验成果截图

6.2目录结构

图2 文件夹目录结构

由于是直接在界面上进行绘制图形,因此不会有button等组件,因此我们在判断是否点击一个按钮的时候是根据点击点的坐标来判断点击点是否在按钮**区域内,若在区域内则表示用户点击了按钮,接下来进行点击事件响应。

7.1实验原理

图3 实验流程图

7.2游戏原理

初始化时通过载入main.xml来载入整体布局,在main.xml中主要完成时间显示、剩余时间显示,以及载入主游戏界面,在主游戏界面中通过图形绘制类来绘制**以及**中的**。

根据点击时的坐标来判断点击了哪张**,并根据记录的信息来判断点击的**是否为同一类**、并判断该**片能否直接相连,若符合以上要求则消除该**。对游戏时间的更新使用一个定时器来进行实时更新。

8.1触摸游戏区的处理方法

private void gameviewtouchdown(motionevent event)

表示之前已经选择了一个

if (this.selected != null)

}8.2以游戏时间为剩余时间开始或继续游戏

private void startgame(int gametime)

重新设置游戏时间

= gametime;

如果游戏的剩余时间等于游戏的总时间,则新游戏将重新开始

if(gametime ==

isplaying=true;

this.timer = new timer();

启动计时器,每1秒发送一条消息

this.timer.schedule(new timertask()

8.4成功连接的后处理

**@param linkinfo连接信息

* @param prepiece 前一个选中方块

* @param currentpiece 当前选择方块

*@param pieces系统中所有剩余的方块

*/private void handlesuccesslink(linkinfo linkinfo, piece prepiece,

piece currentpiece, piece pieces)

{它们可以被连接,让gamepanel处理linkinfo

将gameview中的复选框设置为空

从数组中移除两个对象

pieces[prepiece.getindexx()][prepiece.getindexy()] = null;

pieces[currentpiece.getindexx()][currentpiece.getindexy()] = null;

将选中的方块设置null。

this.selected = null;

手机振动(100毫秒)

this.vibrator.vibrate(100);