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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 51单片机设计8位抢答器_51单片机八路抢答器原理图

    51单片机设计8位抢答器_51单片机八路抢答器原理图基于51单片机八路抢答器的设计毕业设计(论文)题目:基于51单片机八路抢答器的设计系部:专业:学号:学生姓名:指导教师姓名:指导教师职称:2013年xx月xx日XXXXXXXX学院(论文)I摘要随着科学技术的发展和普及,各种各样的竞赛越来越多,其中抢答器的作用也就显而易见。目前很多抢答器基本上采用小规模数字集成电路设计,使用起来不够理想。因此设计一更易于使…

    2022年10月20日
  • VisJS 随机图

    VisJS 随机图

  • JS页面后退并刷新「建议收藏」

    JS页面后退并刷新「建议收藏」JS页面后退并刷新

  • sudo命令 sudoers文件

    sudo命令 sudoers文件超级用户权限授权规则含义root ALL=(ALL:ALL)ALL用户名root ALL=(ALL:ALL)ALL主机名root ALL=(**ALL:ALL**)ALL目标用户:组,以谁的身份去执行root ALL=(ALL:ALL)**ALL**命令别名定义>Host_Alias:主机的列表>User_Alias:具有sudo权限的用户的列表

  • L2-013红色警报(dijkstra最短路)[通俗易懂]

    L2-013红色警报(dijkstra最短路)[通俗易懂]原题链接战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报。注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不改变其他城市之间的连通性,则不要发出警报。输入格式:输入在第一行给出两个整数N(0 < N ≤ 500)和M(≤ 5000),分别为城市个数(于是默认城市从0到N-1编号)和连接两城市的通路条数。随后M行,每行给出一条通路所连接的两个城市的编号,其间以1个空格分隔。在城市信息之后给出被攻占的

发表回复

您的电子邮箱地址不会被公开。

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