2010-12-10 6 views
5

http://en.wikipedia.org/wiki/Konami_Codecode Konami en utilisant C# et ASP.net

Je l'ai déjà fait cela en utilisant pleinement javascript, mais comment puis-je faire cela en C# site/de asp.net (non WinForm). merci ..

+0

ne peut pas vous utiliser une partie de votre code JavaScript dans cette page ASP.NET? C'est html après tout ... – decyclone

+0

Je veux dire oui ça peut, mais je veux juste le côté serveur de sorte que le code ne puisse pas être vu quand vous visualise le html =) – CSharpNoob

+0

Il y a une question similaire en pile sur le flux déjà ... --http: //stackoverflow.com/questions/469798/konami-code-in-c –

Répondre

3

Cela n'a aucun sens de le faire en C#. Un tel code devrait être exécuté du côté client de toute façon, donc il doit être Javascript (sauf si vous voulez envoyer chaque touche client au serveur, ce qui serait péniblement lent)

Quoi qu'il en soit, voici une implémentation C#. C'est pour WPF, mais il ne serait pas difficile de l'adapter à une autre technologie.

private static readonly Key[] _konamiCode = new[] { Key.Up, Key.Up, Key.Down, Key.Down, Key.Left, Key.Right, Key.Left, Key.Right, Key.B, Key.A }; 
    int _konamiCurrentIndex = 0; 

    protected override void OnPreviewKeyDown(KeyEventArgs e) 
    { 
     base.OnPreviewKeyDown(e); 
     if (e.Key == _konamiCode[_konamiCurrentIndex]) 
     { 
      _konamiCurrentIndex++; 
      if (_konamiCurrentIndex == _konamiCode.Length) 
      { 
       _konamiCurrentIndex = 0; 
       KonamiEasterEgg(); 
      } 
     } 
     else 
     { 
      _konamiCurrentIndex = 0; 
     } 
    } 

    void KonamiEasterEgg() 
    { 
     // whatever you want to do when the Konami code is entered... 
    } 
+1

Je me demande quel est l'équivalent de KeyEventArgs dans l'espace de noms system.web ^^ – CSharpNoob

4

Vous voulez donc dire que l'utilisateur ne devrait pas se renseigner sur votre code konami ultra secret lors de la visualisation de la source?

Il n'est pas possible de le faire entièrement côté serveur, sauf si vous souhaitez effectuer une publication à chaque frappe, ce qui est gênant.

Vous pourriez compresser et obscurcir le javascript, mais je suppose qu'un utilisateur avec une forte détermination peut encore comprendre.

Vous pouvez utiliser Silverlight, mais encore une fois, un utilisateur avec une forte détermination peut décompresser le fichier XAP à partir du cache du navigateur et afficher vos DLL dans le réflecteur. Ce que vous pouvez faire est d'envoyer chaque touche au serveur en utilisant AJAX (ou peut-être les recueillir côté client et les envoyer dans un lot), ce qui n'est pas péniblement lent. Sur le serveur, vous devez analyser les frappes. Ce code ne sera pas visible pour l'utilisateur. Vous devrez ensuite simuler un mécanisme de poussée pour déclencher la réaction souhaitée du côté client.

0

comme d'autres l'ont déjà dit, cela n'a pas beaucoup de sens de l'implémenter entièrement en C#. Mais je pourrais imaginer une sorte de combinaison de JavaScript + AJAX avec C# ... Juste quelques idées :)

Flux de travail possible: Scan utilisateur Entrée (10 dernières touches) avec JavaScript et pousser les entrées dans un tableau (code ASCII ou quelque chose) et envoyer une requête via AJAX qui retournera toute la page cible secrète en tant que résultat html au lieu de simplement vérifier, car ce serait facile à cracker. En fait, ce serait plus comme une comparaison de mot de passe. Mais vous pouvez optimiser votre JavaScript et effacer le tableau quelques secondes sans entrée (temps d'inactivité) comme 2 secondes (de sorte que l'entrée doit être fluide) et envoyer la requête ajax après 1 seconde sans entrée afin de ne pas inonder votre propre serveur.

JQuery vous aidera beaucoup!

codage heureux:)

  • meilleures salutations
    Thomas
0

Voir der herzmeister Welten

Ce que vous pouvez faire est d'envoyer chaque frappe au serveur en utilisant AJAX (ou peut-être les rassembler côté client et les envoyer dans un lot), ce qui n'est pas si péniblement lent. Sur le serveur, vous devez analyser les frappes. Ce code ne sera pas visible pour l'utilisateur.Vous devrez ensuite simuler un mécanisme de poussée pour déclencher la réaction souhaitée du côté client.

Le déclencheur pourrait être la dernière combinaison de touches dont vous avez besoin dans le cadre de la combinaison, l'utilisateur ne puis être en mesure de déchiffrer la dernière séquence de touches, ce qui offrirait le plus petit nombre postbacks sans une certaine validation côté client.

(Aurait juste fait un commentaire, mais manque représentant)

Questions connexes