继续",进入上一轮未分胜负的的游戏界面。
3) 程序总体设计:
根据程序设计思想,得出程序设计模型为:
4) 程序功能模块及流程:
根据需求分析和程序设计思想,可以将此手机五子棋游戏分为以下几个功能模块:
a)游戏界面初始化模块:装载界面图片,画出棋盘,清空棋盘,清空游戏落子功能。
b)主循环控制模块:负责下棋顺序,当轮到某方下子是,负责将程序流程转到相应的米快中,主要担当一个调度者的角色。
c)玩家落子模块:即用户在指定落子区域单击后,程序会计算该子的坐标,并且在相应位置画出相应的棋子。
d)胜负判断模块:根据预先设定的规则,判断游戏胜负。
e)继续模块:在上一轮未结束游戏的基础上,继续游戏。
5) 程序主要流程
显示
进行游戏
返回退至欢迎界面
继续进行上一轮游戏
五、系统实现:
在程序设计过程后,能够成功的运行出游戏,但是在设计继续程序时,遇到了写问题,最后通过查阅资料与向他人咨询得以解决程序相关问题。但是有时游戏会崩溃仍未能够解决,在之后要努力解决这一问题。
六、 软件测试:
序号 输入及操作说明 期望结果 评价标准 备注 1 点击程序列表进入程序 进入欢迎界面 测试结果与期望结果一样 2 进入欢迎界面点击新游戏 进入游戏主界面 测试结果与期望结果一样 3 进入游戏主界面进行触屏下棋 可以游戏 测试结果与期望结果一样 4 进入欢迎界面,点击继续 可以继续上一轮未完成游戏 测试结果与期望结果一样 软件和手机运行截图:
欢迎界面
游戏主界面
"关于"界面
"继续"界面
七、 总结:
在本游戏的编写过程中,我遇到了许多的问题。首先要自己先熟悉一下Android的游戏编程,在这方面我遇到了很大的难题。还有就是对五子棋游戏的算法不是很清楚。在编码实现的时候,会出现一些开始完全意料不到的问题,也许这些问题当中,有的是老师讲过的,不过我想大部分还是老师没有讲过,这个时候就是体现出自己解决问题的能力的时候了。在遇到问题时要学会如何去分析错误,再是学会如何去解决掉这个问题。在遇到问题是,不要有害怕困难的情绪,解决问题也是一个不断学习进步的过程,遇到的问题越多,学到的东西也就越多。因此在遇到困难之时,不要轻言放弃,要努力向前解决问题。
八、附录:
主要代码:
Control.java
package com.example.fivechess;
import android.R.integer;
public class Control {
private static Control instance = null;
private enum DIRECTION {
SOUTH, NORTH, EAST, WEST, SOUTH_EAST, SOUTH_WEST, NORTH_EAST, NORTH_WEST
}
private Control() {
}
public static Control getInstance() {
if (instance == null)
instance = new Control();
return instance;
}
public boolean isValid(int row, int col) {
Model model = Model.getInstance();
if (model.getChessAt(row, col) == 0)
return true;
else
return false;
}
public void putChess(int row, int col) {
Model model = Model.getInstance();
MyView view = MyView.getInstance();
if (isValid(row, col)) {
model.setChessAt(row, col, model.currentPlayer);
model.win_flage = isWin(row, col);
if (model.win_flage) {
view.showWin(model.currentPlayer);
} else {
model.switchPlayer();
view.invalidate();
}
}
}
public boolean isWin(int row, int col) {
int e, w, s, n, ne, nw, se, sw;
Model model = Model.getInstance();
int color = model.getChessAt(row, col);
e = getCountDirection(row, col, color, DIRECTION.EAST);
w = getCountDirection(row, col, color, DIRECTION.WEST);
n = getCountDirection(row, col, color, DIRECTION.NORTH);
s = getCountDirection(row, col, color, DIRECTION.SOUTH);
ne = getCountDirection(row, col, color, DIRECTION.NORTH_EAST);
se = getCountDirection(row, col, color, DIRECTION.SOUTH_EAST);
nw = getCountDirection(row, col, color, DIRECTION.NORTH_WEST);
sw = getCountDirection(row, col, color, DIRECTION.SOUTH_WEST);
if (e + w + 1 >= 5)
return
上一篇:
统计学:应用领域的奇葩
下一篇:
猪疥癣病的防治