Konami Code在C# - 代码日志

Konami Code在C#

我想要一个C#应用程序实现Konami代码来显示一个复活节彩蛋。
http://en.wikipedia.org/wiki/Konami_Code

这样做最好的方法是什么?

这是一个标准的C#Windows窗体应用程序。

在Windows窗体中,我将会有一个类,它知道序列是什么,并保存你在序列中的位置。这样的事情应该这样做。

using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace WindowsFormsApplication3 {
    public class KonamiSequence {

        List<Keys> Keys = new List<Keys>{System.Windows.Forms.Keys.Up, System.Windows.Forms.Keys.Up, 
                                       System.Windows.Forms.Keys.Down, System.Windows.Forms.Keys.Down, 
                                       System.Windows.Forms.Keys.Left, System.Windows.Forms.Keys.Right, 
                                       System.Windows.Forms.Keys.Left, System.Windows.Forms.Keys.Right, 
                                       System.Windows.Forms.Keys.B, System.Windows.Forms.Keys.A};
        private int mPosition = -1;

        public int Position {
            get { return mPosition; }
            private set { mPosition = value; }
        }

        public bool IsCompletedBy(Keys key) {

            if (Keys[Position + 1] == key) {
                // move to next
                Position++;
            }
            else if (Position == 1 && key == System.Windows.Forms.Keys.Up) {
                // stay where we are
            }
            else if (Keys[0] == key) {
                // restart at 1st
                Position = 0;
            }
            else {
                // no match in sequence
                Position = -1;
            }

            if (Position == Keys.Count - 1) {
                Position = -1;
                return true;
            }

            return false;
        }
    }
}

要使用它,您需要在Form的代码中响应键盘事件的内容。这样做应该做到这一点:

    private KonamiSequence sequence = new KonamiSequence();

    private void Form1_KeyUp(object sender, KeyEventArgs e) {
        if (sequence.IsCompletedBy(e.KeyCode)) {
            MessageBox.Show("KONAMI!!!");
        }
    }

希望这足够给你所需要的。对于WPF,您将需要轻微的差异非常相似(请参阅编辑历史#1)。

编辑:更新为winform而不是wpf。

http://stackoverflow.com/questions/469798/konami-code-in-c-sharp

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:Konami Code在C#