简介五子棋游戏的程序
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
哈尔滨自动化成套控制设备厂 方昭红
五子棋多媒体游戏是一种易学易懂的搏奔游戏。
可以人机对战 .联机对战。网络对战。本游戏具有图、
文、声并茂的特色,充分体现了多媒体的特点,使人在
游戏中不但可以体会到计算机智能化的神奇 ,更可以
感 蓟 多 媒 体 的无 穷 魅 力 。本 游 戏 只 能 运 行 在
Windows 95/98/20∞ 或Windows NT或更高的版本
Windows操作系统上运行 。它是由 Microsdt Visual
Basic 6。0开发的,编程风格完全是面向对象的程序
设计,外观是 Windows的窗口界面。人机界面非常友
善,这是Visual Basic语言风格优势体现,但此游戏 目
前只能单机操作,人机对弈。
程序的整体组织。程序由五个窗体构成,其中有
六个主要的函敦(Function)和于程序(Sub)是主要功
能实现的关键,各个窗口和函敦实现不同的功能 。窗
体主要是实现应用程序界面各代码的结合。各函敦
(Function)则实现具体的运算和判断功能。各窗体功
能如下表
图表: fo r-e1 come.fr■ 启 动 程 序 时 显
示 装 载 蠢 面 、也
可 以 显 示 版 本
信 息
Fo rm8i n f r_ 程 序 运 行 时 的
主 界 面 、用 来 显
五 子 棋 棋
盘 ,各 功 能 按 忸
Fo r_enu f r_ 显 示 右 t 薹
苴
forabout.fr_ 程 序 帮 助 和
简 介
forme.frm 作 者 简 介
6个自建的Function0~l Subo功能如下:
D RA■CHESS 实 现 游 戏 者 或 机 嚣 在
棋 盘 上 落 子
I S■IN 判 断 胜 负
LINKF0U R 机 嚣 用 于 判 断 连 四 的
函 数
LI NKTHR EE 机 嚣 用 于 判 断 连 三 的
函 数
TE S TV^ L 帆 嚣 用 于 蔫 试 棋 盘 上
各 点 的 分 值
MA XVAL 机 嚣 用 确 定 量 佳 落 点
的 函 数
程序功能的实现。整个五子棋程序的运行过程表
面上看是以窗体的各种变化实现其各种功能的。实质
上是以各种事件程序和函数的运算、判断来驱动各种
外部对象使游戏真正实现的。
l、启动窗体(Forwdcome)。比较简单。只要添加一
个图片框控件,加载一个命令(Command Button)按钮。
2、主窗体~ormain)却是最重要的窗体。所有重要控件
按钮都加在主窗体0tom.in)中。因为游戏的进行始终
是在主宙体(Formain)上进行的,在这里加了一个用于
绘图的图片框控件(Picture Box),在(Picture Box)上使
用循环语句和绘线方法实现绘制棋盘。算法如下 :
F0r I=l to 15
Picture1.1ine(140.(I一1)*onewidtll
+140)-.(.5400.fI一1)*onewidtll+140)
Picture1.1ine((1—1)*onewidtll+l4o.
140)-((1-1)‘onewidth+140。54oo)
Next I
主要用此语句来实现绘制棋盘程序 。必须放在主
窗体的 Activate或 Palnt事件程序中。否则绘制的方
法是不能实现的。另外就是添加几个命令按钮 。实现
新局、结束 、退出、和音效等功能 ,再创建 3个顶层菜
单。分别为“游戏 设置~帮助”其中功能大致为控制
棋局和设置棋盘效果及游戏和个人简介等功能。
棋盘风格代表棋盘选择的颜色
风格一 yellow yellow_check=True Qbeolor(14)
风格二 red red_check=Tree Qbcolor(12)
风格三 green green_cheekfTrue Qbcolor(10)
风格四 blue blue_ch~ck=True Qbcolor(¨ )
风格五other other_cheek=Tree Qbcolor(7)
恢复默认 res~r rester_checkffiTrue
RGB(133,35。3)
3、右键菜单宙体~ormenu)。主要是在宙体上加人
一 串命令按钮(Command Button)控件,窗体用鼠标右
键事件程序控制弹出来,主要对此窗体和命令件进行
必要的属性设置和执行中设置,达到菜单的作用。
右键菜
新 局
电 脑 音 乐 棋 盘
再 见
4、关于游戏(Forabout)和作者简介fforme)两个窗
体基本没有什么程序。主要是用了 Lable和 Picture来
实现文本的输人 。用 Form.show和 Urdoad rifle来对窗
体进行控制切换。
程序设计的核心是靠以下几个自建函敦和子程
序的功能来实现的:
(一)StIb drawch~0绘棋子的子程序。此程序主
要实现在棋盘的的指定位置上绘制棋子的功能。子程
序主要靠自变量的传人值来确定在棋盘上那个位置
绘制棋子 。用 if语句来判断一个 自变量的值来确定当
前需要绘的是黑子还是白子。以确定绘什么样的棋
子。
(二)Sub lswin(i。j as integer。vhchass as integer)
此程序是用于判断胜负过程,程序用自变量的传人值
来确定当前落点的坐标点 。用 自变量vhchass来判断
是哪一方棋子,再以6。j)此点为中心。向八个方向追
历。每一个方向寻四个点。逐个与当前的点比较。是否
相同,如果在某个方向寻找四个点与当前点相同。且
构成五个点连成一条线 。则当前的子便胜利 .否则发
现在某个方向上。小于四个棋子中有一个棋子与当前
棋子不同。记录前棋子 。退出循环,反向寻找 。重复以
上方法比较 。但 比较的个敦为 5减 去上次记录的敦
值。如果都相同则胜利,否则换方向去寻找。都是重复
和循环的过程,循环量是比较大的。如果八个方向上
均失败了。则表示 当前没有连五的棋子 。即没有胜利
的一方。这样要上 12"12‘4*4次的比较运算 ,但对于
计算机来说也只是徼不足道的运算量。所以立刻就会
判断是否胜利。
利用参敦S(1 1D 4。0 TO 1)代表四个方向
S(1。0) S(1。1)=l s(2,0) l s(2,1)
S(3。0)=l S(3。1)=l s(4。o) l s(4。1)=一1
当S(I。J)取负时表示反方向。
If Chess +k‘S(n,o)。wj+k‘S(n。1))OVbehess
表示此棋位不是本方棋子
If Chess 一k.S(n。o)。wj-k‘S(n.1))OVbehess
变负号代表变方向
其测试程序如下:
Text3.Text= Gi
Text4.Text= Gi
If Gi= 12 And Gi= 12 Then
Picture1.FmColor= vbGreen
Picture1.Circle(140-KGi一1)*Onewidth,140+ j—1)‘
Onewidtl1).120
Picture1.Circle (14O Gj+S(n,0)一1)*Onew~dtb,140+
(Gj+S(n,l卜1)*Onewidth),120
Picture1.Circle(140+(Gi+2’s(n,0】一1)*Onew~dth。140+
(Gi+2 S(n。1)一1)*Onewidth)。120
Picture1.Circle(140+(Gi+3’S(n,0)一1)*Onew~dth,140+
(Gj+3*S(n,1)一1)*Onewidtl1),120
数字天地 圆
Picture1.Circle(140 i+4‘S(n,o)一1)*Onewidth,l4o+
(Gj+4*S(n,1)-1) Onewidth)。120
EIld If
(三)unction linkfour(i As Integer,j As Integer,
vhchess As Integer)此函敦的功能主要是用来判断棋
盘上的每一点,并且寻找这个点的周围是否有相同的
个点。且这四个点连在一条直线。此函敦用了三层循
环语句 ,前两层用来遍历棋盘上所有的点,第三层用
来八个方向上逐个子比较.中间用四个 if判断语句
来,确定是否有四个相同的,执行此函敦要进行
12"12"4次比较运算。
判断语句判断下面图的四种情况:
If Chess(Gi,Gj)=0 And Chess(Gi+S(n,o),Gj+s(n,l"=
Vbehe~ And Chess(Gi+2‘S(n,0) Gj+2‘S(n,1))=
Vbehass And Chess(Gi+3‘S(n,o)。q+3‘S(n,1))=
vbch And cII (Gi+4‘S(n,o),Gj+4‘S(n,1))=
Vbche~ Then
Linkfour=True:Exit Function
EheIf Chess(Gi,Gj)-、 heBB And CAeas(Gi+S(n,o),Gj
+s(n,l" And Chess(Gj+2‘S(n。o),Gj+2‘S(n,1))=
Vbche~ And cII (Gi+3.s(n,o)。Gj+3‘S(n,1))=
Vbehass And Chess(Gi+4‘S(n,o】,Gj+4‘S(n,1))=
Vbehass Then
Linkfour=True:Gi=Gi.IS (n,0):Gj=Gj+S(n,1):Exlt
Function
ElseIf Chess(Gi。Gj)=Vbche~ And clI∞B(Gi+S(n,o】,
Gj+s(n。1))=Ⅵ.cll∞B And CAe~(Gi+2*S(n。0)。Gj+2‘S
(n。I"=0 Arld Ch∞B(Gi+3‘S(n,0】。Gj+3‘S(n。I))=
Vbche~ And cII∞B(Gi+4‘S(n。o)。q+4‘S(n。1))=
Vbch∞B Then
Linkfom'ffiTrue:GifGi+2‘S(n。o):Gj=Gj+2*S(n。1):Exit
Function
Ⅱself CAe~(Gi。Gj)=Vbche~ And Chess(Gi+S(n。o】,
q+s(n。1))--Vbche~ Arid CAe~(Gi+2‘S(n。o】。Gj+2.S
(n。1))ffiVbchetm Arid clI (Gi+3‘S(n。o),Gj+3‘S(n。1))
=0 And Chess(Gi+4‘S(n。o】,Gj+4‘S(n。1))=Vbchetm
Then
LinkfourfTrue:Gi=Gi+3*S(n。0):q=Gj+3*S(n。1):Exit
Function
Elasif Chess(Gi。Gj)=Vbche~ And CAe~(Gi+S(n。o】。
q+s(n。1))=Vbch∞B And Che~(Gi+2‘S(n,o】,Gj+2‘S
(n。1))ffiVbcheas And Chess(Gi+3‘S(n.o),q+3‘S【n,1))
=Vbcheas And Chess(Gi+4*S(n。o)。Gj+4‘S(n,1))
Then
Linkfour=True:Gi=Gi+4·S(n,o):Gj--'Gj+4"S(n,1):Exit
Function
假设 Gi=12 Gj=12 S(n。o】。一l S(n。1):l
(四)Funetion linkth~ (i As Integer, i As
Integer)连三函散与连四函敦类似.只是用于找具连三
的点功能。
(五)Funetion Tastval (ByVal i As"Integer.
ByVal j Ae Integ~r)此函数是用于追历整个棋盘。判
断是否为空点,如果是空点则追历此点周围存在棋子
的情况.八个方向分别与 M0。j)
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
值比较。给每一
点一个分值。用于以后电脑比较分值来确定最佳落点
坐标。
说明:M敦组在窗体装如时已经赋值。此值表面
看乱无章法。其实是程序员对五子棋下法的一种理
解。共有2o个方案。用于机器判断最佳落点,使程序
有了简单的智能。比如:取 M(2。o】到M(2。9】的值则程
序以直线判断落点。而取M(5。o)到M(5,9】的值则程序
以三格为边距的正方型的逻辑判断落点。取 4。O一9则
为两格边距的正方型。
(六)Function Maxval G As Integer。J As Integer)
此函敢是调用上一个函敦Tastval0。将上一个函敦测
试出来的值捧序,其中最大值的点的坐标便是机器落
点的最佳位置。它主要是用了一个简单的捧序算法来
完成此项工作,得出_最大值。传出点的坐标值。
本程序的五子棋游戏 ,适应人群广。具有几个简
单功能。如打开背景音乐,改变棋盘颜色等。主要的功
能是人机大战,强大及完善的落子算法,使机器迅速
能找到最佳落点。锻炼人的思维和判断能力及周密的
想象力,非常适合大众的游戏,老少皆宜。
维普资讯 http://www.cqvip.com