vb.net - 停止选择案例在 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”只重复一次,所以它就像一个适当的跳跃机制,或者类似的东西。有谁知道如何做到这一点?任何答案表示赞赏,在此先感谢!
-亚伦
解决方案
你的问题比你想象的要复杂。问题是,您不需要代码片段。您需要一种新的方式来查看您的代码。
你想要的是一个名为“States”的设计模式。
这是一个链接,仅供您参考。
只是为了帮助您开始,这里有一些指示。你的角色可以做很多事情。您可以在状态中划分这些东西。也许您的角色可以保持闲置,行走,奔跑,跳跃,跌倒和死亡。所有这些都是状态,通过执行这些状态,你有点像面具,可以“改变规则”你的角色在任何这些情况下都遵守。例如,您的角色可能对这些状态中的每一种都有不同的动画。这些的最大速度也可能不同。也许他在某些情况下变得脆弱或不可战胜。
通过强制执行状态,您可以围绕角色的行为创建一个严格的结构,这既更容易自定义,也更难例外。大多数游戏都大量使用这种模式。
好编程!
推荐阅读
- javascript - 如何在对象中访问外部 .this
- c# - 避免视觉未连接到 Point.ToScreen wpf 上的演示文稿源?
- git - 是否可以提供子模块的绝对路径但与父存储库具有相同的主机?
- reactjs - 关于.net核心和反应的新手问题
- docker - 在 GitLab 中使用 google/could-sdk 而不是 docker:stable 时无法与 dind 交谈,这是为什么呢?
- c++ - ARM 上的运行时问题,但在 x86 上运行良好
- java - 在什么情况下 .keystore 是特定于平台的?
- javascript - Javascript,如果输入类型范围条件
- swift - 拆分 AVMutableComposition 并导出为多个较小的合成
- java - 如何从 ASCII 转换为字符串