五子棋Java实验报告

五子棋Java实验报告
五子棋Java实验报告

五子棋JAVA实验报告

目录

五子棋JA V A实验报告 (1)

一、实验目的和要求 (2)

二、五子棋的基本常识与原理 (2)

三、五子棋的系统设计 (3)

四、五子棋的实现与测试 (7)

五、分析与总结 (10)

六、附录 (12)

一、实验目的和要求

1、能够用编程语言实现一个简单的五子棋程序

2、在实际系统中使用、实现人工智能的相关算法

3、进一步加深对人工智能算法的理解

二、五子棋的基本常识与原理

1、五子棋的起源

五子棋,是一种两人对弈的纯策略型棋类游戏,亦称“串珠”、“连五子”;是中国民间非常熟知的一个古老棋种。相传,它起源于四千多年前的尧帝时期,比围棋的历史还要悠久。亦有传说,五子棋最初流行于少数民族地区,以后渐渐演变成围棋并在炎黄子孙后代中遍及开来。

五子棋发展于日本,流行于欧美。容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。

传统五子棋的棋具与围棋相同,棋子分为黑白两色,棋盘为19X19,棋子放置于棋盘线交叉点上。两人对局,各执一色,轮流下一子,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。因为传统五子棋在落子后不能移动或拿掉,所以也可以用纸和笔来进行游戏。

2、五子棋的基本常识

与任何一种竞技棋一样,五子棋的每一局棋也分为三个阶段:开局,中局和残局。

五子棋的开始阶段称为开局,或称布局。其开局阶段是十分短暂的,大约在七着与十几着之间。在这一阶段的争夺中,双方的布局,应对将对以后的胜负起着极为关键的作用。在开局阶段取得的形势好坏,主动与被动,先手与后手的优劣程度,往往直接影响中局的战斗。因此积极处理好开局和开局向中局的过渡十分重要。

五子棋是从一至五,逐渐布子,发展连系,同时运用限制和反限制的智慧,在连子的过程中为自己的棋子争得相对的主动权和优势,逐步扩展优势,或者从劣势转化为优势,击溃对方的防线,最后连五取胜或抓禁手取胜或迫使对方投子认负。

3、五子棋比赛的相关规定

(1) 职业连珠规则

a. 黑方先下子,白后下,从天元开始相互顺序落子。

b. 最先在棋盘横向、竖向、斜向形成连续的相同色五个棋子的一方为胜。

c. 黑棋禁手判负,白棋无禁手。黑棋禁手包括“三三”(包括“四三三”)、“四四”(包括“四四三”)、

“长连”。即黑棋只能以“四三”取胜。有关术语解释请见图示说明。

d. 如分不出胜负,则定为平局。对局中拔子、中途退场均判为负。

e. 五连与禁手同时形成,判胜。

(2) 比赛中的规定和特例

a. 对局开始前,双方猜子,大数减小数,单数交换,偶数不换。

b. 白棋第一手(即盘面第二着棋)应在天元为界自己一侧布子,主要以示尊重对方,之后双方可任意行子。

c. 对局中双方应遵守“职业连珠五子棋规则”,如出现争议,应由裁判判定。

d. 对局中掉子(棋子掉落在棋盘上)的一方判负。如遇推子或蹭子,以盘面第一落点为准。用手将棋子扶正不算违规。

e. 对局中应礼貌行棋,防止不正常声音、动作影响对方思考。

f.. 比赛结束后,双方应将各自棋子放回原处。

g. 对局中如黑方出现禁手,白方应立即指出禁手点,黑方即负。如白方在黑方出现禁手后,又下一步白子,黑棋禁手则不成立了。

h. 比赛对局时间,双方分别为15分钟、1小时、2小时、5小时四个等级标准,超时判负。

(3) 特殊规定

职业五子棋虽然对黑棋采取了种种限制,但黑子先行的优势依然很大。因此,在高段位的职业比赛中,又出现了三种特殊的规定。

a. 指定打法:是指比赛双方按照约定好的开局进行对弈,由白棋先行。

b. 三手可交换:是指黑棋下盘面第3手棋后,白方在下第四手之前,如感觉黑方棋形不利于己方,可提出交换,即执白棋一方变为执黑棋一方,而黑方不可以不换。

c. 五手两打法:是指黑棋在下盘面上关键的第5手棋时,必须下两步棋,让白棋在这两步棋中拿掉一粒棋子,然后再继续对弈。一般说来,白棋肯定拿掉对白方不利的一点,而保留对黑方较为不利的那点让黑方行棋。

三、五子棋的系统设计

1、系统用例模型设计

五子棋系统应该具有选择玩家先落子还是电脑先落子的功能,应该具有开始游戏和重新开始的功能,当然了,必须具有在玩家指定位置落子的功能。以上描述,用用例图在图1中做进一步描述。这部分功能,主要通过界面与系统的交互来实现。

选择玩家先落子落子

开始游戏

选择电脑先落子玩家重新开始

图1 五子棋系统的玩家用例图

各个用例,简单描述如下:

● 选择电脑先落子:选择后,在游戏过程中,由电脑执黑子,先落子;玩家执白子,于电脑后落子;

● 选择玩家先落子:选择后,在游戏过程中,由玩家执黑子,先落子;电脑执白子,于玩家后落子; ● 落子:原则上说,只要不违反禁手规则,在玩家鼠标点击最近的落子点落子,但是在本系统中,

简单起见,没有考虑禁手规则;

● 开始游戏:选择后,根据设定的电脑还是玩家先落子,开始游戏;

● 重新开始:在游戏途中,可以选择重新开始,中断游戏并重新开始游戏。

同时,五子棋系统本身应该具有棋盘绘制、棋势扫描、棋势排序、棋势评估、择位落子,以及胜负判定的功能,尤其是对于棋势排序、棋势评估和择位落子,这里是体现五子棋系统人工智能(AI )的关键之处。以上描述,用用例图在图2中进一步描述。

胜负判定棋势扫描棋盘绘制棋势排序

棋势评估

五子棋系统

择位落子

图2 五子棋系统的系统用例图

各个用例,简单描述如下:

●棋盘绘制:绘制19*19的棋盘及相关按钮和选项,并负责电脑、玩家落子后棋子的具体绘制;

●棋势扫描:扫描目前棋盘上的所有八个方向上的落子情况,获取整个对弈双方的棋势;

●棋势排序:对获取的八个方向的棋势(实际上下合一,左右合一,左下右上合一,坐上右下合一,

为四个方向),进行排序,便于进行棋势评估;

●棋势评估:分别对电脑和玩家的棋势进行评估,量化棋势;

●择位落子:比较电脑和玩家的棋势,若有利于玩家,则采取“守、堵”的策略,若有利于电脑,

则采取“攻、走”的策略;

●胜负判定:每次电脑或是玩家落子后,判断胜负情况,若出现“五子连珠”,则“连珠”一方取胜,

另一方失败,游戏结束。

2、系统界面设计

为了实现玩家的用例所需要的功能,同时又便于使用,五子棋系统的界面设计得比较简单,如图3所示。

整体界面为一个19*19的棋盘,在f-06、f-14、j-10、n-06、n-14这五个位置画了一个小方块,以提醒玩家棋盘的中央位置,便于把握有利位置落子。

在棋盘的右侧是一些控制和提醒选项、按钮和对弈状态标签。

其中,选项有“我是老大我先来”和“让让电脑也无妨”两个。选择前者,则玩家先落子;选择后者,则电脑先落子。

按钮有“人机对战,快冲啊”和“不行了?那重来吧”两个。单击前者,则游戏开始;单击后者,则中断游戏,重新开始。

标签有“就不告诉你是谁赢了”和“就不告诉你这是第几步”两个。前者是在游戏分出胜负后,显示是黑方取胜还是白方取胜;后者是在游戏过程中,不论是电脑落子还是玩家落子,都提示现在是第几步落子。

图3 五子棋系统界面

3、系统模块设计

为了实现五子棋系统本身具有的功能,将系统分为这几个模块:五子棋主模块、棋势扫描模块、棋势排序模块、棋势评估模块以及随机落子模块。其中,五子棋主模块实现棋盘绘制、胜负判定的功能,以及对弈过程中对比双方棋势的择位落子模块。棋势扫描模块、棋势排序模块、棋势评估模块分别实现棋势扫描、棋势排序、棋势评估的功能;而随机落子模块则实现在前两步棋势尚未形成时,电脑紧邻玩家落子位置随机择位落子的功能,是用例图中择位落子功能的一部分。

对应的,系统一共有五个类,分别对应五个模块;分别为:五子棋主模块Gobang类、棋势扫描StatusScan 类、棋势排序StatusSort类、棋势评估StatusEvaluation类,以及随机落子RandomPlay类。类图如图4所示。

其中Gobang类中的属性和方法并没有完全列出,只列出了主要的属性和方法;其余类基本列出了所有的属性和方法。具体细节将在第四部分“五子棋的实现与测试”一节讨论,这里不再赘述。

图4 五子棋系统的类图

四、五子棋的实现与测试

1、Gobang类的实现

Gobang类是五子棋的核心类,棋盘绘制、棋子落子,响应事件的处理,游戏的控制和模式设置,胜负判定,以及对棋势扫描、排序、评估等的调用都在这里实现。Gobang类的类图如图5所示。

图5 Gobang类类图

其中棋盘的绘制,有paint()和init()来实现,棋子落子由setQizi()来实现,响应事件的处理也在这个类中添加监视器并处理,而游戏的控制和设置在Game_start()和Game_rastart()中实现,游戏胜负的判定由Judge()方法和四个判定不同方向上是否五子连珠的Game_win_*()函数来实现。而最为重要的棋势扫描、排序和评估,则由其属性scanp 、scanc 、sort 、evaluatep 、evaluatec 分别调用它们的方法来实现。随机落子由属性randomPlay 调用其方法实现。

2、StatusScan 类的实现

StatusScan 类通过扫描目前棋盘上的所有八个方向上的落子情况,获取整个对弈双方的棋势。StatusScan 类的类图如图6所示。

图6 StatusScan 类类图

其中三维数组shape 为一个20*20*5的数组,用来存储所获取的整个对弈双方的棋势。当然了,在实际实现中,实例化了两个StatusScan 类的对象scanp 和scanc ,这两个对象分别用来存储玩家的棋势和电脑的棋势。而statusScan()方法具体实现从棋盘上获取整个棋势的具体过程,参数chesspad 存储棋盘上的详细落子情况,参数colour 决定需要获取的是黑方的棋势还是白方的棋势。具体扫描时,对于棋盘(i, j)处,有上下、左右、左下右上、坐上右下八个方向,但是统计时,将上下、左右、左下右上、左上右下分别合一,则一共有四个结果,分别存储在shape[i][j][0]、shape[i][j][1]、shape[i][j][2]、shape[i][j][3]中。

3、StatusSort 类的实现

StatusSort 类对StatusScan 类扫描得到的棋势进行排序,以便于做进一步的棋势评估。StatusSort 类的类图如图7所示。

图7 StatusSort 类类图

其中,StatusSort 类只有一个方法statusSort(),参数shape 即为StatusScan 类扫描获取的棋势数据,该方法主要是对shape 中的棋势数据进行排序,使得shape 数组满足以下条件:

[3]

shap[i][j] >= [2]shap[i][j] >= [1]shap[i][j] >= [0]shap[i][j]19 to 1 = j i, from 排序后的结果仍然存储在shape 数组中。

4、StatusEvaluation 类的实现

StatusEvaluate 类对StatusSort 类排序过的棋势进行评估,为对弈时电脑择位落子提供依据。StatusEvaluate 类的类图如图8所示。

图8 StatusEvaluate类类图

其中,StatusEvaluate类也只有一个方法statusEvaluate(),参数shape即为StatusSort类排序后的棋势,该方法主要是根据棋盘上每一个位置(i, j)的棋势数据shap[i][j][0]、shap[i][j][1]、shap[i][j][2]以及shap[i][j][3]的取值,计算该位置的棋势评估值,并保存在shap[i][j][4]中。此外,还要比较每一个位置的棋势评估值,将最大的评估值记录在属性max中,相应的位置坐标记录在max_x和max_y中。

5、RandomPlay类的实现

RandomPlay类主要是在前两步,棋势尚未形成,在玩家落子后,电脑紧邻玩家落子位置,随机落子。RandomPlay类的类图如图9所示。

图9 RandomPlay类类图

其中,方法randomPlay()方法具体实现这一过程,属性chesspad存储目前棋盘上的落子情况,参数a、b即为玩家最近一次的落子位置。randomPlay()方法通过检测随机数的值,分别在紧邻玩家落子(a, b)处的正上、正下、正左、正右、左下、右上、左上以及右下八个位置中的一个位置落子,最终选取的电脑落子位置,存储在属性x、y之中。

6、五子棋系统的测试

运行系统后,选择“让让电脑也无妨”,单击“人机对战,快冲啊”,开始游戏。游戏过程中,能够正确显示相关的游戏信息,如图10所示。

图10 系统运行截图

从图中,可以看到“就不告诉你是谁赢了”标签显示的胜负信息“五子连珠白棋赢了”;而“就不告诉你这是第几步”标签显示进度信息“这是第13步”。

进一步生成了可执行文件五子棋.jar,如图11所示,可执行文件将与实验报告、源代码一并提交。

图11 系统生成的可执行五子棋文件

五、分析与总结

通过五子棋实验,从分析、设计、编程、调试,到最后运行成功,自己得到了很多的锻炼。

实验报告

实验名称:实验3 访问控制

学员:闫慧宁学号: 09060100 培养类型:军人硕士研究生年级:研一

专业:计算机科学与技术所属学院:计算机学院

指导教员:任江春职称:讲师

实验室: 103-南201 实验日期: 2010 春

国防科学技术大学训练部制

六、附录

附录1

在网上查阅资料时,看到这个帖子,作者将自己的五子棋心得以一种非常有趣的形式展现出来:前序、四个对联、后记;乐一乐的同时,也有不小的收获,一并附于此,作为五子棋实验的一个意外收获。

前序

区区字奴,小小网虫,痴四书,迷五子,乐此不疲。于联众蒙诸友赐教,学得棋技少许,术语若干,不胜心痒,试以韵笔题之,略有小得。是以联句做文,集成发贴,唯愿感者留其言,评者留其论,亦酬伤神,亦慰呕心。

之一

黑子落,白子落,棋乐陶陶任蹉跎,胜,能如何?败,能如何?方寸纹枰自淡泊,心平气和。

先手措,后手措,棋道漫漫细求索,得,有什么?失,有什么?过去未来共斟酌,知足常乐。

横批:以和为贵

之二

纵驰奔,横驰奔,各施韬略斗奇阵,连,可生根?跳,可生根?优劣一子变风云,三思谨慎。

阴线纹,阳线纹,各藏玄机备异军,冲,可细寻?活,可细寻?胜负一瞬转乾坤,五星怡神。

横批:心正棋明

之三

直指路,斜指路,世事如棋万千途,求,是何苦?弃,是何苦?烦恼岁月忘沉浮,难得糊涂。

攻式促,守式促,人生如棋无尽处,逞,几时悟?馁,几时悟?坎坷光阴等闲度,漫卷诗书。

横批:宁静致远

之四

老棋迷,小棋迷,相欢一线牵万里,聚,谈何易?散,谈何易?网络现实两依依,珍重友谊。

新棋友,旧棋友,三五知音遍神州,逢,曾记否?别,曾记否?游戏人生两悠悠,真情永久。

横批:乐在棋中

后记

未虑平仄,难对词性,非诗非赋,亦联亦词,笔随心动,疏漏百出。吾虽无才,但喜交雕文之友,亦拜一字之师,盼观添花妙笔,求闻回春妙方,可畅胸怀,可足平生。

五子棋Java实验报告

五子棋JAVA实验报告 目录 五子棋JA V A实验报告 (1) 一、实验目的和要求 (2) 二、五子棋的基本常识与原理 (2) 三、五子棋的系统设计 (3) 四、五子棋的实现与测试 (7) 五、分析与总结 (10) 六、附录 (12)

一、实验目的和要求 1、能够用编程语言实现一个简单的五子棋程序 2、在实际系统中使用、实现人工智能的相关算法 3、进一步加深对人工智能算法的理解 二、五子棋的基本常识与原理 1、五子棋的起源 五子棋,是一种两人对弈的纯策略型棋类游戏,亦称“串珠”、“连五子”;是中国民间非常熟知的一个古老棋种。相传,它起源于四千多年前的尧帝时期,比围棋的历史还要悠久。亦有传说,五子棋最初流行于少数民族地区,以后渐渐演变成围棋并在炎黄子孙后代中遍及开来。 五子棋发展于日本,流行于欧美。容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。 传统五子棋的棋具与围棋相同,棋子分为黑白两色,棋盘为19X19,棋子放置于棋盘线交叉点上。两人对局,各执一色,轮流下一子,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。因为传统五子棋在落子后不能移动或拿掉,所以也可以用纸和笔来进行游戏。 2、五子棋的基本常识 与任何一种竞技棋一样,五子棋的每一局棋也分为三个阶段:开局,中局和残局。 五子棋的开始阶段称为开局,或称布局。其开局阶段是十分短暂的,大约在七着与十几着之间。在这一阶段的争夺中,双方的布局,应对将对以后的胜负起着极为关键的作用。在开局阶段取得的形势好坏,主动与被动,先手与后手的优劣程度,往往直接影响中局的战斗。因此积极处理好开局和开局向中局的过渡十分重要。 五子棋是从一至五,逐渐布子,发展连系,同时运用限制和反限制的智慧,在连子的过程中为自己的棋子争得相对的主动权和优势,逐步扩展优势,或者从劣势转化为优势,击溃对方的防线,最后连五取胜或抓禁手取胜或迫使对方投子认负。 3、五子棋比赛的相关规定 (1) 职业连珠规则 a. 黑方先下子,白后下,从天元开始相互顺序落子。 b. 最先在棋盘横向、竖向、斜向形成连续的相同色五个棋子的一方为胜。 c. 黑棋禁手判负,白棋无禁手。黑棋禁手包括“三三”(包括“四三三”)、“四四”(包括“四四三”)、

五子棋实训报告

五子棋实训报告 五子棋实训报告 篇一: (3)棋子的绘制与存储棋子的绘制用实心圆模式,颜色为黑色及 白色两种。 棋子在内存中的存储方式: 因为表示各个棋子的数据类型都相同,所以考虑用数组存储,因 为棋盘是二维的,因此棋子用二维数组a存储。 a{ setTitle{ Objet obj = e.getSoure } toolbar = ne JPanel{ } publi int getX{ } publi int getY{ } publi Color getColor{ } return olor; return ; return x; this.x = x; this. = ; this.olor = olor;篇 四: 实习报告-五子棋 信息工程学院 201X年毕业实习报告 班级: 计科XX 姓名: XXX 实习地点: XXXXXX 实习12周-19周

一、实习目的 1. 夯实专业基础,提高动手能力。 把专业知识应用于实践,找出专业薄弱环节加强巩固。 3. 了解就业单位的计算机技术的应用情况、需求情况和发展方向及前景,培养实践能力、分析问题和解决问题的能力以及综合运用所学基础知识和基本技能的能力,同时也增强了适应社会的能力和就业竞争力。 4. 挖掘自身潜力,寻找自身不足,通过实践对未来做出合理规划。 二、实习任务 在MElipse的平台上运用java语言,学习开发一个常用小游戏:五子棋。 三、实习计划 5. 基础夯实,联系实践。 在信息高速发展的今天,计算机科学技术的重要性也在人们的日常生活中日益突显。不管是从事理论教学还是从事软件的设计和开发,基础都是最有力的保障。思想决定行动,认识决定成败。没有正确的思想作为指导,行动就会陷入盲目和被动。缺乏正确的认识基础,前途就会迷茫,方向就会迷失,机会就会丧失。所以说,理论学习是我增强行动自觉的重要保证。人常说:“经济基础决定上层建筑”专业基础对我来说就是经济基础,而上层建筑就是我们所从事的相关工作。但是只拥有专业基础还是不行的,所以,我必须要把理论应用于实践。这也是此次实习课程的重要所在,以专业基础知识为重要依托,以专

五子棋课程设计实验报告

西南交通大学 程序语言综合课程设计 五子棋游戏 课程《程序语言综合课程设计》 学院信息科学与技术学 专业软件工程 姓名 学号 20119050 日期 2016年月日

目录 第一章课程设计的目的和要求 (3) 1.1 课程设计的目的 (3) 1.2 课程设计的要求 (3) 1.3 课程设计的实验环境 (3) 第二章功能描述 (4) 第三章总体设计 (5) 3.1 功能模块设计 (5) 3.1.1 任务执行流程图 (5) 3.1.2 下棋函数流程图 (6) 3.2 数据结构设计 (7) 3.2.1 定义结构体 (7) 3.2.2 定义数组 (7) 3.2.3 全局变量 (7) 3.3 函数功能描述 (7) 第四章程序实现 (8) 4.1源码分析 (8) 4.2运行结果及界面介绍 (25) 第五章后记 (30)

第一章课程设计的目的和要求 1.1 课程设计的目的 1.加深对C语言数据类型,运算,语句结构及其程序设计的基本方法理解和掌握; 2.熟练掌握流程图的绘制、程序设计文档的书写; 3.通过编写一个完整的程序,一方面可以检查我们这学期的学习情况,为以后的学习打下坚实的基础; 4.熟悉C语言游戏编程,掌握五子棋游戏开发的基本原理,从而为以后的程序开发奠定基础。 1.2 课程设计的要求 1、编写程序代码,调试所写程序使其能够正确运行; 2、能进行基本的五子棋操作,有图形界面,能够用键盘操作; 3、能够实现悔棋、存档和读档等附加功能 1.3 课程设计的实验环境 该课程设计在设计与实验过程中需要在windows XP系统/windows 2000以上系统中进行,程序设计要求在visual C++6.0平台中进行,完成代码的编写、编译、调试、测试等工作。本游戏对计算机硬件和操作系统要求极低,所以在这里只是把自己的电脑硬件参数和系统参数列下: 硬件:Cpu:2.1GHZ,内存,2GB,硬盘:320GB,操作系统:windows xp 软件环境:安装VC++6.0

五子棋游戏实验报告

五子棋游戏实验报告 课程名称计算机程序设计(VB) 学号______________________ 姓名______________________ 班级______________________ 提交时间 五子棋软件设计 一、实验目的 1?通过五子棋软件设计或者自拟题目设计,巩固本课程所学的各个章节重点知识,自拟题目的同学需尽早向教师提岀自己的想法及设计方案。 2?通过开发一个较大的系统,增强软件开发能力。 3?通过调试系统,增强逻辑思维能力。 二、实验内容 1.基本要求: (1)输入两个对手名字,然后进入游戏界面。 (2)用鼠标点击的方式在棋盘上摆放棋子,黑白交替。(棋盘15*15 ) (3)可以悔棋。 (4)五子连在一起的时候能判断胜利,并且显示出胜利者的名字。 (5)能够将棋局的结果保存,保存该棋局

结束的状态、对手名字、棋局名字(棋局名字在保存时由用户在相应的界面下添入)(此功能要求用数据库和文件两种技术实现)。

因为棋盘上空点居多,大部分点的信息为0,因此只需保存有棋子的点的信息 用文件技术进行棋局保存,思路相同。 (7)五子棋恢复棋局 思路:首先从数据库文件中找到要恢复棋局的数据(即曾经保存的数据),然后把这些数据赋值给内存中相应的数组或者变量中,按照这些数据重新绘制棋盘和棋子,即完成了对棋局的恢复。 窗体启动事件应该完成的事情: 组合框中应该显示曾经保存的棋局名。因为每次保存棋局时,都是将棋局所有棋子的记录添加在表的最 后,因此表中关于棋局名的记录只能是类似于aaabbbbccccc的形式,而不可能是abbcacc的形式,根据 这个特点编程序取出表中不同的棋局名。 具体算法: 用一个字符串变量strfile初始值为空,从表的顶端向下依次移动记录指针,如果当前记录的棋局名字段和strfile不相等,说明进入另一个棋局的记录中,将该棋局记录的棋局名赋值给strfile,并加入到组合 框中,一直到表中最后一个记录 因为要从数据库中取岀相关数据到a数组中,因此要将a数组所有数据清零。 要建立一个data控件,与数据库连接起来,而后识别棋局(即表中的棋局名字段与在列表框中选择的棋 局名比较),将数据库该棋局中所有信息都赋值给a数组及相关变量。 刚才仅仅是数据的恢复,即将数据库中已经保存过的数据恢复到内存中,下一步应该根据内存中的数据重新绘制棋盘以及棋子。 重新绘制棋盘是独立的一块功能,因此考虑用全局子过程来实现,该子过程定义在模块中。思路如下: 清屏一绘制棋盘一根据a数组中的每一项的两个下标来决定绘制棋子的位置,根据每一项的值是1还是 2来决定在该位置绘制何颜色的棋子。 决定该黑白方走的blackwhite变量当时没有保存,可以采用在数据库中保存的方式来解决,本例中解决方法是通过数黑白棋子个数来决定恢复棋局后该谁走的。 因此设置了一个变量做计数器,每走一步棋计数器的值加一。 用文件技术实现棋局恢复,思路相同。 (8)悔棋 悔一步棋:用几个变量来表示关于一步棋的几个信息,每次下子都将该子的信息赋值给那几个变量,悔 一步棋即将那几个变量所表示的点的a数组信息清零。而后调用paint ()过程重画。 以上是教师带着学生完成的软件功能。 遗留问题:保存棋手姓名和棋局名并在恢复棋局的时候显示。(需要同学们自己完成)思路:在数据表中多建立两个字段,分别表示两个棋手姓名,同其它数据的保存类似。 三、设计日期 十二月 四、完成日期 十二月 五、实验体会 其实,一开始学习vb我就对它不抱有一定的热情,可能是因为要用到计算机以及编程问题,当时一想到有代码,就会无比的苦恼,但是为了让这门课顺利通过,我还是怀着一颗必须要学的心情。起初,我对待这门新课程和其他课

五子棋(JAVA版)实习报告及原代码

实习报告 课程名称信息系统认知实习实习题目java五子棋专业 班级 学号 学生姓名 实习成绩 指导教师 2010年1月 前言

摘要 五子棋作为一个棋类竞技运动,在民间十分流行,为了熟悉五子棋规则及技巧,以及研究简单的人工智能,决定用Java开发五子棋游戏。主要完成了人机对战和玩家之间联网对战2个功能。网络连接部分为Socket编程应用,客户端和服务器端的交互用Class Message定义,有很好的可扩展性,客户端负责界面维护和收集用户输入的信息,及错误处理。服务器维护在线用户的基本信息和任意两个对战用户的棋盘信息,动态维护用户列表。在人机对弈中通过深度搜索和估值模块,来提高电脑棋手的智能。分析估值模块中的影响精准性的几个要素,以及提出若干提高精准性的办法,以及对它们搜索的节点数进行比较,在这些算法的基础上分析一些提高电脑AI方案,如递归算法、电脑学习等。算法的研究有助于理解程序结构,增强逻辑思维能力,在其他人工智能方面也有很大的参考作用。 1引言 1.1课题背景 五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为连珠,英译为Renju,英文称之为Gobang或FIR(Five in a Row 的缩写),亦有连五子、五子连、串珠、五目、五目碰、五格等多种称谓。 五子棋起源于古代中国,发展于日本,风靡于欧洲。对于它与围棋的关系有两种说法,一说早于围棋,早在“尧造围棋”之前,民间就已有五子棋游戏;一说源于围棋,是围棋发展的一个分支。在中国的文化里,倍受人们的青睐。本世纪初五子棋传入欧洲并迅速风靡全欧。通过一系列的变化,使五子棋这一简单的游戏复杂化、规范化,而最终成为今天的职业连珠五子棋,同时也成为一种国际 比赛棋。 Java语言是当今最为流行的程序设计语言之一作为一门非常优秀和极为健壮的编程语言,它同时具有的面向对象,与平台无关,分布式应用,安全,稳定和多线程等优良的特征,使用Java语言,不仅可以开发出功能强大的大型应用程序,而且Java语言本身突出的跨平台的特性也使得它特别适合于Internet上的应用开发,可以这样说,Java的出现使得所开发的应用程序“一次编写,处处可用”的 实现成为了可能。 1.2本课题研究的意义 近来随着计算机的快速发展,各种各样的电脑游戏层出不穷,使得我们能有更多的娱乐项目,而棋类游戏能起到锻炼人的思维和修身养性的作用,而且棋类游戏水平颇高,大有与人脑分庭抗礼之势。其中战胜过国际象棋世界冠军-卡斯帕罗夫的“深蓝”便是最具说服力的代表;其它像围棋的“手淡”、象棋的“将族”

五子棋C++实验报告

(此文档为word格式,下载后您可任意编辑修改!)

一、需求分析 1.1开发背景 电脑游戏行业经过二十年的发展,已经成为与影视、音乐等并驾齐驱的全球最重要的娱乐产业之一,其年销售额超过好莱坞的全年收入。互联网的出现为电脑游戏行业发展注入了新的活力,凭借信息双向交流、速度快、不受空间限制等优势,让真人参与游戏,提高了游戏的互动性、仿真性和竞技性,使玩家在虚拟世界里可以发挥现实世界无法展现的潜能,改变了单机版游戏固定、呆板、与机器对话的状况。网络游戏的这些优势不仅使其在电脑游戏行业中异军突起并在某种程度上取代了单机版游戏,而且成为网络业三大(网上金融、网上教育和网络游戏)赢利且利润优厚的领域之一。 网络作为一种新兴的传播方式,主要包括三大内容:娱乐、资讯、通讯。提到网络娱乐,过去主要指的是单机版游戏,没有引入网络的概念但随着科技的发展,游戏娱乐产业也在成长目前,国内的游戏娱乐产业正处于起步阶段,特点表现为:第一,它是一种文化的传播。娱乐产业可以潜移默化地改变人的观念,当前,很多多媒体的播放已被电脑网络所取代。第二,网络游戏加强了人与人的沟通。第三,网络游戏具有一定的教育意义。网络游戏所具有的角色扮演的功能,使得玩家能通过互助更好地完成游戏中的各项任务。网络无国界,游戏在网络文化产业世界的发展中地位会越来越高。 目前在国外,休闲游戏如棋类等,玩家的年龄跨度非常大,这和我国目前网游市场以青少年为主要消费人群的状况截然不同。其实,网络可以解决空间的问题,网络和生活越来越息息相关,因此,开辟适合各个年龄层的游戏产品迫在眉睫。同时,这也涉及到一个企业开发的能力。娱乐产业发展到一定程度,通过不断锻炼和经验的积累,完全可以通过融入娱乐的成分把教条的东西深入浅出地展现给消费者。 就国内的发展来看,最近這两三年内国内的游戏公司如雨后春笋般的成立,所开发或代理的网络游戏更是不胜枚举。以全球游戏业界的发展来看,這几年韩国的表现最为突出,特別是在网络游戏的技术研发兴游戏制作,其所发行的网络游戏更成为全球游戏产业重要的指标之一。去年在美国洛杉矶所举行的 E3(Electronic Entertainment Exposition)展中,已经有几家的韩国厂商挤入世界第一线的游戏开发厂商之列。 近几年来,由于 3D 硬体绘图技术的突破,使得即时描绘的书面越来越精致,而且3D遊戏性更多元化更逼近真实世界,因此在遊戏产业中,3D 游戏已经逐渐取代2D游戏为游戏市场的主流,即使是网络游戏,也慢慢趋向3D化。然而游戏3D化将会带来的游戏开发上的困难等问题,这些问题以后都需要逐步解决。 人们面对电脑的时间越来越多,面对身边的人的时间越来越少,所以我们游戏所要达到的目的就是加大人们之间的沟通,让大家随时随地都可以体验到玩游戏的乐趣。而三子棋是一种受大众广泛喜爱的游戏,其规则简单,变化多端,非常富有趣味性和消遣性。同样的,通过这个游戏,既能在休闲时刻娱乐一下,也能在压力面临的时候放松一刻。

java程序设计实践实习报告

竭诚为您提供优质文档/双击可除java程序设计实践实习报告 篇一:JAVA实习报告 实习报告 实习性质:JAVA程序设计学生姓名:胡桂豪专业班级:计应103指导教师:万青、陈戈、谢先伟实习时间:20XX-12-31—20XX-1-6实习地点:4312 重庆工程职业技术学院 目录 1实习目的................................................. ................................................... . (4) 2实习内容................................................. ................................................... . (4) 2.1设计文

档................................................. ................................................... . (4) 2.2需求分析................................................. ................................................... .. (6) 2.3设计方法................................................. ................................................... .. (6) 2.3.1chessFrame主要功能................................................. . (6) 2.3.2游戏主窗体................................................. ................................................... (7) 2.3.3主菜单................................................. ................................................... ..(:java程序设计实践实习报告).. (8)

五子棋系统实验报告

湖南工业大学 课程设计任务书 2015—2016学年第2 学期 计算机与通信学院(系、部)计算机科学与技术专业计算机1502班级课程名称:面向对象程序设计 设计题目:五子棋 完成期限:自2016年6月13日至2016年6月19日共1周

指导教师(签字):年月日 系(教研室)主任(签字):年月日

面向对象程序设计课程设计 设计说明书 五子棋 起止日期: 2016年6月13日至 2016年6月18日 学生姓名王回 班级计算机1502学号15408100209成绩 指导教师(签字) 计算机与通信学院 2016年 6 月 18日

五子棋 一、课题的介绍和课题的任务 设计的课题名称:五子棋 实现以下功能: 功能1、模拟真实棋盘棋子 功能2、模拟人与人对战下棋 功能3、模拟实时胜负判断 功能4、模拟棋局的存储与读取 二、设计的要求 具有动画功能(即图像能即时移动),能实现人与人进行简单的对玩,能实现简单的胜负判断 三、系统的分析和系统中类的设计 CWZQApp类作用:初始化应用程序及运行该程序的所需要的成员函数CWZQDoc类作用:存放应用程序的数据以及实现文件的保存,加载功能 CMainFrame类作用:管理应用程序的窗口,显示标题栏,状态栏,工具栏等,同时处理针对窗口操作的信息 CAboutDlg类作用:向导自动生成对话框类 CWZQView类作用:管理视图窗口,在框架窗口中实现用户数据的显示和打印,存放添加的功能模块

CWZQView类中的成员函数与数据成员: void Save(); //**** //保存文件 void OnOpen() //打开文件 void over(CPoint point);//**** //检查是否结束voidOnDraw(CDC* pDC) //画棋盘函数 void OnLButtonUp(UINT nFlags, CPoint point)//模拟下棋函数 HCURSOR hcursorwhite; //**** //两个鼠标 HCURSOR hcursorblack; //**** intwzq[19][19]; //**** //棋盘数组 boolcolorwhite; //**** // colorwhite TRUE时白棋下, 否则黑棋下 CBitmapm_bmblack; //**** //棋子位图 CBitmapm_bmwhite; //**** void CWZQView::OnDraw(CDC* pDC) //构造棋盘,显示白棋以及黑棋 GetDocument() //获取文档指针,在视图中显示文档内容 CBrush //用于构造CBrush对象,然后传给需要画 刷的CDC成员函数 pDC->FillRect(myrect1,&mybrush1) // 画黑框线 四、系统的实现及调试 添加的功能: 1.图标,光标以及位图的绘制 程序运行开始鼠标在进入棋盘界面未放下棋子时变为类似棋子光标,此处需要描绘2种棋子光标: 黑白鼠标Cursor以替换当前鼠标: IDC_CURSOR1 黑棋子 IDC_CURSOR2 白棋子 说明: 由于下棋时我们必须把鼠标热点设置在中间,点击下图(图3-1-3)最右边按扭,然后把鼠标移动到图像中你想设置为热点的地方,按下鼠标左键。

java五子棋实习报告

Java程序设计基础 实习报告 课程名称Java程序设计基础实习题目java五子棋 专业 班级 学号 学生姓名 指导教师

Java实习报告 一、JAVA技术介绍: Java技术是一门编程语言,也是一个平台,它基于Java虚拟机技术,借助这个东西建立了跨平台的优势。 Java编程语言与众不同之处在于:Java程序既是编译型的(转换为一种称为Java字节码的中间语言),又是解释型的(JVM 对字节码进行解析和运行)。编译只进行一次,而解释在每次运行程序时都会进行。编译后的字节码采用一种针对JVM 优化过的机器码形式;解释器是JVM 的实现。 二、摘要 五子棋作为一个棋类竞技运动,在民间十分流行,本课题主要完成了五子棋人机对战和玩家之间联网对战2个功能。网络连接部分为Socket编程应用,客户端和服务器端的交互用Class Message定义,有很好的可扩展性,客户端负责界面维护和收集用户输入的信息,及错误处理。服务器维护在线用户的基本信息和任意两个对战用户的棋盘信息,动态维护用户列表。在人机对弈中通过深度搜索和估值模块,来提高电脑棋手的智能。分析估值模块中的影响精准性的几个要素,以及提出若干提高精准性的办法,以及对它们搜索的节点数进行比较,在这些算法的基础上分析一些提高电脑AI方案,如递归算法、电脑学习等。算法的研究有助于理解程序结构,增强逻辑思维能力,在其他人工智能方面也有很大的参考作用。

三、课题分析与设计 1)键盘上事先设定8个按键,分作两组,每组四个,分别代表两个人 用来控制棋子的上下左右键。 2)绘制棋盘,15条横线,15条竖线,在直线交点处下棋子(实心圆形)。 3)黑子先行,黑白交替下子,在棋盘上设定一个与棋盘格大小边长相 等的正方形,初始状态,正方形的中心位于期盼的中心点。当一方 欲走棋的时候,应用四个按键来控制所要下棋的位置,每按一次按 键,正方形都要向相应方向移动一个格,并且让喇叭发出某种声音,将要移出边界时,发出另一种警告声音并不让其移出边界。当按下 回车键时,应在正方形所在位置放下一个棋子,然后此组按键不能 操作,换另一个人下棋,用另一组按键,规则同前。 4)当任何一方有五个棋子沿着横,竖,斜连在一起时,系统自动判断 赢棋,并显示黑方或白方胜利。棋局结束后,任何一方均不能继续 操作。

《JAVA程序设计》五子棋制作实训

《JAVA程序设计》 实训报告 实训题目: 五子棋游戏制作 专业:计算机网络 班级:14网络(1)班 姓名: 指导教师: 2015 年12 月31日

目录 1.实训目的 (3) 2.实训题目描述和要求 (4) 2.1 实训题目描述 (4) 2.2 实训题目要求 (4) 3.实训报告内容 (5) 3.1 需求分析 (5) 3.2 概要设计 (5) 3.3 详细设计 (6) 3.4 编码 (7) 3.5 测试 (19) 4.总结 (24) 实训指导教师评语 (26)

1.实训目的 随着经济社会的迅速发展,人们生活水平有了很大的提高,人们的生活观念也发生了巨大的改变。高品质的生活、现代化得生活方式成为人们共同追求的目标;休闲、娱乐性活动作为时尚生活中的一部分,而被大多数的人所追捧。棋类项目作为一种智力型项目,可以益智健心、修身养性,也可以满足人们对于娱乐和休闲的新需求。一些项目比如五子棋等等,由于项目本身互动的特点,一直被人们所喜爱,因此得以生存和发展,成为许多人喜爱的休闲娱乐性棋类项目。而今,以网络技术为核心和计算机技术的现代网络技术已经在现实生活得到了十分的广泛的使用。休闲类网络游戏集合了益智性、趣味性、互动性、娱乐性于一体,已经成为多数人群的选择的休闲方式。 《Java程序设计》课程实训,学生可以将理论知识与具体实践相结合,巩固对JAVA相关方法和概念的理解,通过实训单机版五子棋游戏的编程,加深对所学知识的理解和应用。如: 通过实训能够结合实例进一步理解面向对象程序设计的基本概念,掌握程序设计的基本方法和技巧,灵活的使用包,进一步的理解接口,熟练的掌握在接口中对事件的实现。深入理解和灵活运用面向对象程序设计的基本特性,培养良好的程序设计风格,提高抽象思维、逻辑思维的能力。 并且让学生能够基本使用实训软件eclipse,以及安装JDK和环境变量的配置。通过本次实训,可以开拓思维,增强编程思想,为深入学习JAVA打下良好基础,在学完此门课程后,能使用Java开发小型应用程序。

五子棋课程设计实验报告

C语言程序设计报告 题目: 五子棋 班级: 电气Q1041班 人数: 3人 小组成员: 周啸天、万广富、黄山奇

指导老师:桂超 时间: 2011.11.30

目录 第一章课程设计的目的和要求 (3) 1.1 课程设计的目的 (3) 1.2 课程设计的要求 (3) 1.3 课程设计的实验环境 (3) 第二章功能描述 (4) 第三章总体设计 (5) 3.1 功能模块设计 (5) 3.1.1 任务执行流程图 (5) 3.1.2 下棋函数流程图 (6) 3.2 数据结构设计 (7) 3.2.1 定义结构体 (7) 3.2.2 定义数组 (7) 3.2.3 全局变量 (7) 3.3 函数功能描述 (7) 第四章程序实现 (8) 4.1源码分析 (8) 4.2运行结果及界面介绍 (22) 第五章后记 (27)

第一章课程设计的目的和要求 1.1 课程设计的目的 1.加深对C语言数据类型,运算,语句结构及其程序设计的基本方法理解和掌握; 2.熟练掌握流程图的绘制、程序设计文档的书写; 3.通过编写一个完整的程序,一方面可以检查我们这学期的学习情况,为以后的学习打下坚实的基础; 4.熟悉C语言游戏编程,掌握五子棋游戏开发的基本原理,从而为以后的程序开发奠定基础。 1.2 课程设计的要求 1、编写程序代码,调试所写程序使其能够正确运行; 2、能进行基本的五子棋操作,有图形界面,能够用键盘操作; 3、能够实现悔棋、存档和读档等附加功能 1.3 课程设计的实验环境 该课程设计在设计与实验过程中需要在windows XP系统/windows 2000以上系统中进行,程序设计要求在visual C++6.0平台中进行,完成代码的编写、编译、调试、测试等工作。本游戏对计算机硬件和操作系统要求极低,所以在这里只是把自己的电脑硬件参数和系统参数列下: 硬件:Cpu:2.1GHZ,内存,2GB,硬盘:320GB,操作系统:windows xp 软件环境:安装VC++6.0

五子棋c#实训报告

九江学院 实训报告 实训名称:Java编程 指导老师:李兴南雷波 姓名:肖世明 学号:11208020103 班级:理学A1221 提交日期:2015年10月20日1.实训目的:

通过本实训,应达到如下目标: 理解委托的概念,掌握线程之间通过委托与控件交互的方法。 理解异常处理的机制,掌握异常处理语句的用法。 理解线程的概念,掌握多线程编程的一般方法。 掌握基于TCP的应用编程技术。 2.实训题目: 通过开发一款网络对战五子棋游戏,熟练掌握Java网络编程技术,亲历一个项 目开发的流程 3.功能描述: 程序基本功能描述如下: 实训项目要求使用Java编程语言,基于客户机/服务器(C/S)模式,开发一款网络对战五子棋游戏。服务器端可以支持多玩家同时在线游戏。玩家可以通过客户端登陆到服务器端与其它玩家进行五子棋游戏对战。 项目基本要求描述如下: 1.当服务器“启动服务”之后,可以允许玩家连接服务器;当服务器“停 止服务”之后,不允许玩家连接服务器。 2.玩家请求登陆时需提交用户名,在没有“满员”和“重名”的情况下, 服务器允许玩家登陆;在“满员”或“重名”的情况下,服务器拒绝玩 家登陆。 3.玩家登陆成功之后,进入“游戏大厅”界面,并获得其他在线玩家的信 息,其他玩家也能获得该玩家的信息。 4.玩家注销登陆之后,断开与服务器的连接,并关闭“游戏大厅”界面。 5.玩家“落座”之后,进入“游戏桌”界面,并获得该桌玩家的信息。如 果有对家落座,对家也能获得该玩家落座的信息。其他玩家也能获得该 玩家的状态的改变。 6.玩家“起身”之后,进入“游戏大厅”界面。如果有对家落座,对家也 能获得该玩家起身的信息。其他玩家也能获得该玩家的状态的改变。 7.玩家“请求开始”游戏之后,初始化“棋盘”界面,玩家进入“就绪” 状态。如果有对家也处于“就绪”状态,则开始游戏。其他玩家也能获 得该玩家的状态的改变。 8.游戏开始之后,首先黑方“行棋”,之后双方轮流行棋。 9.玩家“落子”之后,对家也能获得“棋盘”状态的改变。如果玩家“获 胜”,对家能得知自己“失败”;否则双方继续“行棋”。

Java五子棋毕业设计论文

题目:JAVA五子棋对弈程序的设计与实现

目录 摘要 .................................................................... I Abstract ............................................................... II 1 引言 (1) 2五子棋对弈程序的可行性分析 (1) 2.1 五子棋系统设计思路 (1) 2.2 经济可行性分析 (1) 2.3技术上的可行性 (1) 2.4 管理上的可行性 (2) 3 JAVA五子棋对弈现的需求分析 (2) 3.1 用户需求分析 (2) 3.1.1 普通用户主要需要: (2) 3.1.2 系级管理员主要需要: (2) 3.1.3 系统用例图: (3) 3.2 数据字典的描述 (3) 3.2.1用户信息表的数据字典的描述: (3) 3.2.2用户每次游戏信息表的数据字典描述: (4) 3.2.3 用户每盘棋信息表的数据字典描述: (4) 3.2.4 用户每步棋信息表的数据字典描述: (4) 3.3五子棋对弈系统的数据流图 (4) 3.3.1 用户登录数据流图(DFD) (5) 3.3.2普通用户界面显示数据流图(DFD) (5) 3.3.3管理员用户界面显示数据流图(DFD) (6) 3.3.4用户棋局回放数据流图(DFD) (6) 4 JAVA五子棋对弈系统分析与设计 (7) 4.1 系统设计总体思想、目标 (7) 4.2 五子棋人机对弈系统的ER模型 (7) 4.3 JAVA五子棋对弈系统结构、功能设计 (9) 4.3.1 系统结构设计 (9) 4.3.2 系统功能模块设计 (10) 4.3.3设计思路 (11) 4.4 程序设计分析 (11) 4.5 类的设计 (12) 4.6五子棋对弈系统的数据库设计 (15) 4.6.1 系统用户表 (15) 4.6.2 用户棋局表 (16) 4.6.3 用户棋盘表 (16) 4.6.4 用户下棋信息表 (17) 5五子棋相关基础 (17) 5.1 五子棋相关解释 (17) 5.2 五子棋相关规则 (17) 5.3 五子棋常用术语 (18) 6 系统平台、计算模式及技术 (19)

java五子棋小游戏实验报告(附源代码)

手机五子棋游戏的设计与实 现 专业: 姓名: 班级: 学号: 指导教师:

J2ME(Java 2 Micro Edition)是近年来随着各种不同设备,尤其是移动通信设备的飞速发展而诞生的一项开发技术。它因其“write once,run anywhere”的Java特性而提高了开发的效率。随着手机性能的不断提高,手机休闲娱乐应用将成为PC休闲娱乐应用之后又一重要业务增长点。棋类游戏规则单一,比较适合在手机等便携终端推广。 由于具有跨平台、易于移植、占用空间小的优势,J2ME成为移动应用开发平台的主流,并提供了很多用以支持移动应用软件的开发的API。现将该技术用于这次的手机游戏开发,可以实现游戏的快速开发,不但便于查看游戏运行过程中内存的占用量和程序的每一部分代码消耗了多少处理器时间,而且可以不断地优化代码,使代码具有高度的复用性、可扩展性、可维护性。 游戏的开发以J2ME为平台,利用Java技术,结合J2ME的MIDP技术,并对于程序设计思想,重要类、方法等展开讨论。在对弈部分,分析设计走棋算法,选择合适的方式组织成代码,实现基本的人工智能。过程中使用了J2ME中的CLDC/MIDP软件体系,主要运用了MID Profile的特定类的支持,来完成游戏的开发。 关键词:J2ME;CLDC;MIDP

J2ME is a kind of fast developing technology implemented on various devices especially mobile communication equipments. It improves the efficiency of the development process because of its "write once, run anywhere" nature. The development trend of the entertainment market based on the cell phone is very obvious because the handset performance enhances unceasingly. The entertainment market based on the cell phone will to be the new important business growth point follow the PC entertainment market. As the rules of a single chess game, it is more suitable for mobile phones and other portable terminal extension. J2ME has been the preferred platform for development because of its platform independent and compatibility, and provides a lot of APIs to support the development of mobile application software. The technology for mobile game development, can achieve the rapid development of the game. It is not only easy to observe the memory consumption and processor consumed time during the operation of the game, but also can optimize the code, so that the code has a high degree of reusability, scalability, maintainability. The game has designed by J2ME, the Java technology and the MIDP technology. I studied the procedure thought, the important class and the method. In the playing chess part, I have analyzed the algorithm, choosed the appropriate way to organize the code and realized the basic artificial intelligence. On the other hand,I learned software system of CLDC/MIDP and the specific class of the MID Profile to complete the game development. Key words: J2ME;CLDC;MIDP

五子棋实验报告——李寒雪

电子科技大学数学科学学院 2018-2019-2学期 实验报告 (实验)课程名称程序设计基础综合实验 学生姓名:李寒雪学号:2015060101029 报告评分:指导教师:胡科 实验地点:基础实验大楼227 电子科技大学教务处制表

实验报告1 一、项目名称:主界面与棋盘设计 二、实验学时:6 (3~4周) 三、算法描述: c语言字符界面,菜单选项有: 0.人人对弈 1.人机对弈 2.退出游戏 3.游戏说明 四、核心代码: int main() { int temp; while(1){ std::cout << "0.人人对弈\n1.人机对弈\n2.退出游戏\n3.游戏说明\n"; std::cin >> temp; if (temp == 0){

PVP(); } else if (temp == 1){ PVC(); } else if(temp == 2){ break; } else if(temp == 3){ std::cout << "五子棋游戏:率先连成五颗方为赢家\n"; } else std::cout << "无此选项"; } } 五、实验结果(含运行界面截图): 1、运行程序进入菜单选项界面

2、选择0.人人对弈或者1.人机对弈进入对弈的字符棋盘界面,通过选择行列号来下子 3、选择3.游戏说明展示游戏规则 4、选择2.退出游戏,成功退出程序

六、总结及体会: 若用户在使用中出现其他选项应给与一定的提示信息。 实验报告2 一、项目名称:移位与胜负判定 二、实验学时:6 (4~5周) 三、算法描述: 在价值判定类中的成员函数isWin实现,对给定的参数当前落子坐标和棋盘对象进行判定,每次落子判定一次,每次判定需要遍历8个方向,由函数PVP和PVC调用,返回布尔量是否赢。 四、核心代码: bool Evaluator::isWin(int x, int y, ChessBoard::State state) {

Java五子棋设计报告

南京晓庄学院 《JAVA程序设计》 课程设计报告 题目: 五子棋游戏的设计与实现 姓名: 陶野 学号: 班级: 12软件工程转本2班 指导教师:王峥 完成时间7月1日 成绩: 信息工程学院 2015年6月

目录 1引言 ............................................................... 系统开发背景 (2) 系统开发的目的和意义 (3) 完成的主要工作 (4) 2需求分析和总体设计 (4) 需求分析与设计思路 (5) 关键技术说明 (5) 需求分析 (5) 系统设计方案与思路 (5) 系统目录结构说明 (5) 系统功能结构 (6) 3详细设计 (7) 系统模块实现 (9) 4系统运行结果 (10) 5课程设计总结 (12)

五子棋游戏的设计与实现 1引言 五子棋相传起源于四千多年前的尧帝时期,比围棋的历史还要悠久,可能早在“尧造围棋”之前,民间就已有五子棋游戏。有关早期五子棋的文史资料与围棋有相似之处,因为古代五子棋的棋具与围棋是完全相同的。在上古的神话传说中有“女娲造人,伏羲做棋”一说,《增山海经》中记载:“休舆之山有石焉,名曰帝台之棋,五色而文状鹑卵。”李善注引三国魏邯郸淳《艺经》中曰:“棋局,纵横各十七道,合二百八十九道,白黑棋子,各一百五十枚”。这段虽没明讲是何种棋类,但至少知道远古就以漂亮的石头为棋子。因而规则简单的五子棋也可能出自当时,并是用石子作棋子。亦有传说,五子棋最初流行于少数民族地区,以后渐渐演变成围棋并在炎黄子孙后代中遍及开来。 1.1系统开发背景 在计算机逐步渗入社会生活各个层面的今天,计算机已经成为了 人们日常生活中的一部分,越来越多的人使用计算机办公、娱乐等等。 在这其中,系统自带的小游戏也占据了相当重要的地位,与那些网络 游戏和3D游戏相比,它有编写简单容易上手等特点,非常适合人们在 完成工作的时候适当的娱乐要求。这些小游戏大都是以益智和娱乐为 目的,不仅给紧张工作的人们以放松,还可以让人们的大脑得到开发。

数据结构课程设计实验报告五子棋

湖南科技学院实验报告 系部:计算机与通信工程系 专业:软件工程 姓名:范清文 学号:201008003113 班级:软件1001班 课程名称:数据结构程序课程设计 指导老师:卿武明 实验项目:制作简单的五子棋 课程设计目的:1:对本学期所学的专业知识进行实践运用 2:制作五子棋并实现它的图示化 实验环境:Visual C++6.0 实验内容(算法、程序、步骤和方法): #include #include using namespace std; int x,y,Step=0; bool flag=0; char Switch; char map[20][20][3]={ {"┌","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┐"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"└","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┘"}}; char copymap[20][20][2]; float Player[20][20][1]; int Table[20][20] ,Showboard(),Play(),Interface(),Initboard(),Judgewin(),Deuce() ,Initdata(); bool legal(),Overflow(); int Interface() { char a; cout << "\n\n五子棋\n \t\t─\n 制作人:范清文(201008003113)\n\t\t────\n"; cout << " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl; cout << " ~~ ~~" << endl; cout << " ~~ 1:人人对战~~" << endl; cout << " ~~ ~~" << endl; cout << " ~~ 2:退出~~" << endl; cout << " ~~ ~~" << endl; cout << " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl; cout << "\n 请选择:"; cin >> a; if(a=='2') {

相关文档
最新文档