首页 > 解决方案 > 停止选择案例在 VB 中重复

问题描述

对不起,标题含糊不清,我不知道如何简明扼要地解释这个问题。

我有这段代码,在这里:

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

这很好用,不同的 pBoxes 代表我要移动的不同图片框。一切正常,图片框向左/向右/向上移动,但我想阻止“向上”重复(我正在让视频游戏角色向左/向右/跳跃)所以玩家不能只是漂浮到空气中。我希望“Case Keys.Up”只重复一次,所以它就像一个适当的跳跃机制,或者类似的东西。有谁知道如何做到这一点?任何答案表示赞赏,在此先感谢!

-亚伦

标签: vb.net

解决方案


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

你想要的是一个名为“States”的设计模式。

这是一个链接,仅供您参考。

只是为了帮助您开始,这里有一些指示。你的角色可以做很多事情。您可以在状态中划分这些东西。也许您的角色可以保持闲置,行走,奔跑,跳跃,跌倒和死亡。所有这些都是状态,通过执行这些状态,你有点像面具,可以“改变规则”你的角色在任何这些情况下都遵守。例如,您的角色可能对这些状态中的每一种都有不同的动画。这些的最大速度也可能不同。也许他在某些情况下变得脆弱或不可战胜。

通过强制执行状态,您可以围绕角色的行为创建一个严格的结构,这既更容易自定义,也更难例外。大多数游戏都大量使用这种模式。

好编程!


推荐阅读