vb四环棋的实现,平面四子棋

vb四环棋的实现,平面四子棋

vb四环棋的实现,平面四子棋

首先我们百度一下,什么是平面四子棋

在这里插入图片描述
相信很多小伙伴见到这幅图片都不陌生。
那么在代码中怎么实现呢?我们用vb代码为例子。

先看效果图
在这里插入图片描述
我们设计o和x是需要下的棋子,如果没有棋子,那就是空白字符。

首先先设计数组大小为

Dim a(7, 9) As String 

我们可以选择1~8可以下棋子。

            If ComboBox1.Text = "" And a(1, 1) = " " Then
                SureMove(1, "x")
            ElseIf ComboBox1.Text = "2" And a(1, 2) = " " Then
                SureMove(2, "x")
            ElseIf ComboBox1.Text = "3" And a(1, 3) = " " Then
                SureMove(3, "x")

            ElseIf ComboBox1.Text = "4" And a(1, 4) = " " Then
                SureMove(4, "x")

            ElseIf ComboBox1.Text = "5" And a(1, 5) = " " Then
                SureMove(5, "x")

            ElseIf ComboBox1.Text = "6" And a(1, 6) = " " Then
                SureMove(6, "x")

            ElseIf ComboBox1.Text = "7" And a(1, 7) = " " Then
                SureMove(7, "x")

            ElseIf ComboBox1.Text = "8" And a(1, 8) = " " Then
                SureMove(8, "x")
            ElseIf a(1, 1) = " " Then

                SureMove(1, "x")

我从上面开始算下来,找到一个没有下过棋的数组位置。如果这一整列都下完了,那就不可以下这里了。

 '找出第一个没有下过的地方下旗子
    Private Sub SureMove(ByVal choose As Integer, ByVal c As String)
        Dim top = 6
        While a(top, choose) <> " "
            top = top - 1
        End While

        a(top, choose) = c

        Print()

        If a(1, 1) <> " " Then
            ComboBox1.Items.Remove("1")
        ElseIf a(1, 2) <> " " Then
            ComboBox1.Items.Remove("2")
        ElseIf a(1, 3) <> " " Then
            ComboBox1.Items.Remove("3")
        ElseIf a(1, 4) <> " " Then
            ComboBox1.Items.Remove("4")
        ElseIf a(1, 5) <> " " Then
            ComboBox1.Items.Remove("5")
        ElseIf a(1, 6) <> " " Then
            ComboBox1.Items.Remove("6")
        ElseIf a(1, 7) <> " " Then
            ComboBox1.Items.Remove("7")
        ElseIf a(1, 8) <> " " Then
            ComboBox1.Items.Remove("8")
        End If

        If IsFinish(top, choose, c) = True Then

            If c = "o" Then
                MsgBox("劳拉:耶,我赢了")
            Else
                MsgBox("劳拉:好吧,你赢了")
            End If
            ongame = False
            Button1.Text = "开始"
        End If

    End Sub

检查一下是否某一方赢了。
这里我们需要
1’竖线检查
2 ‘横线检查
3 ‘斜对角1检查
4 ‘斜对角2检查

 Private Function IsFinish(ByVal choosex As Integer, ByVal choosey As Integer, ByVal c As String) As Object
        '竖线检查
        Dim j = 0
        For i = 1 To 6
            If a(i, choosey) = c Then
                j = j + 1
                If j >= 4 Then
                    Return True
                End If
            Else
                j = 0
            End If
        Next
        '横线检查
        j = 0
        For i = 1 To 8
            If a(choosex, i) = c Then
                j = j + 1
                If j >= 4 Then
                    Return True
                End If
            Else
                j = 0
            End If
        Next

        '斜对角1检查
        j = 0
        Dim p = choosex
        Dim q = choosey

        While p > 1 And p < 6 And q > 1 And q < 8
            p = p - 1
            q = q - 1
        End While

        While p >= 1 And p <= 6 And q >= 1 And q <= 8

            If a(p, q) = c Then
                j = j + 1
                If j >= 4 Then
                    Return True
                End If
            Else
                j = 0
            End If

            p = p + 1
            q = q + 1
        End While



        '斜对角2检查
        j = 0
        p = choosex
        q = choosey

        While p > 1 And p < 6 And q > 1 And q < 8
            p = p - 1
            q = q + 1
        End While

        While p >= 1 And p <= 6 And q >= 1 And q <= 8

            If a(p, q) = c Then
                j = j + 1
                If j >= 4 Then
                    Return True
                End If
            Else
                j = 0
            End If

            p = p + 1
            q = q - 1
        End While

        '全部情况都遍历了还是错误
        Return False


    End Function

有想要完整代码,或者有想要其他语言实现这个小游戏的,都可以找我。欢迎留言交流。q:2316773638

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/2874.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • latex插入图片

    latex插入图片1.单图居中\begin{figure}[htbp]\centering\includegraphics[width=8cm]{images/fig1}\caption{图的说明}\end{figure}2.双图横向并列\begin{figure}[htbp]\begin{minipage}[t]{0.5\linewidth}\centering\includegr…

    2022年6月10日
    34
  • BoundsChecker用法「建议收藏」

    最近我发现我那个程序泄露严重,手动也查不出来。指针乱指。所以刚下了个BoundChecker6.0版的嘿嘿ie在网上看到了它的用法,感觉还不错。BoundsChecker用法http://blog.sina.com.cn/u/53d9f7e9010007fzBoundsChecker是一个Run-Time错误检测工具,它主要定位程序在运行时期发…

    2022年4月8日
    42
  • 看完让你彻底搞懂Websocket原理

    看完让你彻底搞懂Websocket原理

    2021年10月14日
    55
  • mysql 加入�列,改动列,删除列。

    mysql 加入�列,改动列,删除列。

    2021年12月2日
    40
  • mqtt服务器数据存储位置,mqtt服务器 数据库[通俗易懂]

    mqtt服务器数据存储位置,mqtt服务器 数据库[通俗易懂]mqtt服务器数据库内容精选换一换云服务器备份:云服务器备份可以对普通服务器进行整机备份或部分磁盘备份,不适用于部署了数据库等应用的服务器。支持备份弹性云服务器ECS和裸金属服务器BMS,成本相对于VBS较高,适合对需要备份整个服务器和快速发放服务器的场景。可以使用备份恢复至原服务器,或者使用备份创建镜像,也可以将备份复制至其他区域。云硬盘备份:云硬盘备份仅针对磁盘进行备用户在部署MySQL或…

    2022年5月8日
    146
  • sklearn安装教程_sklearn库的使用

    sklearn安装教程_sklearn库的使用Sklearn(全称Scikit-Learn)是基于Python语言的机器学习工具,是机器学习中的常用第三方模块。它建立在NumPy,SciPy和Matplotlib之上。因此,在安装sklearn之前,需要先安装其三个依赖库numpy+scipy+matplotlib,具体安装步骤如下:1.进入官网下载相应的模块安装地址如下https://www.lfd.uci.edu/~gohlke/pythonlibs网站中包含了python中所需的子库。进去之后查找比较麻烦,可以在网址后

    2022年10月18日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号