一、项目概述
近年来,随着安卓手机的普及,安卓游戏成为广大用户关注的方向。五子棋作为一个棋类竞技运动,在民间十分流行,为了熟悉五子棋规则及技巧,以及研究简单的人工智能,决定用Java开发五子棋游戏,主要完成人机对战的功能。本次毕业设计的方向将结合五子棋这个游戏的特点,将阐述单机版五子棋算法设计,突出人工智能在博弈方面的应用,而选五子棋游戏的开发则是利用计算机来实现,它的人工智能,从而培养我们从事软件开发方面的能力。在本程序中,主要使用eclipse开发工具,使用Java开发语言进行五子棋游戏的设计。运行在安卓系统平台的游戏深受大家的喜爱,现在,Android游戏不但可以运行于智能手机上,也可以运行在平板电脑上。
1.1 安卓游戏发展趋势
将向专业化、大规模化方向发展,随着各平台对OpenGL Es支持能力的大力加强,使得开发复杂的3D场景游戏成为可能。更多显示芯片对Android的支持,硬件性能将不再成为制约专业化游戏发展的瓶颈。越来越多在PC、PSP、PS3、XBOX360等各游戏平台占有领先地位的专业游戏公司将向 Android等手机平台领域快速渗透,使得游戏的规划更加向专业化方向发展。将向网络化方向发展,随着各平台对无线通信网络、WIFI网络、蓝牙网络的良好支持,游戏将创新出更好的游戏性和用户本验。网络游戏,多人游戏,联机对战等将进一步强化玩家对游戏的粘着度,并且容易通过对道具等的控制产生营利模式。玩家之间对交互能力的需求也会促成未来的游戏向网络化发展进程的加快。
将向休闲化、时间片化方向发展,移动设备的随身性使是休闲小游戏将得到快速的发展。移动设备对分散时间的利用促进了游戏向时间片化发展,即一个游戏可以随时开始,随时结束,充分利用用户分散的时间片来运行。
1.2 开发安卓游戏的意义
由于安卓平台前景广阔,作为安卓平台的应用,即安卓游戏的快速发展,是大势所趋,必然趋势,所以安卓深受广大群众的喜爱。有需求就有供应,游戏开发商在开源的安卓平台上,尽情的发挥他们的想象力,带给我们一款又一款好玩且爱不释手的游戏。比如水果忍者、植物大战僵尸和赛车系列游戏,属于安卓发烧友的装机必备的小游戏。对于如此之高的安卓系统市场占有率,那么安卓手机的游戏又有何理由不火呢?因此,我们坚信安卓游戏会越来越受到广大朋友的宠爱,且越来越来的安卓游戏也会进入我们的视野里。二、项目需求分析
随着计算机在日常工作中的普及,软件开发行业作为其必不可少的组成部分,被人们所认可。在我国,软件行业日渐成熟,小作坊式的开发形式,已经不能满足我国对于软件规范化、实用性的要求,软件开发流程化及各个职能部门工作的有效划分和正确协作,是现在软件行业面临的一个较大的问题。软件需求分析是软件开发的出发点,为设计起到指导性作用,所以需求分析在软件行业及开发流程中起着非常重要的作用。“需求分析”,就是对需要解决的问题进行详细分析,弄清楚需要解决的问题。开发人员需要了解顾客的需求,然后体现在软件中。如果说软件开发过程中,开发人员需要了解自己做什么,顾客需要告诉开发人员自己需要什么,而需求分析就是连接开发人员和顾客之间的重要纽带。只有真正理解顾客的需求,才能设计出顾客所需要的软件。
在过去很长一段时间,开发人员的认为需求分析是整个开发过程中最简单的一个环节。然后越来越多的开发人员认识到它才是整个开发过程中的核心部分。正所谓“磨刀不误砍柴工”。只有真正理解了顾客的需求,才能顺利开发出顾客真正需要的软件。如果一味追求进度,而忽略需求分析,很可能南辕北辙,开发变得毫无意义。
2.1 功能需求分析
该五子棋游戏比较简单,进入界面,不会有提示的,且主要是人机对战,是由人先开局,电脑会智能的选择该在哪处下子,并会在每次下棋结束后判断是否有哪方已经获胜,如果获胜则结束本局游戏,并提示玩家游戏结束。故每次玩家在棋盘上点击鼠标,需要实现界面出现棋子,而电脑需要立即作出回复,在最适合的地方落子。因此,可以将本程序需要实现的功能,概括如下:判断该坐标是否在棋盘之外,如果不是,记录下该坐标值以进行下一步操作
判断该位置是否已有棋子,没有的话用类graphics. Paint画出棋子,并记录下棋盘的状态
判断该颜色棋子的上下左右是否满足连续五个,是的话提醒相应玩家获胜,不是的话,更换玩家,监听事件处理结束
对于玩家的更换是程序自动的,每次用户点击鼠标后,都会变换为电脑,从而画出对应黑方白方的棋子供玩家查看
2.2 性能需求分析
使用eclipse开发工具,使用Java开发语言,在Android 2. 1-update 1的虚拟环境下进行编程开发,需要套用android-7才能使程序进行运行。另外,需要计算出电脑每次需要落子的位置,不仅要阻止玩家的五子连线机会,还要主动发起攻势。必要的情况下,需要用户掌握一定的五子棋规则及技巧,避免由于盲目落子,造成个人的失败。但作为用户自己设计的智能电脑玩家,需要由参数来控制落子位置,这就要求对棋盘上的坐标进行仔细的研究。2.3 可行性分析
2.3.1 经济可行性
经济可行性是指可以使用的资源的可能性(资源包括人力资源、自然资源和资金条件)。本次设计注重游戏功能的实现,达到设计目的,不用于其他的商业用途。通过此次设计增强Java技术和实践的结合。同时了解可视化界面,设计操作界面和页面的跳转更换。操作环境需要Eclipse。相关资料可以上网查询。硬件方面可以普通笔记本可以达到要求。
2.3.2 技术可行性
对于本游戏,可以使用如VB,Java,Delphi等相关的编程语言,但是考虑到编写程序的难易程度以及对编译语言的了解程度,本游戏选择Java程序语言作为编程语言。需要对变量定义、变量初始化、界面初始化、游戏初始化等,然后就可以进入游戏,处理游戏过程中的各种操作。同时进行技术可行性分析时,要注意以下一些问题。全面考虑系统开发过程所涉及的所有技术问题:软件开发涉及多方面的技术,包括开发方法、软硬件平台、网络结构、系统布局和结构、输入输出技术、系统相关技术等。应该全面和客观地分析软件开发所涉及的技术,以及这些技术的成熟度和现实性
尽可能采用成熟技术:成熟技术是被多人采用并被反复证明行之有效的技术,因此采用成熟技术一般具有较高的成功率。另外,成熟技术经过长时间、大范围使用、补充和优化,其精细程度、优化程度、可操作性、经济性等方面要比新技术好。鉴于以上原因,软件项目开发过程中,在可以满足系统开发需要、能够适应系统发展、保证开发成本的条件下,应该尽量采用成熟技术
慎重引入先进技术:在软件项目开发过程中,有时为了解决系统的特定问题,为了使所开发系统具有更好的适应性,需要采用某些先进或前沿技术。在选用先进技术时,需要全面分析所选技术的成熟程度。有许多报道的先进技术或科研成果实际上仍处在实验室阶段,其实用性和适应性并没有得到完全解决,也没有经过大量实践验证,在选择这种技术时必须慎重。例如,许多文章中已经报道了指纹识别技术,而且市场上也有实验性产品,但指纹识别技术至今仍有许多重大技术难题没有突破,离具体应用仍有一定距离。因此,在项目开发中要谨慎选用这种技术。如果不加分析,在项目中盲目采用指纹识别技术,应用时肯定会出现许多难以解决的具体问题
着眼于具体的开发环境和开发人员:许多技术总的来说可能是成熟和可行的,但是在开发队伍中如果没有人掌握这种技术,而且在项目组中又没有引进掌握这种技术的人员,那么这种技术对本系统的开发仍然是不可行的。例如,分布对象技术是分布式系统的一种通用技术,但是如果在开发队伍中没有人掌握这种技术,那么从技术可行性来看就是不可行的
技术可行性评价:技术可行性评价是通过原有系统和欲开发系统的系统流程图和数据流图,对系统进行比较,分析新系统具有的优越性,以及对设备、现有软件、用户、系统运行、开发环境、运行环境和经费支出的影响,然后评价新系统的技术可行性。
2.3.3 管理可行性
此次设计基于Java,有面向对象,可移植性,安全性,并发机制,支持可视化图形界面等特点。易于管理。2.3.4 法律可行性
法律可行性是考虑开发系统是否存在任何侵犯、妨碍和责任问题。本项目是自行开发的,所有技术资料都为合法,开发过程中不存在知识产权问题,未抄袭任何已存在的的产品,所以开发这个系统即法律上是可行的。2.4 项目开发目标
该款五子棋游戏功能虽然简单,但最主要的还是实现了人与智能电脑对战的模式,所以从这个角度来说,该款游戏需要能很好的设计出电脑的智能。虽然程序不复杂,但要在满足玩家的基本要求的情况下,电脑有一定的智能,能给于新手一定的帮助。另外,通过研究五子棋游戏,帮助更好的运用自身所学,将理论付诸于程序设计中。2.5 软硬件需求
硬件环境需求CPU:Intel i5-6500
内存:4G
内存剩余资源:500M
软件环境需求JDK 1.7及其以上的版本
Eclipse
三、项目概要设计
3.1 五子棋解释
引用《辞海》中所言,五子棋是“棋类游戏,棋具与围棋相同,两人对局,轮流下子,先将五子连成一行者为胜。”。五子棋的名称:日文亦有“连五子、五子连、串珠、五目、五目碰、五格、五石、五法、五联、京棋”等多种称谓,英文则称之为FIR (Five In A Row的缩写)、Gomoku(日语“五目”的罗马拼音)、 Gobang, connect 5, mo-rphion.捷克语piskvorky,韩语omok、韩国人还称之为情侣棋。3.2 五子棋的基本规则
五子棋行棋时,玩家执白棋先下第一子,而后黑棋在棋盘合适的位置落子。接着黑白双方相互顺序子最先在棋盘线交点横向,纵向,斜向形成已方的五个棋子连续的一方为胜
如下至最终一子仍不分胜负则定为平局
3.3 五子棋的相关术语
阳线:棋盘上可见的纵横直线阴线:棋盘上无实线连接的隐形斜线
五连:棋盘上形成5个同色的棋子的连
活四:在棋盘某一条阳线或阴线上有同色4子不间隔的紧紧相连,且在此4子两端延长线上各有一个无子的交叉点与此4子紧紧相连
冲四:除活四外的在下一招,便可形成五连,并且存在五连的可能性
活三:在棋盘某一条阳线或阴线上有同色3子不间隔的紧紧相连,且在此3子两端延长线上各有一个无子的交叉点与此3子紧紧相连
活二:在棋盘上,再走一步可成活三的点
眠三:在棋盘上,再走一步可成冲四的点
眠二:在走一步可成眠三的点
3.4 程序设计分析
绘制棋盘,14条横线,14条竖线,在直线交点处下棋子界面中的棋盘通过onDraw函数进行绘制,而黑白子通过引用图片显示在棋盘上
白子先行,黑白交替下子。边框的的交接点无法落子,故棋盘实际可以进行落子的范围为12×12格
玩家落子之后,电脑需要判定棋盘的某一位置是否有棋子,并在棋盘上,选一个最佳位置落子
当任何一方有五个棋子沿着横,竖,斜连在一起时,系统自动判断赢棋,并显示黑方或白方胜利。棋局结束后,任何一方均不能继续操作
完整的源码和详细的文档,上传到了 WRITE-BUG技术共享平台 上,需要的请自取: