1、基于IOS平台的游戏五子棋基于IOS平台的游戏“五子棋” 毕业设计说明书题 目:基于IOS平台的游戏“五子棋” 程序设计 摘 要本论文主要阐述以iOS开发平台为基础,通过使用Xcode开发工具以及objective-c和c+语言开发的一款运行在iPad上的智力游戏“五子棋”。五子棋是一种两人对弈的纯策略型棋类游戏,棋具与围棋通用,是起源于中国古代的传统黑白棋种之一。近年来,随着智能手机的流行,出现了许多在移动操作系统上的手机应用。所以,开发一款可以在iOS系统上运行的五子棋游戏是非常有意义的。在开发的过程中,我首先学习了objective-c语言的相关语法,objective-c语言是在C语言
2、上进行一些面向对象的扩充,学习它大概用了一周的时间。接下来,开始学习iOS应用的构建原理(学习视图控制器与视图的使用方法,程序委托的使用等)以及一些常用控件的使用,并尝试在Xcode工具上搭建一些简单的界面。这时候的界面是用xib文件来搭建的,通过直接拖拉控件来产生界面。之后,开始尝试用代码写控件来代替xib文件。在做好这些基础的准备后,我开始动手搭建五子棋的界面,五子棋界面除了一些常用的控件(按钮以及标签)外,重要的是画出棋盘以及棋子,棋盘和棋子不能用普通控件来显示,需要使用绘图的方法把它画出来。在这些工作完成了之后,界面就可以显示出来了。接下来,就要在棋盘类上面进行一些处理工作,比如点击各
3、个按钮触发的事件,在游戏过程中玩家点击棋盘触发的事件,判断游戏输赢,悔棋和认输功能的实现等等。之后,就开始设计与实现五子棋算法了。经过多年的发展,五子棋的算法已经较为完善,我做的工作是在理解这些算法原理的基础上,用自己的话来实现,并加入一些新的东西。五子棋算法一般包括估值算法以及搜索算法,估值算法的实现虽然代码量较大但是理解起来不是特别难,而我在学习搜索算法的过程中却在一开始的时候无法理解他的alpha-beta剪枝以及负极大值算法的意思。而在一开始写完算法部分代码之后,也还是存在许多问题,无法搜索出正确的落子点,在经过一些排错与完善之后,算法的实现可以与前面的棋盘进行结合了。这样,整个设计就
4、差不多完成了,接下来就需要进行测试并进行一些小的修改。在本论文中,主要阐述了开发过程中的一些细节,遇到的问题,解决的方法以及自己的一些感悟。关键词:objective-c;人工智能;算法 AbstractThis paper mainly expounded a mental game gobang .It is on the basis of iOS development platform, using the Xcode development tools and objective - c and c + + language to develop,and runed in the i
5、Pad. Gobang is a game of two pure strategy type chess game. Chess can be used in the game of go.Gobang is one of the traditional reversi which is originated from the ancient Chinese . In recent years, with the popularity of smart phones, Many mobile applications on mobile operating system appeared.S
6、o, developing a Gobang game can be run on iOS is meaningful.In the process of development, the first thing is learning the syntax of objective-c language,the objective-c language is in the basis of c language and add some Object oriented expansion , it took me about a weeks time to study.Next, I sta
7、rt to learn the building principle of iOS app (learning the usage of view controller and view , the use of application of delegate and so on ) and the use of some common controls, and try to make some simple interface on Xcode tool structures.At this time the xib file interface is used to build, thr
8、ough direct drag controls to generate the interface.Next, I began to try to replace the xib file by writting codes.After doing this things, I start to build gobang interface, in addition to some commonly used controls (buttons and labels), it is important to draw the chessboard and chess ,the board
9、and chess can not use normal controls to display, I need to draw them.After the work finished, interface can be displayed.Next, I should do some work on board, such as the events by click each button , the events by click board, the function of judes success ,giving up and regret and so on.Then,I be
10、gan to design and realize the gobang algorithm. Gobang algorithm has been more mature, my work is understanding the algorithm and relize it, and I will add some new things.Gobang algorithm generally includes valuation algorithm and search algorithm, the code of valuation algorithm is large but I do
11、not hard to undstand it .Instead ,I cant understand the alpha beta pruning and negative maximum value algorithm. And after finished the algorithm , it still exist many problems, it is unable to search the right move place, after some troubleshooting and improvement, the realization of the algorithm
12、can be combined with the front board.So, the whole design is almost finished, you need to test and make a few small changes.This paper mainly expounds some details in the development process, implementation methods, difficulties, and some of my own feeling.Key words:objective-c;Artificial intellegen
13、ce;algorithm目 录引言 11 手机五子棋游戏介绍 31.1 五子棋游戏规则介绍 31.2 五子棋游戏术语介绍 31.3 手机五子棋特色 32 开发环境及工具介绍 42.1 开发环境 42.2 运行环境 42.3 工具介绍 42.3.1 iOS介绍 42.3.2 objective-c介绍 53 需求分析与总体设计 53.1 需求分析 53.2 系统设计思想 63.3 系统总体设计 63.4 系统模块及功能 63.4.1系统主要模块 63.4.2系统主要流程 84 五子棋AI算法分析与实现 94.1 算法总体概况 94.2 估值算法分析与实现 94.3 搜索算法的分析与实现 144.
14、4 算法设计的不足以及改进方法 205 APP应用详细设计 215.1 APP设计介绍 215.1.1 main函数介绍 215.1.2 应用程序委托介绍 215.1.3 视图控制器介绍 215.1.4 视图类介绍 225.1.5 MVC模型介绍 225.1.6 主要框架介绍: 225.2 详细设计概述 235.3 视图控制器类设计 235.3.1积分榜的设计 235.3.2委托类的设计与使用 235.3.3按钮的设计 245.4 棋盘类的设计 245.4.1棋盘类变量设计 245.4.2棋盘的绘制 255.4.3玩家和机器人下子 255.4.4棋子类的实现 265.4.5判断胜负功能 265
15、.4.6游戏新局功能的实现 265.4.7认输功能的实现 275.4.8悔棋功能的实现 275.4.9人人对战的实现 276 开发过程中遇到的问题 286.1 五子棋AI算法设计问题 286.2 棋盘类设计遇到的问题 287 测试 298 总结 34谢 辞 37参考文献 38引言随着科技的发展,智能手机的出现改变了我们一直以来对手机只是用于打电话和发短信的观点。在路上,车上,我们总能看见有人拿着手机来玩游戏,看电影,这一切都在改变我们的日常生活。也正是由于这些变化,移动互联网已经逐渐成为了互联网这个行业的重要组成部分。我们也能看到,传统的PC行业的增长已经开始放慢,国际上一些很大的传统PC厂家
16、例如惠普,戴尔在PC行业的利润已经越来越少,它们都在积极的寻求转型。而反观智能机的领域,苹果,三星,HTC等企业都通过智能手机的销售取得了非常好的业绩。特别是苹果和三星,占据了整个智能手机领域的很大部分利润。所谓智能手机,就是与传统的功能手机只可以用来打电话与发短信不同。它类似于电脑,有一个独立的操作系统,用户可以自行安装和卸载各种软件,这样手机的功能就得到了充分的扩充。在PC上的软件现在不断有了移动操作系统上的版本,例如QQ等聊天类软件,微博等社交类软件,甚至在手机上也出现了很多3D游戏,这些都有赖于移动操作系统的产生以及相关硬件的发展。在智能手机的行业中,诺基亚和黑莓曾经占据了非常重要的地
17、位。塞班系统曾经非常成功,但是后来由于开源的Android以及iOS系统的出现,加上触控技术的流行,塞班系统不断的失去了它的优势。同样,近年来也兴起了平板这种新的数码产品,这是一种崭新的产物。iPad是苹果公司推出的一款平板电脑,受到了市场的强烈反响。所以,我觉得在iPad上开发一款移动应用是一件非常有意义的事情。五子棋是一种两人对弈的策略型游戏,起源于中国古代。五子棋的规则比较简单,上手比较容易,而且趣味横生,引人入胜。传统五子棋的棋具是与围棋通用的,一般是15*15的棋盘,棋子分黑白两种颜色,对弈的双方分别执一种颜色的棋子,棋子放置在棋盘线上的交叉位置,双方轮流下子,只要同一颜色的棋子能够
18、有五个棋子在同一条线上,那么执这种颜色棋子的一方就赢得了这盘棋。随着科技的发展,现在人们的物质生活越来越丰富,但是人们的生活压力也越来越大,所以在工作闲暇之余,来一盘五子棋,也不失为一种调节情绪,放松思考的机会。五子棋的规则简单,却往往可以开发人的思维,是一种非常有意义的游戏。五子棋现在已经发展为一种非常重要的棋盘游戏。近年来,游戏产业得到了巨大的发展。而且随着手机的发展,游戏产业已经扩展到了手机上,这样大家就有了更多休闲娱乐的机会。棋类游戏具有益智,开发人大脑思维的功能也受到了大家的欢迎。手机上的棋类游戏往往分为人机对战和人人对战两种。特别是人机对战中的机器博弈,是PC和手机上的棋类游戏的一
19、大特色。机器博弈是人工智能研究领域中一块非常重要的地方。本文设计的是一款人机和人人对战的五子棋游戏软件,在人机对战模块中,提供了一定智力的机器人来和玩家进行博弈。机器人的功能通过估值,alphabeta剪枝搜索,负极大值等算法来实现。人人对战主要是提供一个界面美观的棋盘来给两个玩家切磋棋艺。另外,本软件还提供了下面的一些功能:1,重新开始功能,游戏模式选择功能,人机对战选择游戏难度功能,下棋先后手选择功能。2,认输功能。3,悔棋功能。3,积分功能(胜负记录)。4,判断胜负功能。5,游戏状态提醒功能。1 手机五子棋游戏介绍1.1 五子棋游戏规则介绍五子棋的标准棋盘大小是15*15,由双方各执一种
20、颜色的棋子,分别在棋盘横竖线交叉的位置摆上棋子。最后有一方的棋子有五子可以连成同一根线就算执该颜色棋子的一方胜利。由于在五子棋游戏过程中,先下子的一方非常占有很大的优势,所以五子棋游戏有两种下棋规则,禁手和无禁手。禁手规则是指先下子的一方需要一定的约束,通常有长连禁手,四四禁手,三三禁手。这些都是对先下子一方的约束,来平衡先下子本身带来的不公平。无禁手规则是指双方都不需要约束下子的位置,国际比赛往往都有禁手规则。1.2 五子棋游戏术语介绍连珠:国际上五子棋的正式名称。阳线:棋盘上可见的横线和竖线的总称。阴线:棋盘的两条对角线及与它们平行的交叉点间不可见斜线的总称。连:一条阳线或阴线上紧紧相连的
21、同色棋子。长连:一条阳线或阴线上紧紧相连的同色六枚或六枚以上棋子。五连:一条阳线或阴线上紧紧相连的同色五枚棋子。四:指活四和冲四。 活四:己方再加上一子,有两个点可以成五的单四。冲四:己方再加上一子,只有一个点可以成五的四。包括连冲四和跳冲四。三:指活三和眠三。活三:己方再加上一子,可以形成活四的三。眠三:己方再加上一子,可以形成冲四但不能形成活四的三。二:指活二和眠二。活二:己方再加上一子,可以形成活三的二。眠二:己方再加上一子,可以形成眠三但不能形成活三的二。死四、死三、死二由于在主方向已不可能成五,因此已不是四、三、二。1.3 手机五子棋特色便携性:在没有计算机和手机出现之前,要进行一场
22、五子棋游戏都是需要使用真正的棋盘和棋子进行的。而随着计算机和网络的不断发展,五子棋已经完全可以脱离棋盘的限制。而近年来随着手机的发展,更加方便的手机版五子棋不断出现。它不仅具有电脑版五子棋的优势,而且更加的方便。网络连接能力:由于手机或平板都有一定的网络连接能力,所以可以通过网络连接进行两人对战,这样就减少了距离的限制。2 开发环境及工具介绍2.1 开发环境电脑硬件:处理器 2.7 GHz Intel 内存 8 GB 1600 MHz DDR3操作系统:软件 OS X 10.8.2 (12C3103) 开发工具:xcode 4.6 2.2 运行环境 硬件:第一代iPad操作系统:iOS 5.1
23、2.3 工具介绍2.3.1 iOS介绍iOS是一种闭源的系统,采用了混合内核,是苹果公司开发的一款手持设备的操作系统。苹果公司一开始是将这个系统用在了iPhone上,后来又逐渐的用在了iPod touch,iPad等产品上。它是以Darwin为基础的一种类Unix的操作系统,原本这个系统名为iPhone OS,直到2010年6月7日WWDC大会上宣布改名为iOS。iOS的系统结构分为以下四个层次:核心操作系统(the Core OS layer),核心服务层(the Core Services layer),媒体层(the Media layer),Cocoa 触摸框架层(the Cocoa
24、Touch layer)。从功能角度来说,iOS和Android还是比较类似的,都具备触摸屏,高级图形显示以及上网功能。相较于Android,iOS运行更加流畅,对硬件的要求没有Android高,同时,它的应用的兼容性要比Android好。而Android在界面上更加注重搜索功能,它对Flash的支持也是一个优势。2.3.2 objective-c介绍在开发五子棋程序过程中,除了算法部分使用C+语言进行实现外,其他部分都需要使用Objective-C来实现。Objective-C 是一种通用、高级、面向对象的编程语言。它扩展了标准的 ANSI C 编程语言。将 Smalltalk 式的消息传递
25、机制加入到 ANSI C 中。它是苹果的 OS X 和 iOS 操作系统,及其相关API、Cocoa 和 Cocoa Touch 的主要编程语言。Objective-C 最初源于 NeXTSTEP 操作系统,之后在 OS X 和 iOS 继承下来。目前主要支持的编译器有 GCC 和 Clang,其中 Clang 被应用于 Xcode 4.0 中。1980年代初,Brad Cox 与 Tom Love 在其公司 Stepstone 发明 Objective-C,它以一种叫做 SmallTalk-80 的语言为基础。Objective-C 创建在 C 语言之上,意味着它是在 C 语言基础上添加了扩
26、展而创造出来的能够创建和操作对象的一门新的程序设计语言。对 Objective-C 最主要的描述是他1986年出版的Object-oriented Programming, An Evolutionary Approach。1988年,NeXT Computer 公司获得了 Objective-C 语言的授权,并开发出了 Objective-C 的语言库和一个名为 NEXTSTEP 的开发环境。1992年,自由软件基金会的 GNU 开发环境增加了对 Objective-C 的支持。1994年,NeXT Computer 公司和 Sun Microsystem 联合发布了一个针对 NEXTSTE
27、P 系统的标准典范,名为 OPENSTEP。OPENSTEP 在自由软件基金会的实现名称为 GNUstep。1996年12月20日,苹果公司宣布收购 NeXT Software 公司,NEXTSTEP/OPENSTEP 环境成为苹果操作系统下一个主要发行版本 OS X 的基础。这个开发环境的该版本被苹果公司称为 Cocoa。3 需求分析与总体设计3.1 需求分析本软件设计的是具有人机对战和人人对战功能的五子棋,相较于PC版的五子棋,在平板上运行的软件界面需要更加简洁,操作更加方便。在人机对战部分,由于CPU的主频不高,为了保证游戏的流畅性,在平板上运行的五子棋的算法实现需要较少的代码,但同时又
28、要保证算法具有一定的智能性,否则就失去了益智的功能。在整个软件中,需要提供以下功能:1,需要提供一个15*15大小并且可以添加棋子的棋盘。2,需要提供游戏开始功能(重新开始功能),选择游戏类型功能(人机对战和人人对战),提供下子先后手功能。3,人机对战需要提供一定水平的算法,但是算法在运行过程中不能花费太多的事件,同时,人机对战需要提供不同难度的选择。4,人机对战功能需要提供玩家悔棋功能。5,提供自动判断游戏胜利并且在界面上给予提示的功能。6,提供游戏积分榜功能,显示每一方胜利的局数,并且在每局游戏结束后可以马上更新,在应用重新打开时仍然可以正确显示。7,提供游戏认输功能,提供游戏状态(某一方
29、下子,游戏结束等)提示功能。3.2 系统设计思想该软件设计的是一款可以在iPad上运行的五子棋游戏,软件打开后直接进入游戏主界面,然后用户通过选择游戏模式,游戏难度,下棋先后手之后开始进行游戏,在游戏过程中软件提供当前状态的提示,玩家在这个过程中可以进行认输,悔棋等操作,当程序判断游戏结束时,程序按照游戏结果更新积分榜。3.3 系统总体设计按照系统设计思想,系统的总体设计如下:3.4 系统模块及功能3.4.1系统主要模块系统主要模块如下:主视图初始化模块:创建并添加棋盘视图,添加积分榜模块视图,认输模块视图,棋盘初始化模块视图,悔棋模块视图。棋盘初始化模块:清空表示棋子相应信息的数组,将棋盘上
30、之前添加的棋子全部移除。新游戏设置模块:选择游戏的类型(人机对战和人人对战),人机对战模式还需选择游戏难度,并且两种模式都要选择先后手。主循环模块:转换下子的一方的颜色。玩家点击棋盘模块:玩家点击棋盘后,系统根据玩家点击位置将棋子添加进棋盘。机器人落子算法模块:该模块根据当前棋盘的信息,通过一定的算法,得出最适合下子的坐标。机器人下子模块:程序根据落子算法模块得到最佳落子地点,然后将该点设置成机器人棋子的颜色。判断游戏结束模块:玩家点击模块和机器人下子模块调用该模块,该模块通过判断是否有连续五颗同样颜色的棋子在同一条线上来决定是否结束游戏。认输功能模块:提前结束游戏,并更新积分榜。悔棋功能模块
31、:在人机对战游戏中,只要游戏还没有结束,玩家就可以通过该模块撤销自己已经在棋盘上下的棋子。游戏积分榜模块:显示人机对战和人人对战双方各胜利的局数,并在每次游戏结束时更新。3.4.2系统主要流程4 五子棋AI算法分析与实现4.1 算法总体概况首先介绍在该程序中棋盘的表示,我用char型的值来代表黑子和白字,黑子是机器人,白子是玩家。整个棋盘用一个char型的二维数组来表示。例如:假设这个数组是a55(棋盘有五行五列),1代表是黑子,2代表是白字,假如a00的值是1就代表这个棋盘第一行第一列是黑子。五子棋的AI算法主要包括估值算法和搜索算法。估值算法是指通过一定的算法将棋盘盘面的值计算出来。而搜索
32、算法是指在估值算法的基础上将盘面中最适合摆子的一点找出来。估值算法是基础,调用一次搜索算法就可能需要调用多次估值算法,所以估值的准确性和估值算法的精简性对算法质量的影响非常大。估值算法可以让你知道出现每一种棋局的重要性,而搜索算法就是要在估值的基础上找到真正适合你下子的那点。4.2 估值算法分析与实现估值算法就是将整个棋盘相应的分值计算出来。当然,这个分值是相对于某一方来说的。比如此时是玩家下棋,那么此时得到的这个分值就应该是相对于玩家的。假如是机器人下棋,那么此时得到的这个分值就应该是相对于机器人的。那么为什么会产生不同的分值,不同的分值又有什么重要的意义?产生不同的分值那是因为每一种不同的棋面对结果会产生不同的影响,比如该棋局某一方有五子相连,那么只要出现这个棋面,有五
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1