VB.NET实现五子棋的人工智能(2)

时间:2008-12-07   来源:   网友评论:0   人气: 571 作者:



  1、用计算机的思想描述整个下棋的过程

  考虑步骤:

  (1)为了简便我们可以先让电脑先走第一步棋,电脑每走一步就会封掉许多玩家的获胜可能情况。

  (2)当玩家走棋的时候我们首先应该考虑玩家走棋的合法性。

  (3)如果合法,那么玩家也会封掉许多电脑的获胜的可能情况。

  (4)电脑的思考路径:首先判断当前玩家和电脑的所有获胜组合是否需要进行加强赋值,
是进行加强赋值,否则进行普通的赋值。

  (5)比较当前玩家和电脑谁的分值最大。将分值最大的点作为电脑的下一步走法。

  2、利用vb.net窗体和图形工具建立五子棋的棋盘界面

  (1)添加一个picturebox控件

  作用:使用picturebox控件绘制棋子和棋盘

  (2)添加一个label控件

  作用:显示当前的获胜标志,也就是当某一方获胜或和棋时显示此标签。

  (3)添加一个mainmenu控件

  作用:控制游戏的开始或结束

  (4)添加一个mediaplay组件

  作用:使程序可以播放音乐。

  3、设置整体框价

  我们采取10*10的棋盘,为主要的平台。利用数组定义整个棋盘桌面,利用数组定义获胜组合以及获胜标志等。

  二,声明全局数组和变量

  定义虚拟桌面:

Dim table(9, 9) As Integer

  定义当前玩家桌面空格的分数:

Dim pscore(9, 9) As Integer

  定义当前电脑桌面空格的分数:

Dim cscore(9, 9) As Integer

  定义玩家的获胜组合:

Dim pwin(9, 9, 191) As Boolean

  定义电脑的获胜组合:

Dim cwin(9, 9, 191) As Boolean

  定义玩家的获胜组合标志:

Dim pflag(191) As Boolean

  定义电脑的获胜组合标志:
Dim cflag(191) As Boolean

  定义游戏有效标志:

Dim theplayflag As Boolean


  三、初始化游戏

'*****************************************************************************
'** 模块名称: initplayenvironment
'**
'** 描述: 此函数主要功能如下:
'** 1. 设置背景音乐。
'** 2. 设置游戏状态有效。
'** 3. 初始化游戏状态标签。
'** 4. 直接指定电脑的第一步走法。
'** 5. 初始化基本得分桌面。
'** 6. 电脑和玩家获胜标志初始化。
'** 7. 初始化所有获胜组合。
'** 8. 重新设定玩家的获胜标志。
'**
'*****************************************************************************
Sub initplayenvironment()
player.FileName = ".\music\zhyu01.mid"
player.Play()
theplayflag = True
'游戏有效
Label1.Visible = False
'游戏状态标签不显示
PictureBox1.Refresh()
'清空picturebox1的内容
yuandian(130, 130)
'调用绘图函数绘制当前电脑先走的位置
Dim i, j, m, n As Integer
For i = 0 To 9
For j = 0 To 9
table(i, j) = 0
Next
Next
'桌面初始化
For i = 0 To 191
pflag(i) = True
cflag(i) = True
Next
'获胜标志初始化
table(4, 4) = 1
'由于我们设定电脑先手,并下了4,4位所以将其值设为1
''' ******** 初始化获胜组合 ********
n = 0
For i = 0 To 9
For j = 0 To 5
For m = 0 To 4
pwin(j + m, i, n) = True
cwin(j + m, i, n) = True
Next
n = n + 1
Next
Next
For i = 0 To 9
For j = 0 To 5
For m = 0 To 4
pwin(i, j + m, n) = True
cwin(i, j + m, n) = True
Next
n = n + 1
Next
Next
For i = 0 To 5
For j = 0 To 5
For m = 0 To 4
pwin(j + m, i + m, n) = True
cwin(j + m, i + m, n) = True
Next
n = n + 1
Next
Next
For i = 0 To 5
For j = 9 To 4 Step -1
For m = 0 To 4
pwin(j - m, i + m, n) = True
cwin(j - m, i + m, n) = True
Next
n = n + 1
Next
Next
''' ******** 初始化获胜组合结束 ********
For i = 0 To 191
If pwin(4, 4, i) = True Then
pflag(i) = False
End If
Next
'由于电脑已下了4,4位所以我们需要重新设定玩家的获胜标志
End Sub


 

文章评论