¿Cuál sería la mejor manera de implementar el tipo de códigos de trucos en general? Tengo la aplicación WinForms en mente, donde un código trampa podría desbloquear un huevo de pascua, pero los detalles de implementación no son relevantes.¿Cómo implementar correctamente los códigos de trampa?
El mejor enfoque que me viene a la mente es mantener el índice para cada código; consideremos los famosos códigos DOOM - IDDQD e IDKFA, en una aplicación C# ficticia.
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;
}
}
¿Es esta la manera correcta de hacerlo?
Editar: Probablemente lo peor que debería haber hecho es incluir los primeros códigos de trucos que vinieron de la parte superior de mi cabeza como un ejemplo. Realmente no quería querer ver el código fuente de Doom o su implementación, sino una solución general a este problema.
pero su código probablemente no funcionará con códigos de longitud variable, ¿verdad? – Axarydax
@Axarydax: Claro que funciona. Verifique nuevamente :) –
mi mal. No vi la parte "EndsWith";) – Axarydax