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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • LAN8720 100M 掉线问题解决

    LAN8720 100M 掉线问题解决最近在做一块板子的时候,使用的phy芯片为LAN8720,在使用的发现老是ping一段时间后自动掉线,从软件问题一直查找,最后发现是LAN8720掉线了,且wang网口绿灯一直常亮,拔线网线也是一样,黄灯不闪烁,且phy发热严重。问题出在本来网口电源是下面这样,但是在焊接时没有找到磁珠,就用0欧电阻代替,结果电源干扰大不稳定,换上磁珠后ping未出现网口掉线现象,发热现象明显减少。…

    2025年7月12日
    0
  • ODS 介绍[通俗易懂]

    ODS 介绍[通俗易懂]ODS概念ODS是一个面向主题的、集成的、可变的、反映当前细节的数据集合。它主要用于支持企业处理业务应用和存储面向主题的、即时性的集成数据,为企业决策者提供当前细节性的数据,通常作为数据仓库的过渡阶段。ODS特点1数据不断更新和易丢失,不存储历史数据,只反映当前实时性的信息2存储细节性数据,很少有汇总数据3支持快速的更新操作,数据刷新频率快4ODS一般存

    2022年9月26日
    0
  • GSLB原理介绍

    GSLB原理介绍1.GSLB     GSLB,是GlobalServerLoadBalance的缩写,意思是全局负载均衡。目的是实现在广域网(包括互联网)上不同地域的服务器间的流量调配,保证使用户的请求能被离用户最近或者服务质量最好的服务器来处理,从而确保访问质量。       能通过判断服务器的负载,包括CPU占用、带宽占用等数据,决定服务器的可用性,同时能判断用户(访问者)与服

    2022年6月12日
    82
  • 【众说区块链】从阿里区块链医疗聊起,落地应用要突破中心机构数据壁垒

    【众说区块链】从阿里区块链医疗聊起,落地应用要突破中心机构数据壁垒

    2021年5月28日
    89
  • JUC多线程:线程池的创建及工作原理 和 Executor 框架

    JUC多线程:线程池的创建及工作原理 和 Executor 框架

    2021年10月5日
    44
  • 总量指标的因素分析

    总量指标的因素分析

    2022年3月6日
    89

发表回复

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

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