适用于iOS应用的控制台视频游戏风格作弊代码

如何在iOS应用中实现D-pad风格的作弊代码

最近,我在考虑如何在iOS应用中实施复活节彩蛋,以及用户如何找到它。 如果您不熟悉复活节彩蛋的概念,那么复活节彩蛋 是一项隐藏在用户必须发现的应用程序中的有趣功能。

在游戏机游戏的早期,视频游戏通常包含作弊代码以解锁复活节彩蛋或游戏的其他功能,例如关卡选择屏幕或上帝模式 。 通常,这些是由开发人员创建的,可以跳至特定级别等,而无需一直玩游戏。 由于此时几乎所有的控制台都是使用D-Pad控制器(由带有向上,向下,向左和向右箭头的方向盘以及(通常)四个彩色/带字母的按钮,例如A,B,C,D组成)来播放的,必须使用这些输入的组合来输入作弊代码。

常见的8位时代视频游戏作弊代码示例是Konami代码,该名称取自视频游戏开发者Konami的名字,该游戏经常包含向上,向下,向下,向左,向右,向左,向右,B,用于解锁该游戏特有的作弊功能。 随着时间的流逝,其他开发人员甚至DVD和网站都已在视频游戏中采用了此代码和许多其他变体来解锁复活节彩蛋。

不依赖D-pad控制器进行输入的游戏和媒体已经找到了使用户能够输入作弊代码的创造性手段。 例如,《舞蹈大革命》系列中的某些游戏允许通过跳舞垫输入作弊文件,而某些DVD通过DVD播放器遥控器接受作弊代码。

要在iOS应用中实现作弊代码(例如Konami代码),我们可以将方向滑动等同于D-pad箭头按键,而A,B,C按钮的按键可以使用iOS键盘进行数据输入。

秘籍

Cheats是一个开放源代码框架,旨在允许iOS开发人员定义自己的复古视频游戏风格作弊代码,应用可以识别这些作弊代码,以解锁隐藏功能/复活节彩蛋。 它是使用Swift 4编写的,可通过Cocoapods,Carthage和Swift Package Manager获得。

用法

例如,一个简单的作弊代码序列可以定义如下:

  let actionSequence:[CheatCode.Action] = [.swipe(.up)、. swipe(.down)、. swipe(.left)、. swipe(.right)、. keyPress(“ a”)、. keyPress(“ b“)] 

此顺序允许用户向上滑动,向下滑动,向左滑动,向右滑动 (在视图上),然后调出键盘以允许输入A和B键 。 通过定义一系列动作,我们可以定义一个CheatCode和一个CheatCode.Action数组CheatCode.Action对象需要一个完成闭包,每次CheatCode更改状态时都会调用该闭包。

  let作弊= CheatCode(actions:actionSequence){ 
 切换cheatCode.status(){ 
case .matched://正确
打印(“作弊解锁!”)
case .matching://到目前为止正确
打印(“解锁作弊需要进一步的动作。”)
case .notMatched://不正确
打印(“作弊不正确。”)
case .reset://初始状态或序列重置
打印(“作弊序列重置”)
}
  } 

调用该闭包将返回CheatCode实例作为参数,从而允许使用state()方法查询CheatCode.StateCheatCode对象本质上是一个状态机,当输入与定义的序列匹配的输入时,它们会在状态之间转换。 它可以采取的状态是:

  • .matching作为输入序列部分匹配解锁作弊所需的全部动作序列。
  • 一旦输入了解锁作弊所需的全部动作序列, .matched
  • .notMatched当用户输入作弊代码错误时.notMatched 。 进入此状态后,必须调用reset()方法以使状态机返回.reset状态。
  • .reset这是用户执行任何操作之前的初始状态。 这也是状态机在调用reset()方法并清除用户输入的操作序列(例如,将作弊代码错误之后reset()后返回的状态。 允许用户在输入错误后再次尝试输入正确的作弊代码。

动作是作弊代码序列的基础。 可用的操作是:

  • keyPress –每当按下键盘上的一个键时。
  • shake –用户摇动设备时。
  • swipeupdownleftright
  • tap –指定所需的抽头数。

使用这些动作,我们可以轻松地实现作弊代码序列,例如Konami代码或多种变体之一。 一个示例应用程序作为框架的一部分分发,允许尝试作弊代码序列。

UIKit

为了使状态机与UIKit轻松集成,Cheats还提供了一种手势识别器,用于识别作弊代码序列。 可以使用CheatCode实例轻松实例化它,然后将其添加到UIViewController的视图中。 尽管整个框架可通过Cocoapods和Carthage获得,但请注意,只有CheatCode状态机组件可通过Swift Package Manager获得,因为它目前不支持iOS平台。

 让gestureRecognizer = CheatCodeGestureRecognizer(作弊代码:作弊代码,目标:自我,行动​​:#选择器(actionPerformed(_ :))) 
  view.addGestureRecognizer(gestureRecognizer) 

摘要

Cheats框架提供了一种定义动作的方法,该动作在馈送到CheatCode状态机时可以用来识别用户输入的复古视频游戏风格作弊代码。 当CheatCode进入.matched状态时,可用于解锁应用程序中的隐藏功能或复活节彩蛋。

为了使UIKit可以直接使用框架,当用户输入作弊代码序列的一部分时,提供了一个手势识别器来识别手势。

总而言之,使用Cheats框架识别欺骗代码(例如Konami代码)仅需几行代码即可实现。 要尝试其他作弊代码,请尝试在示例应用程序中修改CheatCode.Action序列。