Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2207600
  • 博文数量: 436
  • 博客积分: 9833
  • 博客等级: 中将
  • 技术积分: 5558
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-29 10:27
文章存档

2013年(47)

2012年(79)

2011年(192)

2010年(118)

分类:

2011-04-28 00:01:50

次报告

研究题目:Android手机游戏开发

小组成员:李安 李想

本周计划:

“帮助”与“关于”界面的设计与实现。帮助界面的实现 ②关于界面的实现 ③Gameview

一.“帮助”界面HelpView类的实现

*将图片绘制到指定位置

*绘制一个“确定”按钮

1)帮助界面的构造器:

实现功能:先得到activity以及surfaceHolder的引用,然后添加Callback接口的实现并对图片资源进行初始化

2)行为重写的绘制方法:

绘制白色背景,将帮助界面的背景图片绘制到指定位置

3)行为重写的键盘监听方法

当点击“确定”按钮时,需要向activity发送Handler消息通知控制器切换屏幕

二.“关于”界面AboutView的实现

关于界面与帮助界面有一些相似的地方。

实现功能:先得到activity以及surfaceHolder的引用,然后添加Callback接口的实现并对图片资源进行初始化

绘制白色背景,再绘制背景图片

当点击“确定”按钮时,需要向activity发送Handler消息

 

GameView

游戏运行步骤

算法

一.对GameView的成员变量进行介绍

图3 初始化成员变量

二.初始化图片方法init()

初始化游戏中所用到的所有图片。在图片初始化时,会用到Matrix将图片进行缩放,同时在最后调用init2方法来初始化数独数组

图4 初始化所有图片

三.初始化界面方法initView()

对界面的数据进行初始化

图5 初始化界面的数据

步骤:

初始化数独生成器,并得到数独数组——>创建用于存放用户输入数字的数组,并对数组初始化,填充0代表此单元格还没有用户的数字——>创建游戏中默认显示的数字,其算法是从正确答案的数组中随机去掉一部分,将需要去掉的位置用0代替

四.绘画方法onDraw()

该方法主要负责游戏界面的绘制工作,刷帧线程会定时调用该方法进行屏幕刷新

  

图6 绘画方法onDraw()代码

步骤:

将背景设置为黑色——>绘制背景图片(因为图片比较大,所以绘制在屏幕左上角即可填充全屏幕)——>绘制背景小方格——>绘制屏幕下方四个按钮——>根据当前游戏的状态进行不同的绘制:

根据默认灰色图片的大小计算出灰色图片绘制的坐标,因为每个宫之间有一定的距离,所以需要对计算出来的坐标进行调整——>对坐标计算,按坐标绘制用户输入的数字——>计算出点击的单元格坐标,然后绘制被选中的单元格,使玩家知道当前选中的单元格是哪个——>当需要绘制数字键盘时,在指定位置绘制数字键盘

——>绘制屏幕下方的时间(先根据得到的时间算出有多少分钟,若分钟数是个位数,则在计算出的时间前加上0/再计算秒钟)——>根据计算出的数字绘制时间图片

五.数字键盘的绘制方法drawKey()

图7 数字键盘绘制方法drawKey()

步骤:

创建一个空的图片并得到该图片的画布——>将数字键盘的背景绘制到创建的图片上——>按照角度一一将9个数字会知道创建的图片上——>将创建的图片存储到成员变量key_bitmap

六.屏幕监听方法onTouchEvent()

屏幕监听方法

步骤:

得到事件发生的XY坐标——>对游戏界面胜利或失败时的屏幕监听,当玩家胜利或失败后点击屏幕时,会像Activity发送Handler消息——>当游戏界面显示的是“询问玩家是否真正退出”的界面时,会判断玩家单击的是“是”还是“否”进行处理——>其他情况的事件处理方法,根据屏幕事件的类型调用不同的方法来处理屏幕事件。

七.判断结束方法isFinish()

检查屏幕上所有的单元格是否已被填满即可

判断结束方法isFinish()

步骤:

循环检查inputNum.outputNum数组中不为0位置的个数——>当不为0的个数不到81时,说明还没有填满,返回false,否则说明已经填满,返回true

八 .判断输赢方法isWin()

游戏结束后用来判断本次游戏是输是赢

10 判断输赢方法isWin()

步骤:得到用户输入的数字——>检查与正确答案是否相同

九.处理屏幕按下事件的方法mouseDown()

当玩家点击屏幕时,通过onTouchEvent()方法对事件进行捕捉,然后判断事件的类型,调用mouseDown()方法处理屏幕按下事件

 

图11 按下事件方法mouseDown()

步骤:

当数字键盘存在时,判断所点的位置是否在数字键盘上,当点击在数字键盘上时,再判断所点击的数字,并将该数字填入相应的单元格——>计算玩家所点击的位置处于哪个单元格中——>判断点击的位置是否在游戏区域内,只有在区域内才有弹出数字键盘的必要——>当玩家点击的位置在第三宫所在列时,让数字键盘在点击位置的左侧显示,以防数字键盘显示不全。而在前两列时,使数字键盘在点击位置的右侧显示——>判断之前是否已经按过提示按钮,如果按过,则直接将正确答案填入单击处,否则弹出数字键盘 

——>处理“暂停”按钮被按下的事件,只有暂停中和游戏中“暂停”按钮才可用,并实现暂停中和游戏中状态的循环

——>处理“换题” 按钮被按下的事件,游戏时间重新开始计算,然后调用init2方法重新初始化游戏界面

——>处理“放弃” 按钮被按下的事件,在代码中先初始化是否放弃提示的提示图片,然后将状态直接设置为4

——>处理“提示” 按钮被按下的事件,只有在暂停或游戏中才有效,将一个标志位设置成true即可

十.屏幕触控笔抬起事件方法mouseUP()

当按钮被按下时会根据按下按钮的不同绘制不同效果

图12 抬起事件方法mouseUP()

步骤:

判断玩家在哪个按钮处抬起——>将相应按钮的图片改变

十一.线程的创建和摧毁

View创建时被调用,负责相关线程的启动工作

view摧毁时被调用,负责相关线程的释放工作

图13线程的创建和摧毁

下周计划:还有两周就要进行汇报了,我们打算在最后这两周完成后面所有的内容,我们需要查找一些资料,把后面的工作再完善一下,更熟练的掌握其开发的技巧。剩下的内容还是很多的,尽量做到尽善尽美,同时把最终要上交的报告及演讲时的ppt完成。

文件: 第八次报告.pdf
大小: 135KB
下载: 下载
文件: GameView.pdf
大小: 1158KB
下载: 下载

阅读(922) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~