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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

XXX大学计算机学院XXXX级本科生课程报告

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

报告时间XXXXXX

学生姓名XXXXX

学号XXXXXX

专业XXXXXX

任课教师XXXXX

任课教师评语

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

成绩:任课教师签字:

年月日

摘要

本次报告主要是介绍了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以gameTime作为剩余时间开始或恢复游戏 (6)

8.4成功连接后处理 (6)

8.5游戏初始化 (7)

8.6消除算法 (8)

8.6.1零折型 (8)

8.6.2一折型 (10)

8.6.3二折型 (11)

9心得体会 (12)

1 实验目的

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

2 实验背景

连连看做为一款休闲小游戏,受到很多人的喜爱。本项目就来制作一款Android平台上的连连看游戏,方便用户随时随地享受这款休闲小游戏。游戏启动之后会进入连连看消除界面,用户点击两个相同的图片即可消除,在规定的时间之内消除完所有图片则通关,时间结束之后若没有消除完所有的图片则提示失败。

3实验环境

软件开发环境:Eclipse 3.8 + ADT 22.0.1 + Android SDK 4.0.3。

软件运行环境:Android 4.0.4及以上系统,并兼容4.0.3之前的系统。

4实验定义

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

SDK:Android SDK 为开发人员使用Java 语言编写Android 平台下的应用程序提供了必要的工具和API。

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

项目开发计划:是一种把项目一定过程与项目如何推进连接起来的方案。

6实验结果

6.1运行结果

本次实验完成的连连看程序可以出现全屏幕覆盖连连看模式,隔行分布连连看模式,隔列分布连连看模式。总时间为100秒,中间可以暂停,可以刷新图片分布,连线遵循

0折型、1折型、2折型三种情况进行消除,如果在规定时间内完成消除则胜利,否则失败。

具体需求:

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

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

(2) 点击一张图片;

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

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

图1 实验成果截图

6.2目录结构

图2 文件夹目录结构

7实验原理

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

7.1实验原理

图3 实验流程图

7.2游戏原理

初始化时通过载入main.xml来载入整体布局,在main.xml中主要完成时间显示、剩余时间显示,以及载入主游戏界面,在主游戏界面中通过图形绘制类来绘制表格以及表格中的图片。根据点击时的坐标来判断点击了哪张图片,并根据记录的信息来判断点击的图片是否为同一类图片、并判断该组图片能否直接相连,若符合以上要求则消除该图片。对游戏时间的更新使用一个定时器来进行实时更新。

8核心算法和代码

8.1 触碰游戏区域的处理方法

private void gameViewTouchDown(MotionEvent event)

{

// 获取GameServiceImpl中的Piece[][]数组

Piece[][] pieces = gameService.getPieces();

// 获取用户点击的x座标

float touchX = event.getX();

// 获取用户点击的y座标

float touchY = event.getY();

// 根据用户触碰的座标得到对应的Piece对象

Piece currentPiece = gameService.findPiece(touchX, touchY);

// 如果没有选中任何Piece对象(即鼠标点击的地方没有图片), 不再往下执行

if (currentPiece == null)

return;

// 将gameView中的选中方块设为当前方块

this.gameView.setSelectedPiece(currentPiece);

// 表示之前没有选中任何一个Piece

if (this.selected == null)

{

// 将当前方块设为已选中的方块, 重新将GamePanel绘制, 并不再往下执行

this.selected = currentPiece;

this.gameView.postInvalidate();

return;

}

// 表示之前已经选择了一个

if (this.selected != null)

{

// 在这里就要对currentPiece和prePiece进行判断并进行连接

LinkInfo linkInfo = this.gameService.link(this.selected, currentPiece);

// 两个Piece不可连, linkInfo为null

if (linkInfo == null)

{

// 如果连接不成功, 将当前方块设为选中方块

this.selected = currentPiece;

this.gameView.postInvalidate();

}

else

{

// 处理成功连接

handleSuccessLink(linkInfo, this.selected

, currentPiece, pieces);

}

}

}

相关文档
最新文档