Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 多次为同一表达式设置相同的值_Vb.net - Fatal编程技术网

Vb.net 多次为同一表达式设置相同的值

Vb.net 多次为同一表达式设置相同的值,vb.net,Vb.net,我正在制作一个简单的游戏程序。这是我制作的最复杂的程序之一,也是我多年来第一次尝试 我试图构建一个常量表达式,该表达式将根据其使用位置而变化。问题是我记不起来/我不确定我需要使用什么。 我目前正在对程序进行硬编码以避免错误,相关代码如下: Dim FangOwned Private Sub PnlFangKnife_Click(sender As Object, e As EventArgs) Handles PnlFangKnife.Click GoldNeeded = 12

我正在制作一个简单的游戏程序。这是我制作的最复杂的程序之一,也是我多年来第一次尝试

我试图构建一个常量表达式,该表达式将根据其使用位置而变化。问题是我记不起来/我不确定我需要使用什么。 我目前正在对程序进行硬编码以避免错误,相关代码如下:

Dim FangOwned

Private Sub PnlFangKnife_Click(sender As Object, e As EventArgs) Handles PnlFangKnife.Click

    GoldNeeded = 12

    If GP = GoldNeeded And FangOwned = False Then
        GP -= GoldNeeded
        LblGoldInt.Text = GP
        LblFangInt.Text = "Owned"
        FangOwned = True
        PnlFangKnife.BorderStyle = BorderStyle.Fixed3D

    Else


    End If

End Sub
等等等等

问题是,目前玩家有四种武器可供购买。所以我必须为每件武器声明一个新的整数

Dim FangOwned

Dim CrudeOwned

Dim ElvenOwned

Dim MagicOwned
基本上为每个声明写下相同的编码,加上相关按钮内有重叠等。使用变得相当复杂。。。我能做到,但我更喜欢用一种更简单的方法来达到基本相同的效果

请记住,我已经好几年没做过编码了,有人能帮我吗? 我可以使用什么类型的声明来简化此问题

理想情况下,我想要一些我能写的东西:

Dim TheIdealDeclaration

PrivateSub Button1_Click

    If TheIdealDeclaration = False then

        TheIdealDeclaration = True

    End If

End Sub

PrivateSub Button2_Click

    If TheIdealDeclaration = False Then

        TheIdealDeclaration = True

     End If

End Sub

(并且不要让这两者相互冲突)

老实说,除非你想让你的游戏变得更复杂,否则你应该保持原样。就目前的代码而言,如果您希望避免重复代码,那么只会使事情变得不必要的复杂,因为您需要添加代码来决定要更改的
标签
面板

如果你想添加更多的武器和属性,比如它造成的伤害有多大,或者它是否有机会造成额外的伤害等等,那么我会认真考虑创建一个
武器
类,并考虑重新设计你的界面

一种可能的方法是

Private Sub BuyWeapon(ByRef weapon As Boolean, ByRef goldOwned As Integer, cost As Integer, lbl As Label, pnl As Panel)
    If goldOwned >= cost And weapon = False Then
        goldOwned -= cost
        LblGoldInt.Text = goldOwned.ToString
        lbl.Text = "Owned"
        weapon = True
        pnl.BorderStyle = BorderStyle.Fixed3D
    Else


    End If
End Sub
您有一个名为
buywearm
的子系统,它可以获取您想要更改的武器、黄金数量、成本和控制参数

然后,您的代码看起来像这样

Dim FangOwned As Boolean

Dim CrudeOwned As Boolean

Dim ElvenOwned As Boolean

Dim MagicOwned As Boolean

Dim GP As Integer

Private Sub BuyWeapon(ByRef weapon As Boolean, ByRef goldOwned As Integer, cost As Integer, lbl As Label, pnl As Panel)
    If goldOwned >= cost And weapon = False Then
        goldOwned -= cost
        LblGoldInt.Text = goldOwned.ToString
        lbl.Text = "Owned"
        weapon = True
        pnl.BorderStyle = BorderStyle.Fixed3D
    Else


    End If
End Sub

Private Sub BtnBuyFangKnife_Click(sender As Object, e As EventArgs) Handles BtnBuyFangKnife.Click
    BuyWeapon(FangOwned, GP, 12, LblFangInt, PnlFangKnife)
End Sub

Private Sub BtnBuyCrudeKnife_Click(sender As Object, e As EventArgs) Handles BtnBuyCrudeKnife.Click
    BuyWeapon(CrudeOwned, GP, 20, LblCrudeInt, PnlCrudeKnife)
End Sub

您应该删除2个不相关的标签,在代码文件顶部添加
选项Strict On
,并将代码格式设置为code,这是否意味着玩家必须拥有购买牙牙所需的确切数量?他不能再有金子了吗如果GP=GoldNeeded,FangOwned=False,那么‘好的一点,玛丽。现在改变了编码:谢谢你,这帮了大忙。这正是我一直在寻找的,而且对我来说都很有意义:)再次感谢你!