vb 二维数组_高能 | VB编程开发的五子棋游戏!

五子棋游戏开发

古语有云,棋如人生。伴随着悠扬婉转的旋律,两人在棋盘上对弈,不断思考,运筹帷幄,即增长了智慧、修炼了身心,也陶冶了情操。

今天,我们就共同来学习如何用VB编程开发五子棋游戏。

程序界面如下图

4cfe02ad6dc3b9f7724d2301e6b06c93.png

准备工作

首先添加完成功能而必须用到的控件,然后分析逻辑,写代码实现。

我们用到了菜单编辑器、标签、棋盘表格我们使用图形方法来绘制完成。

生成棋盘表格

Private Sub Form_Paint() '以(10,10)为左上角坐标画一个16*16,每格边长为20像素的棋盘Cls         '每次开始时清除上次内容Dim i As IntegerScaleMode = 3   '设定画布单位为像素For i = 10 To 330 Step 20    Me.Line (10, i)-(330, i)    Me.Line (i, 10)-(i, 330)NextEnd Sub

菜单编辑器使用快捷键Ctrl+E,同时按即可弹出。根据功能需要,添加相应的菜单标题、名称,然后点击确定即可。

18614ac85662afad6c9976b970db193c.png

五子棋游戏实现完整代码

1

实现代码

Option Explicit

Dim blackturn As Boolean    '是否轮到黑方下子

Dim whiteturn As Boolean    '是否轮到黑方下子

Dim qipan(0 To 15, 0 To 15) As Integer '用二维数组表示棋盘

Dim inti As Integer     '数组元素

Dim intj As Integer

Dim boolF As Boolean     '表示棋局状态:进行/结束

Private Sub begin_Click() '重新开始

Me.Cls '清除窗口

For inti = 0 To 15

    For intj = 0 To 15

        qipan(inti, intj) = 0 '数组清零

    Next

Next

Form_Load '重画棋盘

End Sub

Private Sub exit_Click() '退出

Unload Me

Set Form1 = Nothing

End Sub

Private Sub Form_Load()

Form_Paint '画棋盘

blackturn = True    '黑方先下

boolF = True   '开始

Label1.Caption = "黑方先下"

End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) '下子

Dim intx As Integer  '落子横向位置

Dim inty As Integer  '落子竖向位置

If boolF = False Then '确定棋局是否在进行中,否,跳出

    Label1.Caption = "结束"

    Exit Sub

End If

'确定落子的确切位置

'如果鼠标点击位置不在棋盘中,则跳出

If x < 10 Or x > 310 Or y < 10 Or y > 310 Then

    Exit Sub

End If

'如果鼠标点击位置在棋盘中,则转化为相应棋盘落子点的坐标

If (x - 10) Mod 20 < 10 Then

   intx = x - (x - 10) Mod 20

Else

   intx = x + 20 - (x - 10) Mod 20

End If

If (y - 10) Mod 20 < 10 Then

   inty = y - (y - 10) Mod 20

Else

   inty = y + 20 - (y - 10) Mod 20

End If

'把坐标转换成数组中的相应元素

inti = (intx - 10) / 20

intj = (inty - 10) / 20

'如果该数组元素不为零,即表示棋盘中相应点已有棋子,则跳出

If qipan(inti, intj) <> 0 Then

    Exit Sub

End If

'画子(圆)

If blackturn = True Then

    '黑色

    Me.FillColor = RGB(0, 0, 0)

    qipan(inti, intj) = 1   '黑子赋1

    Label1.Caption = "白方"

Else

    '白色

    Me.FillColor = RGB(255, 255, 255)

    qipan(inti, intj) = 2   '白子赋2

    Label1.Caption = "黑方"

End If

Me.FillStyle = 0   '不可缺

Me.Circle (intx, inty), 8

'判断是否有五子连线

Call IfFiveLine

'轮流

blackturn = Not blackturn  '取反

End Sub

Private Sub IfFiveLine()   '判断是否有五子连线

Dim strwho As String        '下子方名称

If qipan(inti, intj) = 1 Then   '表示黑方下的子

    strwho = "黑方"

Else

    strwho = "白方"

End If

'分别判断横竖,对角线是否有五子,此段代码比较复杂,可能那以理解,但其执行效率极高

'非常适合与棋盘格子很多的情况

If samelinenums(1, 0) >= 5 Or samelinenums(0, 1) >= 5 Or samelinenums(1, 1) >= 5 Or samelinenums(-1, 1) >= 5 Then

    MsgBox strwho & "胜!"

    boolF = False  '棋局结束

End If

End Sub

Function samelinenums(changei As Integer, changej As Integer)   '判断同一直线上的棋子数

Dim i As Integer

Dim j As Integer

Dim num As Integer  '同一线上相同颜色棋子数

'计算落子一边同颜色的棋子数

i = inti: j = intj

Do

    If qipan(i, j) <> qipan(inti, intj) Then

        num = max(Abs(inti - i), Abs(intj - j))

        Exit Do

    End If

    i = i + changei: j = j + changej

Loop Until i < 0 Or i > 15 Or j < 0 Or j > 15

'计算落子另一边同颜色的棋子数

i = inti: j = intj

Do

    If qipan(i, j) <> qipan(inti, intj) Then

        num = num - 1 + max(Abs(inti - i), Abs(intj - j))

        Exit Do

    End If

    i = i - changei: j = j - changej

Loop Until i < 0 Or i > 15 Or j < 0 Or j > 15

'MsgBox num

samelinenums = num

End Function

'求较大值

Function max(inta As Integer, intb As Integer)

    max = inta

    If max < intb Then max = intb

End Function

Private Sub Form_Paint() '以(10,10)为左上角坐标画一个16*16,每格边长为20象素的棋盘

Cls         '清除

Dim i As Integer

ScaleMode = 3   '设定窗体画布的单位为象素

For i = 10 To 330 Step 20

    Me.Line (10, i)-(330, i)

    Me.Line (i, 10)-(i, 330)

Next

End Sub

97795c5eb806c8991a292bc6b7015cf6.gif

至此,五子棋游戏开发完成。主要是逻辑要明确、思路要清晰。同时要对可能出现的各种问题进行预判,这样就可以使得我们的游戏运行状态良好,获得好的体验。

由于游戏开发属于VB编程的综合应用内容,代码和逻辑相对复杂,如果你有什么不懂的地方或者要游戏的源文件,可以直接添加老师微信号。

58ae7950971d51ccea0a43942f276ad6.png更多VB游戏●VB编程开发的围棋游戏!●俄罗斯方块游戏如何用VB编程来实现?●VB编程制作贪吃蛇游戏!VB编程开发--坦克大战游戏的开发

学习VB中有问题或者需要VB视频教程资料可添加老师微信号:vbyjk521 ,学习问题在线答疑。

7fca12392e83cb8047d213ab0eab2498.png



aaf0a966e352c9329df2e1866ccfb570.gif 71ef540f8c1833d0db6eccee1b24557b.png

长按上图,关注跟我学VB公众平台

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值