Android五子棋游戏综合程序设计

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

实验项目名称实验七、 Android五子棋综合程序设计

一、实验目的

通过进行一个较为完整的Android应用程序开发,学习综合运用课程所学的相关Android开发知识的,进行移动软件设计的相关能力。在模拟软件开发的过程中,掌握从问题发现、系统分析、系统规划到代码实现中每一步所要做的工作。掌握实际软件开发的过程和方法。

二、主要仪器设备、试剂或材料

微型计算机;JDK、eclipse、ADT、Android SDK等软件包

三、实验内容,

本次设计主要是设计一个能够在 Android 手机上运行的五子棋游戏。根据一般玩手机游戏的流程,玩家一般是先进入一个欢迎界面,进行选择操作后再进入游戏的主界面开始游戏。本游戏软件也将遵循该流程,玩家打开游戏软件后将先进入欢迎界面,选择游戏模式,然后进入游戏的主界面开始游戏。进入游戏的主界面后,系统将根据玩家所选的游戏模式给玩家设置对手玩家。游戏过程中,棋盘上方的提示信息会提示玩家轮到哪一方下子,玩家也可以进行悔棋、认输等操作。

四、程序设计思路、运行及及结果分析

(1)设计思路

此手机五子棋游戏分为以下几个功能模块:游戏界面初始化模块:装载界面图片,画出棋,盘清空盘,清空棋游戏双方落子集合等等功能。

主循环控制模块:负责控制下棋顺序,当轮到某方下子时,负责将程序流程转

到相应的模块中,主要担当一个调度者的角色。

玩家落子模块:即用户在指定落子区域单击后,程序会计算该子的坐标,并且在

相应位置画出相应的棋子。

分析盘面得出最佳下子位置模块:是本次设计的核心部分,即人工智能模块。

电脑落子模块:在分析出来的最优位置上画出相应的棋子。

胜负判断模块:根据预先设定的规则,判断游戏胜负。

悔棋功能模块:通过点击悔棋按钮可以进行悔棋。

要求重新开始功能模块:通过按下键盘上的向下键即可

(2)运行及结果分析

①欢迎页面

②人人对战

③人人对战胜利

④按下程序退出菜单

第一步:考虑到系统的运行效率,根据平常下棋的经验,手机下的第一步子不需要经过复杂的分析计算。如果人类玩家下的第一步子是落在棋盘边界上时,则手机玩家的第一步子将落在棋盘的正中央;否则,手机玩家的第一步子将在紧挨着人类玩家第一步子的左边位置落下。

第二步:为了缩短系统搜索分析时间,防止手机玩家每下一步棋都要将整个棋盘上所有的空白点都分析一次,本设计将设计一个函数计算搜索范围。然后根据搜索范围进行第一次搜索分析,排除不在搜索范围之内的空白点、不可能连成五子即不可能胜利的点、以及活1,半活2点。搜索游戏双方有没有哪方即将胜利,即双方有没有成五或者可不可以制造出活4。

第三步:对第一次分析的结果进行再次分析。找出双方可以制造出活4的点的位置,如果没有的话,就分别整理出双方可以制造出活3的点的位置,半活4的点的位置,双活3的点的位置,半活3的点的位置,双活2的点的位置,活2的点的位置。

第四步:由前两次的搜索分析得出双方都不可能制造活4,所以只能活3,再没有的话就找半活4,在没有的话就找单活3,双活2等棋型。

五、讨论、心得

五子棋是一种两人对弈的纯策略型棋类游戏,是起源于中国古代的传统黑白棋种之一。发展于日本,流行于欧美。容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。

由于个人能力有限本软件还有很多不如意的问题,比如说:

①两个人可以通过互联网对战,这个还没与实现。

②游戏,有奖有罚才好玩儿,待实现。

③游戏结果记录到数据库或者是文件,待实现。

④用户管理,待实现。

山东轻工业学院实验报告(附页)

六、实验代码

部分代码:

public class GameView extends View {

Context context = null;

int screenWidth,screenHeight;

String message = "";

int row,col;

int stepLength = 30;

int[][] chess = null;

boolean isBlack = true;

boolean canPlay = true;

public GameView(Context context,int screenWidth,int screenHeight) { super(context);

this.context = context;

this.screenWidth = screenWidth;

this.screenHeight = screenHeight;

this.message = "红棋先行";

row = (screenHeight-50)/stepLength+1;

col = (screenWidth-10)/stepLength+1;

chess = new int[row][col];

代码中:

(1)提示轮到哪个玩家:String message = "";

(2)划线的行数和列数:int row,col;

(3) 棋盘每格间距int: stepLength = 30;

(4) 0代表没有棋子,1代表是红棋,2代表绿旗:int[][] chess = null;

部分代码:public boolean onTouchEvent(MotionEvent event) {

if(!canPlay){return false;}

float x = event.getX();

float y = event.getY();

int r = Math.round((y-50)/stepLength);

int c = Math.round((x-10)/stepLength);

if(r<0 || r>row-1 || c<0 || c>col-1){return false;}

if(chess[r][c]!=0){return false;}

if(isBlack){

chess[r][c] = 1;

isBlack = false;

message = "轮到绿棋";

相关文档
最新文档