Каков наилучший способ реализации чит-кодов вообще?
Я имею в виду приложение WinForms, где чит-код разблокировал бы пасхальное яйцо, но детали реализации не имеют значения.
Лучший подход, который приходит мне в голову, - это сохранить индекс для каждого кода - давайте рассмотрим известные коды DOOM - IDDQD и IDKFA в вымышленном приложении на C #.
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 или его реализацию, но общее решение этой проблемы.