Java-是否可以让它监听特定的按键顺序?
我正在尝试为一个简单的划桨游戏实现一个作弊代码,作弊应该只在按下键的特定顺序时激活:上、上、下、下、左、左、右、右。我正在努力,但我没能得到它Java-是否可以让它监听特定的按键顺序?,java,mobile,java-me,midlet,Java,Mobile,Java Me,Midlet,我正在尝试为一个简单的划桨游戏实现一个作弊代码,作弊应该只在按下键的特定顺序时激活:上、上、下、下、左、左、右、右。我正在努力,但我没能得到它 if(up >= 2){ if(down >= 2){ if(left >= 2){ if(right >= 2){ cheat = true; g.setColor(0x
if(up >= 2){
if(down >= 2){
if(left >= 2){
if(right >= 2){
cheat = true;
g.setColor(0x00FF0000);
g.fillRect(x, y, canvas.getWidth(), 5);
g.fillRect(x, y - 5, 5, 5);
g.fillRect(canvas.getWidth() - 5, y - 5, 5, 5);
x = 0;
width = canvas.getWidth();
height = canvas.getHeight();
}else{
g.setColor(0x00FF0000);
g.fillRect(x, y, width, height);
g.fillRect(x, y - height, height, height);
g.fillRect(x + width - height, y - height, height, height);
System.out.println(up + " " + down + " " + left + " " + right + "right");
}
}else{
g.setColor(0x00FF0000);
g.fillRect(x, y, width, height);
g.fillRect(x, y - height, height, height);
g.fillRect(x + width - height, y - height, height, height);
right = 0;System.out.println(up + " " + down + " " + left + " " + right + "left");
}
}else{
g.setColor(0x00FF0000);
g.fillRect(x, y, width, height);
g.fillRect(x, y - height, height, height);
g.fillRect(x + width - height, y - height, height, height);
left = 0; right = 0;System.out.println(up + " " + down + " " + left + " " + right + "down");
}
}else{
g.setColor(0x00FF0000);
g.fillRect(x, y, width, height);
g.fillRect(x, y - height, height, height);
g.fillRect(x + width - height, y - height, height, height);
down = 0; left = 0; right = 0;System.out.println(up + " " + down + " " + left + " " + right + "up");
}
程序每50毫秒更新一次。
上、左、下、右是键侦听器,当按下这些键时,它像计数器一样被添加。忽略整个g.fillRect和g.setColor以及System.outwas,我试图看看它是如何工作的,以及如何自己解决问题。当用户没有输入正确的键顺序时,计数器应该重置,但由于更新是每50毫秒一次,计数器就会出错
有没有办法检测按键的特定顺序,或者这是不可能的?您应该创建一个对象,该对象在每次单击按钮时都会接收按键事件。该对象将按顺序跟踪当前已按下的键列表,并且在每次添加堆栈时也将检查堆栈,以查看列表是否与您提供的模式匹配。如果用户输入的密钥与模式不匹配,不要忘记清除堆栈 你可以这样做
int cheat = 0; //keeps track of how many were pressed in order
if (cheat == 0 && upButtonPressed)
cheat++;
elseif (cheat == 1 && upButtonPressed)
cheat++;
elseif(cheat == 2 && downButtonPressed)
cheat++;
//rest of the order
else
cheat = 0;
if (cheat == 8) //or however many buttons need to be pressed
//do whatever you want to happen when the cheat is activated
我将用键代码制作两个数组。一个用于游戏动作代码,一个用于相应的按键代码。因为你想在没有d-pad或操纵杆的手机上提供另一种输入组合键的方式
int[] keys1 = {getKeyCode(UP), getKeyCode(UP), getKeyCode(DOWN), getKeyCode(DOWN), getKeyCode(LEFT), getKeyCode(LEFT), getKeyCode(RIGHT), getKeyCode(RIGHT)};
int[] keys2 = {KEY_NUM2, KEY_NUM2, KEY_NUM8, KEY_NUM8, KEY_NUM4, KEY_NUM4, KEY_NUM6, KEY_NUM6};
int keyIterator = 0;
public void keyPressed(int kc) {
if (kc == keys1[keyIterator] || kc == keys2[keyIterator]) { // Correct key
keyIterator++;
if (keyIterator > keys1.length) {
// keyIterator has reached the length of the array, meaning the secret key combination has been entered successfully.
}
} else { // Wrong key. Start over
keyIterator = 0;
}
}
每次按下一个键,您都会得到一个键码。现在,为什么不自己检查一下顺序并激活它呢?显然,所有这些都在一个方法中,该方法在每次关键事件发生时都会被调用