Was wäre der beste Weg, um Art von Cheat-Codes im Allgemeinen zu implementieren? Ich habe WinForms Anwendung im Auge, wo ein Cheat-Code ein Osterei entsperren würde, aber die Implementierungsdetails sind nicht relevant.Wie Cheat-Codes korrekt implementiert werden?
Der beste Ansatz, der mir in den Sinn kommt, ist, den Index für jeden Code zu behalten - lassen Sie uns die berühmten DOOM-Codes IDDQD und IDKFA in einer fiktiven C# -App betrachten.
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;
}
}
Ist dies der richtige Weg?
Edit: Wahrscheinlich das Schlimmste, was ich hätte tun sollen, war, die ersten Cheat-Codes, die aus dem oberen Teil meines Kopfes kamen, als ein Beispiel zu nehmen. Ich wirklich nicht wollen Dooms Quellcode oder ihre Implementierung sehen, aber allgemeine Lösung für dieses Problem.
, aber Ihr Code wird wahrscheinlich nicht mit Codes variabler Länge funktionieren, oder? – Axarydax
@Axarydax: Sicher, es funktioniert. Überprüfen Sie noch einmal :) –
mein schlechtes. Ich habe den "EndsWith" -Teil nicht gesehen;) – Axarydax