首先,需要储存现有的组合:
static char[] num1 = { A , B , C , 1 };
static char[] num2 = { D , E , F , 2 };
// etc...
之后,我们就把组合描绘成产生这些组合的正确关键特性:
Dictionary<char, char[]> map = new Dictionary<char, char[]>()
{
{ 1 , num1},
{ 2 , num2}
};
跟踪的一些变量:
char[] curr = null;
char currChar = - ;
int index = 0;
印刷功能:
void Print()
{
Console.WriteLine(curr[index]);
}
逻辑:
private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
if (map.ContainsKey(e.KeyChar))
{
if (curr == null || e.KeyChar != currChar)
{
curr = map[e.KeyChar];
index = 0;
currChar = e.KeyChar;
Print();
}
else
{
++index;
if (index == curr.Length)
index = 0;
Print();
}
}
}
确保对关键图的逻辑基本检查含有这些关键编码。 如果我们不追踪任何情况,或者如果它不同于我们目前重新追踪的情况,就使用这一特定地图和第一个指数。
否则,如果它重复出现关键压力,就会增加指数(如果我们结束,就可回头)。