Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 停止在VB中重复选择案例_Vb.net - Fatal编程技术网

Vb.net 停止在VB中重复选择案例

Vb.net 停止在VB中重复选择案例,vb.net,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

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

我这里有一段代码:

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”只重复一次,这样它就像一个合适的跳跃机械师一样工作,或者类似的东西。有人知道怎么做吗?任何答案都将不胜感激,提前感谢


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

您需要的是一个名为“States”的设计模式

,只为你

为了帮助你开始,这里有一些建议。你的角色可以做很多事情。你可以把这些东西分成几个州。也许你的角色可以无所事事,走、跑、跳、摔、死。所有这些都是状态,通过强制执行这些状态,你就有了一个面具,可以“改变规则”,你的角色在任何情况下都会遵守这些规则。例如,角色的每个状态都可能有不同的动画。它的最大速度可能也会有所不同。也许他在某些情况下变得脆弱或不可战胜

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


很好的编程

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

您需要的是一个名为“States”的设计模式

,只为你

为了帮助你开始,这里有一些建议。你的角色可以做很多事情。你可以把这些东西分成几个州。也许你的角色可以无所事事,走、跑、跳、摔、死。所有这些都是状态,通过强制执行这些状态,你就有了一个面具,可以“改变规则”,你的角色在任何情况下都会遵守这些规则。例如,角色的每个状态都可能有不同的动画。它的最大速度可能也会有所不同。也许他在某些情况下变得脆弱或不可战胜

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


很好的编程

这个问题与
选择案例
无关。问题是如何检测
KeyDown
事件为
Up
键引发了多少次。当检测到该密钥时,您该如何做?查找所需信息的一个重要部分是确定所需的信息,如果包含不相关的参数,则查找相关信息会变得更加困难。那么,对您来说,真正重要的是什么?自上次
KeyDown
事件以来是否已引发
keydup
事件?如果是这样,那么很明显,您至少需要处理
KeyUp
事件。现在考虑确定你需要确定的逻辑。好的,对不起,我不知道它不是选择的情况。但我想你误解了我的问题。我想要的是玩家按下向上箭头,让屏幕上的角色向上移动,然后向下移动。现在只要玩家按住向上箭头,角色就开始漂浮在空中。这与键关闭事件无关抱歉,如果我完全是愚蠢的,我几乎完全知道vb和堆栈溢出。很抱歉您可能希望将
KeyPress
事件与
KeyDown
事件结合或代替一起查看。此问题与
Select Case
无关。问题是如何检测
KeyDown
事件为
Up
键引发了多少次。当检测到该密钥时,您该如何做?查找所需信息的一个重要部分是确定所需的信息,如果包含不相关的参数,则查找相关信息会变得更加困难。那么,对您来说,真正重要的是什么?自上次
KeyDown
事件以来是否已引发
keydup
事件?如果是这样,那么很明显,您至少需要处理
KeyUp
事件。现在考虑确定你需要确定的逻辑。好的,对不起,我不知道它不是选择的情况。但我想你误解了我的问题。我想要的是玩家按下向上箭头,让屏幕上的角色向上移动,然后向下移动。现在只要玩家按住向上箭头,角色就开始漂浮在空中。这与键关闭事件无关抱歉,如果我完全是愚蠢的,我几乎完全知道vb和堆栈溢出。很抱歉您可能希望结合或代替
KeyDown
事件查看
KeyPress
事件。谢谢!那帮了大忙!我只想补充一点:如果你真的想做一个游戏,国家通常是你的选择。另一方面,如果这是一个忍者编码的家庭作业,您可以使用布尔值来知道您当前是否正在跳转,并避免使代码进一步复杂化。祝你好运谢谢Laancelot!那帮了大忙!我只想补充一点:如果你真的想做一个游戏,国家通常是你的选择。另一方面,如果这是一个忍者编码的家庭作业,您可以使用布尔值来知道您当前是否正在跳转,并避免使代码进一步复杂化。祝你好运