VB如何自动保存_VB开发的围棋游戏,原来VB可以这么强大!

大家好,每一天,我们都要有新的目标,这样才能激励自己不断进步与提高!

a21f40ab61ad914558bbe4edde5d755c.gif

1

今天,我们共同来学习VB编程开发的围棋游戏实现过程,以帮助大家更好的运用VB去编写程序。

围棋的实现,主要是综合应用了VB编程的核心知识,比如图形、算法、控制结构、数组、过程、高级控件等的应用。

ecdf718d54edcf9357431b32df9e6ced.png

程序运行图

围棋实现代码

Option Explicit

Dim Board(0 To 18, 0 To 18) As Byte    '此数组标识棋盘上每个点是否有子:0 无子,1 黑,2 白子

Dim lastnum As Integer                 '最新放置棋子的位置号

Const HDist As Integer = 250

Const VDist As Integer = 800

Const Grid As Integer = 250

Private Sub cmdRemoveBlack_Click()     '移除黑子

    Dim i As Integer

    For i = 0 To 360

        If Board(i Mod 19, i \ 19) = 1 Then Board(i Mod 19, i \ 19) = 0: shpChess(i).Visible = False

    Next

    Call CountChess

End Sub

Private Sub cmdRemoveWhite_Click()    '移除白子

    Dim i As Integer

    For i = 0 To 360

        If Board(i Mod 19, i \ 19) = 2 Then Board(i Mod 19, i \ 19) = 0: shpChess(i).Visible = False

    Next

    Call CountChess

End Sub

Private Sub cmdUndo_Click()            '撤消最后一步

    shpChess(lastnum).Visible = False

    Board(lastnum Mod 19, lastnum \ 19) = 0

    Call CountChess

End Sub

Private Sub Command1_Click()

    Unload Me

End Sub

Private Sub Form_Load()

    '窗体加载时,使用直线控件数组生成19*19的围棋盘

    Dim i As Integer

    Randomize

   '生成横线

    For i = 1 To 18

         Load LinH(i)

    Next

    For i = 0 To 18

         LinH(i).Visible = True

         LinH(i).X1 = HDist

         LinH(i).Y1 = VDist + Grid * i

         LinH(i).Y2 = VDist + Grid * i

         LinH(i).X2 = HDist + Grid * 18

    Next

    '生成竖线

    For i = 1 To 18

        Load LinV(i)

    Next

    For i = 0 To 18

        LinV(i).Visible = True

        LinV(i).Y1 = VDist

        LinV(i).X1 = HDist + Grid * i

        LinV(i).Y2 = VDist + Grid * 18

        LinV(i).X2 = HDist + Grid * i

    Next

    '生成棋子

   For i = 1 To 360

       Load shpChess(i)

        shpChess(i).FillStyle = 0

        shpChess(i).FillColor = vbWhite

   Next

   For i = 0 To 360

        shpChess(i).Top = (i \ 19) * Grid + VDist - 100

        shpChess(i).Left = (i Mod 19) * Grid + HDist - 100

        shpChess(i).Visible = True

   Next

   '读取已存的棋局

   If Dir("save.txt") <> "" Then

        Open "save.txt" For Input As #1

        For i = 0 To 360

            Input #1, Board(i Mod 19, i \ 19)

        Next

        Close

   End If

    Call CountChess

End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

   Dim i As Integer

   Dim j As Integer

    '计算行列

    i = (X - HDist) / Grid

    j = (Y - VDist) / Grid

    '防止下标越界

    If i > 18 Then i = 18

    If i < 0 Then i = 0

    If j > 18 Then j = 18

    If j < 0 Then j = 0

    If Shift = 0 Then           '加子

        lastnum = j * 19 + i

        If Board(i, j) = 0 Then

            Select Case Button

                Case 1

                     shpChess(lastnum).FillColor = vbBlack

                     Board(i, j) = 1

                Case 2

                     shpChess(lastnum).FillColor = vbWhite

                     Board(i, j) = 2

            End Select

            shpChess(lastnum).Visible = True

        Else

            MsgBox "此处有子,不能落子。"

        End If

    ElseIf Shift = 2 Then     '按住Ctrl键去子

        If Board(i, j) <> 0 Then

            Select Case Button

                Case 1

                     If Board(i, j) = 1 Then

                        shpChess(i + 19 * j).Visible = False

                        Board(i, j) = 0

                     End If

                Case 2

                    If Board(i, j) = 2 Then

                        shpChess(i + 19 * j).Visible = False

                        Board(i, j) = 0

                    End If

            End Select

        Else

            MsgBox "此处无子,不能提子。"

        End If

    End If

    Call CountChess

End Sub

'退出时,保存当前棋局

Private Sub Form_Unload(Cancel As Integer)

    Open "save.txt" For Output As #1

    Dim i As Integer

    For i = 0 To 360

        Write #1, Board(i Mod 19, i \ 19),

    Next

    Close #1

End Sub

Private Sub Timer1_Timer()

Static i As Integer

Dim j As Integer

    If i = 0 Then

        For j = 0 To 360

            shpChess(j).FillColor = vbBlack

        Next

        i = i + 1

    Else

        For j = 0 To 360

            If Board(j Mod 19, j \ 19) = 1 Then

                shpChess(j).FillColor = vbBlack

            ElseIf Board(j Mod 19, j \ 19) = 2 Then

                shpChess(j).FillColor = vbWhite

            Else

                shpChess(j).Visible = False

            End If

        Next

        Timer1.Enabled = False

    End If

End Sub

Sub CountChess()

  Dim total As Byte, black As Byte, white As Byte

  Dim i As Integer

  Dim j As Integer

  For i = 0 To 18

    For j = 0 To 18

        If Board(i, j) = 1 Then

            black = black + 1

        ElseIf Board(i, j) = 2 Then

            white = white + 1

        End If

    Next

 Next

 txtBlack.Text = black

 txtWhite.Text = white

 txtTotal.Text = black + white

 If total = 361 Then MsgBox "Game Over"

End Sub

1

上面就是用VB编程实现围棋开发的整个过程了,在VB知识掌握的前提下,综合应用逻辑思维,根据程序要实现的功能,写代码实现。

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

VB编程,功能强大,简单易学,下面是用VB编程开发的部分实际程序展,供大家参考学习。

VB编程

VB是世界上使用人数最多的编程语言之一,广泛应用在我们工作和社会生产活动的方方面面。

在当今信息技术日新月异的时代,编程语言的学习更是对自己的综合能力有很大影响,而VB因其可视化、面向对象、简单易学的特点是最适合学习的编程语言。因此,学好VB编程就显得非常重要了。

下面,我们共同来看一下VB实际项目程序展示。

01

利用VB与数据库结合开发的

自助点餐系统

实现了自助推荐、根据人群自动

匹配菜谱功能

并且具有自动结算、下单、统计功能

eaf097f262990f5b994781574865b916.png

02

利用VB与串口通信结合开发的

超市收银支付系统

fed95f31955ed163a4ff43b15c08cce6.png

销售清单列表

信息全面,便于总账统计

e3eb8b5a3d81b476917028dac855b0da.png

03

利用VB开发的九宫格抽奖系统

实现了抽奖与背景音乐的完美融合

0951928fac322a4c9135f9f57b18243d.png

04

VB开发的基本程序

2d9aa1d101378ec67a887b26ce2e4b48.png

05

酒店管理系统

具有订房、退房

结算和用户管理、权限管理等多重功能

2bb7fcf1b1d16bdbd8ae0a755fbf3fbb.png

06

生产任务自动安排系统

cf14c7f827209161f18807459f9b4557.png

学习VB

掌握一门编程

跟上互联网时代发展节奏

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

b59220809134c877e1ab9a6740c4158d.png



f10b0c5ec76c1f16a5d15c45ba251cba.gif a26afd11f755a6bbcd0a4ec918adebd2.png

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值