很抱歉,标题含糊,我不知道如何简明地解释这个问题。
我在这里有这段代码:
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
Select Case e.KeyCode
Case Keys.Left
pBox1.Visible = False
pBox3.Visible = False
pBox2.Visible = True
Me.pBox1.Left -= 3
Me.pBox2.Left -= 3
Me.pBox3.Left -= 3
Me.pBox4.Left -= 3
Case Keys.Right
pBox1.Visible = False
pBox3.Visible = False
pBox2.Visible = True
Me.pBox1.Left += 3
Me.pBox2.Left += 3
Me.pBox3.Left += 3
Me.pBox4.Left += 3
Case Keys.E
pBox2.Visible = False
pBox3.Visible = False
pBox1.Visible = True
Case Keys.Up
pBox4.Visible = True
pBox3.Visible = False
pBox2.Visible = False
pBox1.Visible = False
Me.pBox4.Top -= 3
Me.pBox3.Top -= 3
Me.pBox2.Top -= 3
Me.pBox1.Top -= 3
End Select
End Sub
这很好用,不同的pBox代表我要移动的不同图片框。一切正常,图片框向左/向右/向上移动,但是我想阻止重复的“向上”操作(我正在使视频游戏角色向左/向右/跳转移动),因此玩家不能只是浮动进入空中。我希望“ Case Keys.Up”仅重复一次,因此它的工作原理类似于适当的跳跃机制。有谁知道如何做到这一点?感谢您提供任何答案,谢谢!!
-亚伦
答案 0 :(得分:1)
您的问题比您想象的要复杂。问题是,您不需要一小段代码。您需要一种查看代码的新方法。
您想要的是一个名为“状态”的设计模式。
Here's a link,只为您。
只是为了帮助您开始,这里有一些提示。您的角色可以做很多事情。您可以将这些状态划分为多个状态。也许您的角色可以保持闲置,行走,奔跑,跳跃,摔倒和死亡。所有这些都是状态,通过强制执行这些状态,您可以拥有一个可以“更改规则”的遮罩,您的角色会在所有这些情况下都遵守。例如,对于这些状态中的每个状态,您的角色可能具有不同的动画。这些的最大速度可能也会有所不同。也许他在某些情况下变得脆弱或无敌。
通过强制执行状态,您可以围绕角色的行为创建严格的结构,这既易于自定义,也难以进行异常处理。大多数游戏都使用这种模式。
好的编程!