2010-12-10 6 views
5

http://en.wikipedia.org/wiki/Konami_CodeCódigo Konami usando C# y ASP.net

Ya hecho esto usando JavaScript completa pero ¿cómo puedo hacer esto en C# página web/asp.net (no Winform). gracias ..

+0

No puedes usar parte de su código JavaScript en esta página ASP.NET? Es html después de todo ... – decyclone

+0

Quiero decir que sí, pero solo quiero que sea del lado del servidor para que el código no pueda ser visto cuando visualices el html =) – CSharpNoob

+0

Hay una pregunta similar en stack over flow ya ... ¡Pruébalo! --http: //stackoverflow.com/questions/469798/konami-code-in-c –

Respuesta

3

No tiene sentido hacerlo en C#. Dicho código debería ejecutarse en el lado del cliente de todos modos, por lo que tiene que ser Javascript (a menos que desee enviar la pulsación de cada cliente al servidor, lo que sería extremadamente lento)

De todos modos, aquí hay una implementación de C#. Es para WPF, pero no sería difícil adaptarlo a otra tecnología.

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

me pregunto cuál es el equivalente de KeyEventArgs en el espacio de nombres system.web ^^ – CSharpNoob

4

¿Quiere decir que el usuario no debería enterarse de su código konami ultra secreto cuando vea la fuente?

No es posible hacerlo completamente del lado del servidor, a menos que desee una devolución de datos en cada golpe de teclado, lo que es incómodo.

Podría comprimir y ofuscar el javascript, pero supongo que un usuario con una gran determinación aún puede resolverlo.

Puede usar Silverlight, pero una vez más, un usuario con una gran determinación puede descomprimir el XAP desde el caché del navegador y ver los archivos DLL en el reflector.

Lo que podría hacer es enviar cada pulsación de tecla al servidor usando AJAX (o tal vez recopilarlas del lado del cliente y enviarlas en un lote), que en realidad no es que es muy lento. En el servidor, tendrías que analizar las pulsaciones de teclas. Este código no será visible para el usuario. Entonces tendría que simular algún mecanismo de inserción para desencadenar su reacción deseada en el lado del cliente.

0

como ya se dijo, no tiene mucho sentido implementarlo completamente en C#. Pero podría imaginar algún tipo de combinación de JavaScript + AJAX con C# ... Algunas ideas :)

Flujo de trabajo posible: Escanear entrada de usuario (últimas 10 teclas) con JavaScript y insertar las entradas en una matriz (código ascii o algo así) y enviar una solicitud a través de AJAX que devolverá toda la página de destino secreta como un resultado html en lugar de simplemente verificar, ya que esto sería fácil de descifrar. En realidad, esto sería más como una comparación de contraseña. Pero puede optimizar su JavaScript y borrar la matriz en unos pocos segundos sin ingresar (tiempo de inactividad) como 2 segundos (para que la entrada sea fluida) y enviar la solicitud de ajax después de 1 segundo sin ingresar para que no inunde su propia cuenta servidor.

¡JQuery te ayudará mucho!

feliz de codificación:)

  • mejores deseos
    Thomas
0

Ver herzmeister der welten

Lo que podría hacer es enviar cada golpe de teclado al servidor usando AJAX (o tal vez recopilarlos del lado del cliente y enviarlos en un lote), que en realidad no es tan dolorosamente lento. En el servidor, tendrías que analizar las pulsaciones de teclas. Este código no será visible para el usuario.Entonces tendría que simular algún mecanismo de inserción para desencadenar su reacción deseada en el lado del cliente.

El disparador podría ser la última pulsación de tecla que necesita como parte de la combinación, el usuario sólo entonces será capaz de descifrar la última pulsación de tecla, y esto ofrecería las devoluciones de datos menor cantidad sin alguna validación del lado del cliente.

(Habría que acaba de hacer un comentario, pero carecen de representante)