停止选择案例在VB中重复

时间:2018-10-02 22:56:03

标签: vb.net

很抱歉,标题含糊,我不知道如何简明地解释这个问题。

我在这里有这段代码:

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”仅重复一次,因此它的工作原理类似于适当的跳跃机制。有谁知道如何做到这一点?感谢您提供任何答案,谢谢!!

-亚伦

1 个答案:

答案 0 :(得分:1)

您的问题比您想象的要复杂。问题是,您不需要一小段代码。您需要一种查看代码的新方法。

您想要的是一个名为“状态”的设计模式。

Here's a link,只为您。

只是为了帮助您开始,这里有一些提示。您的角色可以做很多事情。您可以将这些状态划分为多个状态。也许您的角色可以保持闲置,行走,奔跑,跳跃,摔倒和死亡。所有这些都是状态,通过强制执行这些状态,您可以拥有一个可以“更改规则”的遮罩,您的角色会在所有这些情况下都遵守。例如,对于这些状态中的每个状态,您的角色可能具有不同的动画。这些的最大速度可能也会有所不同。也许他在某些情况下变得脆弱或无敌。

通过强制执行状态,您可以围绕角色的行为创建严格的结构,这既易于自定义,也难以进行异常处理。大多数游戏都使用这种模式。

好的编程!