我正在尝试制作一个小型游戏,其中计算机提供随机的颜色代码(红绿黄和蓝),然后你必须尝试猜测它们......我无法使颜色随机化.
颜色是4个按钮的背面颜色.代码长度为四种颜色.然后播放器点击其下方的一些按钮并尝试猜测代码.每次单击都会更改一次颜色.如果玩家猜到正确位置的正确颜色,则显示颜色.
到目前为止我有这个:
(问题是:重载分辨率失败,因为没有Public'='可以用这些参数调用:'Public Shared Operator =(left As System.Drawing.Color,right As System.Drawing.Color)As Boolean':Argument matching parameter'右'无法从'整数'转换为'颜色'.(见下面REM颜色1到REM结束)问题是由计算机生成的,用Visual Basic编写的程序,windows窗体应用程序)
Dim turn = 0
Dim generator As New Random
Dim color1 = generator.Next(1, 4)
Dim color2 = generator.Next(1, 4)
Dim color3 = generator.Next(1, 4)
Dim color4 = generator.Next(1, 4)
Private Sub NewToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NewToolStripMenuItem.Click
REM color 1
If color1 = 1 Then
color1 = Color.Red
End If
If color1 = 2 Then
color1 = Color.Blue
End If
If color1 = 3 Then
color1 = Color.Yellow
End If
If color1 = 4 Then
color1 = Color.Green
End If
REM color 2
If color2 = 1 Then
color2 = Color.Red
End If
If color2 = 2 Then
color2 = Color.Blue
End If
If color2 = 3 Then
color2 = Color.Yellow
End If
If color2 = 4 Then
color2 = Color.Green
End If
REM color 3
If color3 = 1 Then
color3 = Color.Red
End If
If color3 = 2 Then
color3 = Color.Blue
End If
If color3 = 3 Then
color3 = Color.Yellow
End If
If color3 = 4 Then
color3 = Color.Green
End If
REM color 4
If color4 = 1 Then
color4 = Color.Red
End If
If color4 = 2 Then
color4 = Color.Blue
End If
If color4 = 3 Then
color4 = Color.Yellow
End If
If color4 = 4 Then
color4 = Color.Green
End If
REM End
Button1.BackColor = color1
Button2.BackColor = color2
Button3.BackColor = color3
Button4.BackColor = color4
Run Code Online (Sandbox Code Playgroud)
color1,color2,color3,color4是整数.
你写的时候:Dim color1 = generator.Next(1,4)
generator.Next生成一个整数,因此color1定义为整数.当你写color1 = Color.Red
它很困惑,因为你试图将Color设置为一个整数变量.
一般来说编写代码的方法更简洁,但你可能会这样做:
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
Run Code Online (Sandbox Code Playgroud)
附加说明:正如第一个答案所说的那样,真的有更好的方法来编写这一切.下面的伪代码就是我如何处理这个问题:(抱歉,我不记得我头脑中的确切VB语法)
Button_Array = [Button1,Button2,Button3,Button4]
Color_array= [Color.red,Color.blue,Color.green,Color.yellow]
for i in 1 to 4
color_index=generator.Next(1,4)
Button_Array[i].backcolor = Color_array[color_index]
endfor
Run Code Online (Sandbox Code Playgroud)
这更具可读性,更易于维护.(如果要在原始列表或我的伪代码列表中添加第5个按钮或第5个颜色,请考虑添加多少行)
归档时间: |
|
查看次数: |
3681 次 |
最近记录: |