目 录
第一章:绪论 1
1.1智能手机与Android系统的发展历程 1
1.1.1 智能手机 1
1.1.2 Android系统基本情况介绍 2
1.2课题现状及应用前景 3
1.2.1 五子棋简介 3
1.2.2 课题现状及应用前景 3
第二章:开发环境的搭建 5
2.1 系统开发环境 5
2.2 系统开发环境的搭建 5
2.2.1 JDK的配置 5
2.2.2 Android开发插件的安装 6
2.2.3 AVD的创建 8
第三章:系统需求分析与概要设计 10
3.1 系统的需求分析 10
3.2 系统的概要设计 10
3.2.1 游戏界面布局 11
3.2.2 人机对战部分的核心算法的开发 12
3.2.3 三种对战模式的胜负判定 12
3.2.4 联机对战部分,机子建立连接和数据接收发送功能的实现。 13
第四章:系统详细设计 14
4.1 游戏界面布局的具体实现 14
4.1.1 棋盘和棋子的描述 15
4.2 人机对战部分的核心算法的开发 17
4.2.1 搜索算法 17
4.2.2 评值算法 19
4.2.3 算法核心类 20
4.3 联网对战模拟器建立连接和数据接收发送功能的实现 30
4.4 五子棋的胜负判定算法 31
第五章:系统运行演示效果 34
5.1 单人对战演示 34
5.2 双人对战演示 36
5.3 联网对战演示 36
第六章:结束语 39
致 谢 40
参考文献 41
附录A 五子棋术语解释 42
附录B 极大极小值算法 43
附录C 胜负判定算法代码 44
第三章:系统需求分析与概要设计
本次设计是基于Android系统的五子棋游戏,作为一款游戏暂且不管他的大小和好坏,拥有一个进行操作的界面是必须的,可以按照规则进行游戏也是必须的,当然一些丰富游戏功能方便用户的举措也是必须的,完成情况如何完全看设计者的功力了,本次论文自然无法和市场上的产品相比但是也有许多令人期待的东西的。
3.1 系统的需求分析

  1. 基于PC的虚拟移动终端环境的搭建:智能终端的操作系统各异,本次设计在PC上虚拟移动终端环境,选择了使用面广、使用者众的Android平台;
  2. 虚拟平台开发环境的选取:智能终端支持的游戏以java居多,我们在虚拟环境中选取J2ME作为开发支持平台,利用java语言进行开发;对java语言支持较好的IDE是Eclipse;
  3. 游戏实现中的资源约束考虑:移动终端由于受其本身资源(主要包括处理器、存储器、网络带宽等)的约束,对应用程序的支持与PC环境差异较大,对数据结构和算法等要求较高。所以有效的算法模型的提取对应用程序的效率至关重要;
  4. 对战功能实现:对战包括人机对战、人人对战和联机对战。
    5、加入声音等个性化的元素,实现退出等功能模块。
    3.2 系统的概要设计
    在设计游戏的过程中,首先调用一个开始欢迎界面,用户点击MENU键进入主菜单来选择游戏中的不同的功能。在游戏中作者设计了四个按钮。分别是:开始游戏、双人游戏、联机对战和退出。用户选择开始游戏进入的是单人游戏对战电脑AI,选择双人游戏可以两个用户在一台模拟器机上对战,选择联机对战可以两个用户在两个模拟器上对战,用户选择三种对战方式中的任意一种在胜负判定算法判定出游戏结束后可以重新选择MENU或者退出,选择MENU可开始新的游戏,当然若选择退出则是结束并关闭游戏了。游戏具体的功能流程图,如图3-1

    图3-1 系统功能图
    3.2.1 游戏界面布局
    一个游戏先不管内容如何,他给人的第一印象就可以让人决定是否玩它,所以一个好的游戏界面对于一个游戏程序来说是非常重要的。
    游戏界面的布置包括游戏模式选择界面、棋盘和棋子的位置和显示等;关于盘面情况的表示,首先得到屏幕的大小,然后根据所画棋子的大小来确定下一条棋盘的画线.产生棋盘上所有的线.坐标布局的子控件需要指定相对与此坐标布局的横、纵坐标的值。大致效果如图3-2,当然棋盘和棋子只是一张位图,用来配合坐标而已。棋盘是一个正方形的位图,棋子是两个16像素的实心圆,由棋盘的大小得出。
int MiniMax(position p,int d)
{
int bestvalue,value;
if(Gama Over)//检查棋盘是否结束  
return evaluation(p);//棋盘结束,返回估值
if(deptu《=0)//是否叶子节点
return evaluation(p);//叶子节点,返回估值
if(p.color=white)//是否轮到白方走棋
bestvalue=-INFINITY;//是,令初始最大值为极小
else
bestvalue=INFINITY;//否,令初始极小值为最大
for(each possibly move m)//对每一可能的走法m
{
   MakeMove(m);//产生第i个局面(子节点)
Value =MiniMax(P,d-1);//递归调用MiniMax向下搜索子节点
UnMakeMove(m);//恢复当前局面
if(p.color=black)
bestvalue=max(value,bestvalue);取最大值
else
bestvalue=min(value,bestvalue);取最小值
}
Return bestvalue;//返回最大/最小值
}
//end of minimax algorithm

























更多推荐

基于Android的五子棋游戏APP设计