键盘input与字符移动封装

在用c ++和sdl创建的游戏中,我们很难委托如何控制主角。 我们有一个键盘类和一个主角字符类,但不确定主字符是否应该有键盘类的实例,或者是否应该通过游戏循环完成键盘input。 如果你需要更多的信息,我会很乐意提供,在此先感谢您的帮助。

您的主要角色类不应该有键盘或任何input相关的类的引用。 input应该在游戏循环中处理,或者最好是一个专门的input类,与其他实体分离,这样他们只需要响应抽象动作而不是原始input。

并非所有的input都与你的角色相关,而且并不是所有的input设备types都是相同的,所以你最好的办法是将input处理分成几个阶段,这样你就可以在上下文中处理它

  1. 收集input数据
  2. 检查当前的游戏状态或上下文(MainMenu,InGame,InGameMenu,GameOver等)
  3. 将原始input映射到操作…等

这将使你更容易实施新的行动,控制scheme,input设备或多人控制。