VB.NET游戏冷却
我试图做一个游戏,但我遇到了一个问题:我不知道如何让技能冷却下来。 例子: 鲍勃对目标造成25点伤害,并使其攻击技能晕眩,直到使用新的友方技能。 好了,现在轮到你了。 巴布使用友好技能和结束回合。 鲍勃将可以攻击25点伤害和眩晕,每回合,使巴布攻击技能眩晕 那么,我怎样才能使鲍勃的25点伤害攻击有1回合的冷却时间呢 代码如下: 公开课表格1VB.NET游戏冷却,vb.net,Vb.net,我试图做一个游戏,但我遇到了一个问题:我不知道如何让技能冷却下来。 例子: 鲍勃对目标造成25点伤害,并使其攻击技能晕眩,直到使用新的友方技能。 好了,现在轮到你了。 巴布使用友好技能和结束回合。 鲍勃将可以攻击25点伤害和眩晕,每回合,使巴布攻击技能眩晕 那么,我怎样才能使鲍勃的25点伤害攻击有1回合的冷却时间呢 代码如下: 公开课表格1 Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wparam As Integer, ByVal lParam As Integer) As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Timer1.Start()
Dim n As New Random
If n.Next(100) <= 50 Then
KyuubiChakra.Visible = 0
KyuubiRasengan.Visible = 0
Else
DarkGenjutsu.Visible = 0
WaterControl.Visible = 0
End If
End Sub
Private Sub RESET_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RESET.Click
ProgressBar1.Value = 100
ProgressBar2.Value = 100
Label1.Text = ""
Label2.Text = ""
Label3.Text = ""
Label4.Text = ""
Label5.Text = ""
Label6.Text = ""
KyuubiChakra.Visible = 1
KyuubiRasengan.Visible = 1
DarkGenjutsu.Visible = 1
WaterControl.Visible = 1
Dim t As New Random
If t.Next(100) <= 50 Then
KyuubiChakra.Visible = 0
KyuubiRasengan.Visible = 0
Else
DarkGenjutsu.Visible = 0
WaterControl.Visible = 0
End If
End Sub
Private Sub NidaimeHokage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NidaimeHokage.Click
Label1.ForeColor = Color.Blue
Label1.Text = "Nidaime Hokage"
Label2.Text = "The second Hokage from Konoha."
Label3.Text = ""
End Sub
Private Sub KyuubiNaruto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KyuubiNaruto.Click
Label4.ForeColor = Color.Blue
Label4.Text = "Kyuubi Naruto"
Label5.Text = "Enraged Naruto."
Label6.Text = ""
End Sub
Private Sub DarkGenjutsu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DarkGenjutsu.Click
Label1.ForeColor = Color.Black
Label1.Text = "Dark Genjutsu"
Label2.Text = "Nidaime Hokage steals 35 health points from a target."
Label3.Text = "This skill can only be used when Nidaime has 35 or less health."
End Sub
Private Sub WaterControl_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles WaterControl.Click
Label1.ForeColor = Color.Black
Label1.Text = "Water Control"
Label2.Text = "Nidaime Hokage deals 25 damage to a target and"
Label3.Text = "stun offensive skills until that target use a friendly skill."
End Sub
Private Sub KyuubiChakra_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KyuubiChakra.Click
Label4.ForeColor = Color.Black
Label4.Text = "Rage Chakra"
Label5.Text = "Kyuubi Naruto deals 10 damage to"
Label6.Text = "a target and heals 15 health points."
End Sub
Private Sub KyuubiRasengan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KyuubiRasengan.Click
Label4.ForeColor = Color.Black
Label4.Text = "Kyuubi Rasengan"
Label5.Text = "Kyuubi Naruto deals 55 damage to"
Label6.Text = "a target and loses 20 health points."
End Sub
Private Sub DarkGenjutsu_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles DarkGenjutsu.DoubleClick
If ProgressBar1.Value <= 35 Then
DarkGenjutsu.Visible = 0
WaterControl.Visible = 0
KyuubiChakra.Visible = 1
KyuubiRasengan.Visible = 1
End If
If ProgressBar2.Value - 35 < ProgressBar2.Minimum And ProgressBar1.Value <= 35 Then
ProgressBar2.Value = ProgressBar2.Minimum
ElseIf ProgressBar1.Value <= 35 Then
ProgressBar2.Value = ProgressBar2.Value - 35
End If
If ProgressBar1.Value <= 35 Then
ProgressBar1.Value = ProgressBar1.Value + 35
End If
If ProgressBar2.Value = ProgressBar2.Minimum Then
MessageBox.Show("Nidaime Wins!")
End If
End Sub
Private Sub WaterControl_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles WaterControl.DoubleClick
If ProgressBar2.Value - 25 < ProgressBar2.Minimum Then
ProgressBar2.Value = ProgressBar2.Minimum
Else
ProgressBar2.Value = ProgressBar2.Value - 25
DarkGenjutsu.Visible = 0
WaterControl.Visible = 0
KyuubiChakra.Visible = 1
KyuubiRasengan.Visible = 0
End If
If ProgressBar2.Value = 0 Then
MessageBox.Show("Nidaime Wins!")
End If
End Sub
Private Sub KyuubiChakra_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles KyuubiChakra.DoubleClick
If ProgressBar1.Value - 10 < ProgressBar1.Minimum Then
ProgressBar1.Value = ProgressBar1.Minimum
Else
ProgressBar1.Value = ProgressBar1.Value - 10
KyuubiChakra.Visible = 0
KyuubiRasengan.Visible = 0
DarkGenjutsu.Visible = 1
WaterControl.Visible = 1
End If
If ProgressBar1.Value = 0 Then
MessageBox.Show("Naruto Wins!")
End If
If ProgressBar2.Value + 15 > ProgressBar2.Maximum Then
ProgressBar2.Value = ProgressBar2.Maximum
Else
ProgressBar2.Value = ProgressBar2.Value + 15
End If
End Sub
Private Sub KyuubiRasengan_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles KyuubiRasengan.DoubleClick
If ProgressBar1.Value - 55 < ProgressBar1.Minimum Then
ProgressBar1.Value = ProgressBar1.Minimum
Else
ProgressBar1.Value = ProgressBar1.Value - 55
KyuubiChakra.Visible = 0
KyuubiRasengan.Visible = 0
DarkGenjutsu.Visible = 1
WaterControl.Visible = 1
End If
If ProgressBar2.Value - 20 < ProgressBar2.Minimum Then
ProgressBar2.Value = ProgressBar2.Minimum
Else
ProgressBar2.Value = ProgressBar2.Value - 20
End If
If ProgressBar1.Value = ProgressBar1.Minimum Then
MessageBox.Show("Naruto Wins!")
ElseIf ProgressBar2.Value <= ProgressBar2.Minimum Then
MessageBox.Show("Nidaime Wins!")
End If
End Sub
Private Sub DarkGenjutsuSTUN_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DarkGenjutsuSTUN.Click
Label1.ForeColor = Color.Black
Label1.Text = "Dark Genjutsu"
Label2.Text = "Nidaime Hokage steals 35 health points from a target."
Label3.Text = "This skill only can be used when Nidaime has 35 or less health."
End Sub
Private Sub WaterControlSTUN_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles WaterControlSTUN.Click
Label1.ForeColor = Color.Black
Label1.Text = "Water Control"
Label2.Text = "Nidaime Hokage deals 25 damage to a target and"
Label3.Text = "stun offensive skills until that target use a friendly skill."
End Sub
Private Sub KyuubiChakraSTUN_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KyuubiChakraSTUN.Click
Label4.ForeColor = Color.Black
Label4.Text = "Rage Chakra"
Label5.Text = "Kyuubi Naruto deals 10 damage to"
Label6.Text = "a target and heals 15 health points."
End Sub
Private Sub KyuubiRasenganSTUN_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KyuubiRasenganSTUN.Click
Label4.ForeColor = Color.Black
Label4.Text = "Kyuubi Rasengan"
Label5.Text = "Kyuubi Naruto deals 55 damage to"
Label6.Text = "a target and loses 20 health points."
End Sub
Private Sub Timer1_Tick_1(ByVal sender As System.Object, ByVal e As System.EventArgs)
ProgressBar1.Increment(0)
ProgressBar2.Increment(0)
Label7.Text = ProgressBar1.Value
Label8.Text = ProgressBar2.Value
If ProgressBar1.Value >= 65 Then
SendMessage(ProgressBar1.Handle, 1040, 1, 0)
Label7.ForeColor = Color.Green
End If
If ProgressBar1.Value < 65 And ProgressBar1.Value >= 35 Then
SendMessage(ProgressBar1.Handle, 1040, 3, 0)
Label7.ForeColor = Color.Yellow
End If
If ProgressBar1.Value < 35 Then
SendMessage(ProgressBar1.Handle, 1040, 2, 0)
Label7.ForeColor = Color.Red
End If
If ProgressBar2.Value >= 65 Then
SendMessage(ProgressBar2.Handle, 1040, 1, 0)
Label8.ForeColor = Color.Green
End If
If ProgressBar2.Value < 65 And ProgressBar1.Value >= 35 Then
SendMessage(ProgressBar2.Handle, 1040, 3, 0)
Label8.ForeColor = Color.Yellow
End If
If ProgressBar2.Value < 35 Then
SendMessage(ProgressBar2.Handle, 1040, 2, 0)
Label8.ForeColor = Color.Red
End If
End Sub
Private Sub Pass1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Pass1.Click
DarkGenjutsu.Visible = 0
WaterControl.Visible = 0
KyuubiRasengan.Visible = 1
KyuubiChakra.Visible = 1
End Sub
Private Sub Pass2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Pass2.Click
DarkGenjutsu.Visible = 1
WaterControl.Visible = 1
KyuubiRasengan.Visible = 0
KyuubiChakra.Visible = 0
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
ProgressBar1.Increment(0)
ProgressBar2.Increment(0)
Label7.Text = ProgressBar1.Value
Label8.Text = ProgressBar2.Value
If ProgressBar1.Value >= 65 Then
SendMessage(ProgressBar1.Handle, 1040, 1, 0)
Label7.ForeColor = Color.Green
End If
If ProgressBar1.Value < 65 And ProgressBar1.Value >= 35 Then
SendMessage(ProgressBar1.Handle, 1040, 3, 0)
Label7.ForeColor = Color.Yellow
End If
If ProgressBar1.Value < 35 Then
SendMessage(ProgressBar1.Handle, 1040, 2, 0)
Label7.ForeColor = Color.Red
End If
If ProgressBar2.Value >= 65 Then
SendMessage(ProgressBar2.Handle, 1040, 1, 0)
Label8.ForeColor = Color.Green
End If
If ProgressBar2.Value < 65 And ProgressBar1.Value >= 35 Then
SendMessage(ProgressBar2.Handle, 1040, 3, 0)
Label8.ForeColor = Color.Yellow
End If
If ProgressBar2.Value < 35 Then
SendMessage(ProgressBar2.Handle, 1040, 2, 0)
Label8.ForeColor = Color.Red
End If
End Sub
末级
查看->创建一个游戏回合变量,增加每个回合。e、 g.收费处 为您的技能创建一个类,该类包含一个属性,该属性指示下一个可用的时间。e、 g.电源冷却直到 当属性被禁用时设置该属性,并在他们尝试使用该属性时进行检查 例如:
' to disable a power for 2 turns the code might look like
Player1.SpecialPower.CooldownUntil = TurnCounter + 2
' to test a power to see if it can be used:
If Player1.SpecialPower.CooldownUntil < TurnCounter Then
' use the power
Else
' don't use the power
End If
我假设您知道如何创建类和属性。如果你不知道,很抱歉,我帮不了你。这是个糟糕的问题。您没有提供代码来显示您的尝试。您还没有解释如何按原样执行回合或计时器。先生,也许您可以编辑您的问题以包括您尝试过的内容?您甚至不需要跟踪当前回合。只有一个冷却属性,如果它>0,该技能处于冷却状态,则不能使用。然后在每回合开始时,如果>0,则将其减1。你可以解释我如何做到这一点?@nhgrif:这对一次冷却很有效。但是,如果你有多个独立的冷却时间,你就必须处理一堆计数器。直到这个时候才能使用Saying/turn/etc;那么你有一个柜台要处理。@cHao你能帮我处理这个吗?什么部分?这个答案几乎包含了您需要的信息……除非您不知道如何创建类。如果这就是问题所在,那么问答论坛永远不会像VB.net上的好书或教程网站那样有帮助。