quelle serait la meilleure façon d'implémenter les codes de triche en général? J'ai l'application WinForms à l'esprit, où un code de triche débloquerait un oeuf de Pâques, mais les détails de mise en œuvre ne sont pas pertinents. La meilleure approche qui me vient à l'esprit est de garder un index pour chaque code - considérons les célèbres codes DOOM - IDDQD et IDKFA, dans une application C# fictive.Comment mettre en œuvre correctement les codes de triche?
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;
}
}
Est-ce la bonne façon de le faire? Edit: Probablement la pire chose que j'aurais dû faire était d'inclure les premiers codes de triche qui viennent du haut de ma tête à titre d'exemple. Je vraiment n'a pas voulez voir le code source de Doom ou leur mise en œuvre, mais une solution générale à ce problème. Pourquoi ne pas télécharger la source DOOM et voir par vous-même?
mais votre code ne fonctionnera probablement pas avec des codes de longueur variable, n'est-ce pas? – Axarydax
@Axarydax: Bien sûr cela fonctionne. Vérifiez à nouveau :) –
mon mauvais. Je n'ai pas vu la partie "EndsWith";) – Axarydax