【发布时间】:2010-03-24 10:29:24
【问题描述】:
一般来说,实现某种作弊码的最佳方式是什么? 我想到了 WinForms 应用程序,其中一个作弊码可以解锁一个复活节彩蛋,但实现细节并不相关。
我想到的最佳方法是为每个代码保留索引 - 让我们在一个虚构的 C# 应用程序中考虑著名的 DOOM 代码 - IDDQD 和 IDKFA。
string[] CheatCodes = { "IDDQD", "IDKFA"};
int[] CheatIndexes = { 0, 0 };
const int CHEAT_COUNT = 2;
void KeyPress(char c)
{
for (int i = 0; i < CHEAT_COUNT; i++) //for each cheat code
{
if (CheatCodes[i][CheatIndexes[i]] == c)
{ //we have hit the next key in sequence
if (++CheatIndexes[i] == CheatCodes[i].Length) //are we in the end?
{
//Do cheat work
MessageBox.Show(CheatCodes[i]);
//reset cheat index so we can enter it next time
CheatIndexes[i] = 0;
}
}
else //mistyped, reset cheat index
CheatIndexes[i] = 0;
}
}
这是正确的做法吗?
编辑:可能我应该做的最糟糕的事情就是将我脑海中出现的第一个作弊码作为示例。我真的不想想看到 Doom 的源代码或它们的实现,而是这个问题的通用解决方案。
【问题讨论】: