Vb.net VisualBasic-猜颜色程序

Vb.net VisualBasic-猜颜色程序,vb.net,colors,Vb.net,Colors,我正在尝试做一个小游戏,在这个游戏中,电脑会给出一个随机的颜色代码(红、绿、黄、蓝),然后你必须试着猜它们。。。不过,我很难让颜色变得随意 颜色是4个按钮的底色。代码有四种颜色。然后,玩家点击下面的一些按钮,并尝试猜测代码。每次单击都会改变颜色一次。如果玩家猜到了正确位置的正确颜色,那么颜色就会显示出来 到目前为止,我有: (问题是: 重载解析失败,因为无法使用以下参数调用公共“=”:“公共共享运算符=(左为System.Drawing.Color,右为System.Drawing.Color)

我正在尝试做一个小游戏,在这个游戏中,电脑会给出一个随机的颜色代码(红、绿、黄、蓝),然后你必须试着猜它们。。。不过,我很难让颜色变得随意

颜色是4个按钮的底色。代码有四种颜色。然后,玩家点击下面的一些按钮,并尝试猜测代码。每次单击都会改变颜色一次。如果玩家猜到了正确位置的正确颜色,那么颜色就会显示出来

到目前为止,我有:

(问题是: 重载解析失败,因为无法使用以下参数调用公共“=”:“公共共享运算符=(左为System.Drawing.Color,右为System.Drawing.Color)作为布尔值”:与参数“right”匹配的参数无法从“Integer”转换为“Color”。(请参见下面的REM Color 1到REM End)问题由计算机生成,程序用Visual Basic编写,windows窗体应用程序)

我不知道你的具体问题是什么,但这种大规模的切换应该只是一系列颜色。如果由于某种原因无法将颜色与=进行比较,请将代码设置为整数数组,并以整数形式工作,并在需要显示颜色时在数组中查找颜色。


我不知道你的具体问题是什么,但这种大规模的切换应该只是一系列颜色。如果由于某种原因无法将颜色与=进行比较,请将代码设置为整数数组,并以整数形式工作,并在需要显示颜色时在数组中查找颜色。

问题在于,您正在将
颜色n
(整数)设置为
颜色对象

作为已经在这里的优秀答案的补充

generator.Next(1,4)
将只返回1到3之间的值

你真正想要的是:

generator.Next(1,5)

问题在于您正在将
colorN
(整数)设置为
Color
对象

作为已经在这里的优秀答案的补充

generator.Next(1,4)
将只返回1到3之间的值

你真正想要的是:

generator.Next(1,5)

color1、color2、color3、color4是整数

当你写作时: Dim color1=生成器。下一步(1,4)

接下来生成一个整数,所以color1被定义为整数。 当你写作时 颜色1=颜色。红色

这很混乱,因为您试图将颜色设置为整数变量

一般来说,有更简洁的方法来编写代码,但您可能可以这样做:


option explicit
Dim color_index as Integer
Dim color1 as System.Drawing.Color
color_index=generator.Next(1,4)
[choosing logic]
color1 = Color.red
[blah blah blah]
Button.backcolor = color1
Function GenerateColor() As Color
    Select Case generator.Next(1,5)
       Case 1
          Return Color.Red
       Case 2
          Return Color.Blue
       Case 3
          Return Color.Yellow
       Case 4
          Return Color.Green
    End Select
End Function
private _Generator as Random
private _Colors as Dictionary(of Integer, Color)
private _Color1 as Color
private _Color2 as Color
private _Color3 as Color
private _Color4 as Color


Public Sub New()
    _Generator = new Random()
    _Colors.Add(1, Colors.Red)
    _Colors.Add(2, Colors.Blue)
    _Colors.Add(3, Colors.Yellow)
    _Colors.Add(4, Colors.Green)    
End Sub

Private Sub NewToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NewToolStripMenuItem.Click

    _Color1 = _Colors(_Generator.Next(1, 4))
    _Color2 = _Colors(_Generator.Next(1, 4))
    _Color3 = _Colors(_Generator.Next(1, 4))
    _Color4 = _Colors(_Generator.Next(1, 4))

    Button1.BackColor = _Color1
    Button2.BackColor = _Color2
    Button3.BackColor = _Color3
    Button4.BackColor = _Color

End sub
补充说明: 正如第一个答案所说,有一个更好的方法来写这整件事。下面的伪代码是我如何处理这个问题的: (对不起,我记不清确切的VB语法了)

这更具可读性,更易于维护。
(如果要在原始列表或我的伪代码列表中添加第五个按钮或第五种颜色,请考虑需要添加多少行)

color1、color2、color3、color4是整数

当你写作时: Dim color1=生成器。下一步(1,4)

接下来生成一个整数,所以color1被定义为整数。 当你写作时 颜色1=颜色。红色

这很混乱,因为您试图将颜色设置为整数变量

一般来说,有更简洁的方法来编写代码,但您可能可以这样做:


option explicit
Dim color_index as Integer
Dim color1 as System.Drawing.Color
color_index=generator.Next(1,4)
[choosing logic]
color1 = Color.red
[blah blah blah]
Button.backcolor = color1
Function GenerateColor() As Color
    Select Case generator.Next(1,5)
       Case 1
          Return Color.Red
       Case 2
          Return Color.Blue
       Case 3
          Return Color.Yellow
       Case 4
          Return Color.Green
    End Select
End Function
private _Generator as Random
private _Colors as Dictionary(of Integer, Color)
private _Color1 as Color
private _Color2 as Color
private _Color3 as Color
private _Color4 as Color


Public Sub New()
    _Generator = new Random()
    _Colors.Add(1, Colors.Red)
    _Colors.Add(2, Colors.Blue)
    _Colors.Add(3, Colors.Yellow)
    _Colors.Add(4, Colors.Green)    
End Sub

Private Sub NewToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NewToolStripMenuItem.Click

    _Color1 = _Colors(_Generator.Next(1, 4))
    _Color2 = _Colors(_Generator.Next(1, 4))
    _Color3 = _Colors(_Generator.Next(1, 4))
    _Color4 = _Colors(_Generator.Next(1, 4))

    Button1.BackColor = _Color1
    Button2.BackColor = _Color2
    Button3.BackColor = _Color3
    Button4.BackColor = _Color

End sub
补充说明: 正如第一个答案所说,有一个更好的方法来写这整件事。下面的伪代码是我如何处理这个问题的: (对不起,我记不清确切的VB语法了)

这更具可读性,更易于维护。
(如果要在原始列表或我的伪代码列表中添加第五个按钮或第五种颜色,请考虑需要添加多少行)

当您将color1=generator.Next(1,4)调暗时,它隐式地将color1定义为整数,因为这是generator.Next返回的值。我建议(为了您自己和阅读您的代码的任何人的利益)使用“As”来显式定义变量的类型

看起来您试图使用相同的color1变量来包含整数和枚举(“Color”)版本的颜色。这将变得相当混乱,因为如果显式强制执行,枚举值也可以直接转换为整数或从整数转换而来,然后您将不知道特定值是表示您自己的颜色编码系统还是系统的颜色编码系统。我建议您创建一个函数,生成4种随机颜色中的1种,如下所示:


option explicit
Dim color_index as Integer
Dim color1 as System.Drawing.Color
color_index=generator.Next(1,4)
[choosing logic]
color1 = Color.red
[blah blah blah]
Button.backcolor = color1
Function GenerateColor() As Color
    Select Case generator.Next(1,5)
       Case 1
          Return Color.Red
       Case 2
          Return Color.Blue
       Case 3
          Return Color.Yellow
       Case 4
          Return Color.Green
    End Select
End Function
private _Generator as Random
private _Colors as Dictionary(of Integer, Color)
private _Color1 as Color
private _Color2 as Color
private _Color3 as Color
private _Color4 as Color


Public Sub New()
    _Generator = new Random()
    _Colors.Add(1, Colors.Red)
    _Colors.Add(2, Colors.Blue)
    _Colors.Add(3, Colors.Yellow)
    _Colors.Add(4, Colors.Green)    
End Sub

Private Sub NewToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NewToolStripMenuItem.Click

    _Color1 = _Colors(_Generator.Next(1, 4))
    _Color2 = _Colors(_Generator.Next(1, 4))
    _Color3 = _Colors(_Generator.Next(1, 4))
    _Color4 = _Colors(_Generator.Next(1, 4))

    Button1.BackColor = _Color1
    Button2.BackColor = _Color2
    Button3.BackColor = _Color3
    Button4.BackColor = _Color

End sub

然后使用该函数初始化随机值。

当您调暗color1=generator.Next(1,4)时,它隐式地将color1定义为整数,因为generator.Next会返回该值。我建议(为了您自己和阅读您的代码的任何人的利益)使用“As”来显式定义变量的类型

看起来您试图使用相同的color1变量来包含整数和枚举(“Color”)版本的颜色。这将变得相当混乱,因为如果显式强制执行,枚举值也可以直接转换为整数或从整数转换而来,然后您将不知道特定值是表示您自己的颜色编码系统还是系统的颜色编码系统。我建议您创建一个函数,生成4种随机颜色中的1种,如下所示:


option explicit
Dim color_index as Integer
Dim color1 as System.Drawing.Color
color_index=generator.Next(1,4)
[choosing logic]
color1 = Color.red
[blah blah blah]
Button.backcolor = color1
Function GenerateColor() As Color
    Select Case generator.Next(1,5)
       Case 1
          Return Color.Red
       Case 2
          Return Color.Blue
       Case 3
          Return Color.Yellow
       Case 4
          Return Color.Green
    End Select
End Function
private _Generator as Random
private _Colors as Dictionary(of Integer, Color)
private _Color1 as Color
private _Color2 as Color
private _Color3 as Color
private _Color4 as Color


Public Sub New()
    _Generator = new Random()
    _Colors.Add(1, Colors.Red)
    _Colors.Add(2, Colors.Blue)
    _Colors.Add(3, Colors.Yellow)
    _Colors.Add(4, Colors.Green)    
End Sub

Private Sub NewToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NewToolStripMenuItem.Click

    _Color1 = _Colors(_Generator.Next(1, 4))
    _Color2 = _Colors(_Generator.Next(1, 4))
    _Color3 = _Colors(_Generator.Next(1, 4))
    _Color4 = _Colors(_Generator.Next(1, 4))

    Button1.BackColor = _Color1
    Button2.BackColor = _Color2
    Button3.BackColor = _Color3
    Button4.BackColor = _Color

End sub

并使用该函数初始化随机值。

您应该建立一个颜色字典,如下所示:


option explicit
Dim color_index as Integer
Dim color1 as System.Drawing.Color
color_index=generator.Next(1,4)
[choosing logic]
color1 = Color.red
[blah blah blah]
Button.backcolor = color1
Function GenerateColor() As Color
    Select Case generator.Next(1,5)
       Case 1
          Return Color.Red
       Case 2
          Return Color.Blue
       Case 3
          Return Color.Yellow
       Case 4
          Return Color.Green
    End Select
End Function
private _Generator as Random
private _Colors as Dictionary(of Integer, Color)
private _Color1 as Color
private _Color2 as Color
private _Color3 as Color
private _Color4 as Color


Public Sub New()
    _Generator = new Random()
    _Colors.Add(1, Colors.Red)
    _Colors.Add(2, Colors.Blue)
    _Colors.Add(3, Colors.Yellow)
    _Colors.Add(4, Colors.Green)    
End Sub

Private Sub NewToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NewToolStripMenuItem.Click

    _Color1 = _Colors(_Generator.Next(1, 4))
    _Color2 = _Colors(_Generator.Next(1, 4))
    _Color3 = _Colors(_Generator.Next(1, 4))
    _Color4 = _Colors(_Generator.Next(1, 4))

    Button1.BackColor = _Color1
    Button2.BackColor = _Color2
    Button3.BackColor = _Color3
    Button4.BackColor = _Color

End sub

您应该建立一个颜色字典,如下所示:


option explicit
Dim color_index as Integer
Dim color1 as System.Drawing.Color
color_index=generator.Next(1,4)
[choosing logic]
color1 = Color.red
[blah blah blah]
Button.backcolor = color1
Function GenerateColor() As Color
    Select Case generator.Next(1,5)
       Case 1
          Return Color.Red
       Case 2
          Return Color.Blue
       Case 3
          Return Color.Yellow
       Case 4
          Return Color.Green
    End Select
End Function
private _Generator as Random
private _Colors as Dictionary(of Integer, Color)
private _Color1 as Color
private _Color2 as Color
private _Color3 as Color
private _Color4 as Color


Public Sub New()
    _Generator = new Random()
    _Colors.Add(1, Colors.Red)
    _Colors.Add(2, Colors.Blue)
    _Colors.Add(3, Colors.Yellow)
    _Colors.Add(4, Colors.Green)    
End Sub

Private Sub NewToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NewToolStripMenuItem.Click

    _Color1 = _Colors(_Generator.Next(1, 4))
    _Color2 = _Colors(_Generator.Next(1, 4))
    _Color3 = _Colors(_Generator.Next(1, 4))
    _Color4 = _Colors(_Generator.Next(1, 4))

    Button1.BackColor = _Color1
    Button2.BackColor = _Color2
    Button3.BackColor = _Color3
    Button4.BackColor = _Color

End sub

谢谢你的帮助,但我从另一个家伙那里找到了一些帮助,“Coding4fun.com”的Clint。现在可以正常工作了。我所做的正如yenthefirst所说的那样,我把color1称为整数,然后要求一种颜色,这让计算机感到困惑。我现在所做的就像BlueMonkMN wich开始一个案例一样

Private Function getrandomcolour() As Color
    Select Case generator.[Next](1, 6)
        Case 1
            Return Color.Red
            Exit Select
        Case 2
            Return Color.Green
            Exit Select
        Case 3
            Return Color.Yellow
            Exit Select
        Case 4
            Return Color.Blue
            Exit Select
        Case 5
            Return Color.Pink
            Exit Select
        Case 6
            Return Color.Turquoise
            Exit Select
    End Select
    If Button1.BackColor = Button2.BackColor Then
        getrandomcolour()
    End If
    If Button3.BackColor = Button4.BackColor Then
        getrandomcolour()
    End If
    If Button1.BackColor = Button3.BackColor Then
        getrandomcolour()
    End If
    If Button2.BackColor = Button3.BackColor Then
        getrandomcolour()
    End If
End Function
无论如何,谢谢你可爱的回答

谢谢你