android智能手机五子棋游戏设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于android的五子棋开发游戏
一、开发背景:
在手机游戏的早期,大多数开发者都是想要玩转设备、学习技巧和快速攻关的狂热分子。但是,随着更多的开发者加入这个行业,手机游戏已经进化成涉及到专业设计师、构造师、开发者、产品经销商、律师、和艺术家在内的主导产品。这是行业走向成熟的必然趋势。尽管在某人的业余时间内要开发和推销简单的游戏更加困难,但是更多的专业商店将为许多人提供更多的就业机会。
从手机软件的平台的种类,游戏玩家的心理,未来移动通信服务终端的发展,3G手机网络对手机软件游戏的影响,还有从J2ME手机游戏开发平台介绍的手机游戏的趋势和未来这种游戏的运营模式,这几方面的内容来看,手机游戏是未来游戏发展的趋势,其移动性、互连性,必定会带来网络游戏的风暴,这就使我们对这一个新兴的领域有了一定的概念,对指导我们建立一个手机软件开发培训的知识结构有一定的帮助,也是我们的一个发展契机。
五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为连珠,英译为Renju,英文称之为Gobang或FIR,亦有连五子、五子连、串珠、五目、五目碰、五格等多种称谓。
五子棋起源于古代中国,发展于日本,风靡于欧洲。对于它与围棋的关系有两种说法,一说早于围棋,早在“尧造围棋”之前,民间就已有五子棋游戏;一说源于围棋,是围棋发展的一个分支。在中国的文化里,倍受人们的青睐。本世纪初五子棋传入欧洲并迅速风靡全欧。通过一系列的变化,使五子棋这一简单的游戏复杂化、规范化,而最终成为今天的职业连珠五子棋,同时也成为一种国际比赛棋。
二、开发环境:
采用eclipse开发工具,在windows 7下进行,基于安卓4.1.1操作系统。环境搭建: (1)JDK安装
(2)Eclipse安装 (3)Android SDK安装 (4)ADT安装创建AVD
三、概述:
程序的基本功能。
1)通过触屏点击欢迎界面上的“关于”可显出“我的五子棋”。
2)通过触屏点击“新游戏”进入游戏主界面。
3)显示一个10*10的五子棋棋盘。
4)在棋盘上面对应位置通过触屏点击下子,棋盘将在相应的位置上显示棋子,并且棋子在纵横交点上。5)如果黑方(白方)连成五个棋子,可以自动判断游戏是否结束,判断胜负,是否黑方或者白方已经胜出,并且通过提示信息黑方(白方)胜利来告知玩家。
6)当玩家还未分出白方和黑方胜利,想下次接着玩,点击返回,下次若需进入上一轮未完成游戏主界面可触屏点击欢迎界面上的继续,可进行上一轮未完成的游戏。
7)触屏点击“退出”则退出游戏。
四、设计思路:
1)需求分析:
手机屏幕尺寸分为物理尺寸和显示分辩率两个概念。物理尺寸是指屏幕的实际大小。大的屏幕同时,要配备搞得分辨率,也就是在这个尺寸下可以显示多少个香酥,显示的像素越多,可以表现的余地自然就越大。现在手机行业发展迅速,不同大小屏幕的手机迅速发展,鉴于不同手机屏幕尺寸不同,在设计游戏的时候必须满足:软件的界面简洁明了,操作简单容易。游戏是需要快速反应的,手机处理器的频率直接要求需要使用简单使用的智能算法。在设计本游戏时考虑到用户需要的是一个操作简便界面简单的游戏软
件。同时提供上一轮未完成的游戏的继续。此外,通过对软件功能的分析,根据玩家的需求,得出还有如下需求信息:
(1)可以重新开始新游戏;
(2)具有提示哪一方胜利的功能;
(3)具有退出游戏的功能。
2)程序设计思想:
设计主要是设计一个能够在android手机上运行的五子棋游戏。根据一般玩手机游戏的流程,玩家一般是先进入一个欢迎界面,进行选择操作后在进入游戏的主界面进行游戏。本游戏软件也将遵循该流程,玩家打开游戏软件后讲先进入欢迎界面,选择开始“新游戏”,然
后进入游戏的主界面开始游戏。进入游戏的主界面后,玩家可进行游戏,游戏过程中,若黑方(白方)胜利,棋盘上会显现对话框“黑方(白方)胜利”,玩家点击“确认”,进行下一轮新游戏。若玩家想接上一轮未完成游戏,可在欢迎界面点击“继续”,进入上一轮未分胜负的的游戏界面。
3)程序总体设计:
根据程序设计思想,得出程序设计模型为:
4)程序功能模块及流程:
根据需求分析和程序设计思想,可以将此手机五子棋游戏分为以下几个功能模块:
a)游戏界面初始化模块:装载界面图片,画出棋盘,清空棋盘,清空游戏落子功能。
b)主循环控制模块:负责下棋顺序,当轮到某方下子是,负责将程序流程转到相应的米快中,主要担当一个调度者的角色。
c)玩家落子模块:即用户在指定落子区域单击后,程序会计算该子的坐标,并且在相应位置画出相应的棋子。
d)胜负判断模块:根据预先设定的规则,判断游戏胜负。
e)继续模块:在上一轮未结束游戏的基础上,继续游戏。
5)程序主要流程
五、系统实现:
在程序设计过程后,能够成功的运行出游戏,但是在设计继续程序时,遇到了写问题,最后通过查阅资料与向他人咨询得以解决程序相关问题。但是有时游戏会崩溃仍未能够解决,在之后要努力解决这一问题。
软件和手机运行截图:
欢迎界面
游戏主界面
“关于”界面
“继续”界面
七、总结:
在本游戏的编写过程中,我遇到了许多的问题。首先要自己先熟悉一下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);