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,那么‘好的一点,玛丽。现在改变了编码:谢谢你,这帮了大忙。这正是我一直在寻找的,而且对我来说都很有意义:)再次感谢你!