该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
/**
* 按键输入事件的处理方法
* @param e
*/
protected void do_label_keyPressed(final KeyEvent e){
int code = e.getKeyCode();//获取按键代码
int a ;//a 的引入是为了防止连加的情况出现
String str ;
String str1;
int num;
switch(code){
case KeyEvent.VK_LEFT:
case KeyEvent.VK_A://如果按键代码是左方向键或者A键
for(int i = 0; i < 4; i++){
a = 5;
for(int k = 0; k < 3; k++){
for(int j = 1; j < 4; j++){//遍历16个方块
str = texts[i][j].getText();//获取当前方块标签文本字符
str1 = texts[i][j-1].getText();//获取当前左1方块标签文本字符
if(str1.compareTo("") == 0){//如果左1方块文本为空字符
texts[i][j-1].setText(str);//字符左移
setColor(i, j-1,str);
texts[i][j].setText("");//当前方块字符置空
setColor(i, j, "");
}else if((str.compareTo(str1) == 0) && (j !=a) && (j != a-1)){//如果当前方块和左1方块文本字符相等
num = Integer.parseInt(str);
scores += num;
times ++;
str = String.valueOf(2 * num);
texts[i][j-1].setText(str);//左1方块文本字符变为两方块之和
setColor(i, j-1, str);
texts[i][j].setText("");//当前方块字符置空
setColor(i, j, "");
a = j;
}
}
}
}
l1 = 1;//用于判断游戏是否失败
Create2();
break;
case KeyEvent.VK_RIGHT:
case KeyEvent.VK_D:
for(int i = 0; i < 4; i ++){
a = 5;
for(int k = 0; k < 3; k++){
for(int j = 2; j >= 0; j--){
str = texts[i][j].getText();
str1 = texts[i][j + 1].getText();
if(str1.compareTo("") == 0){
texts[i][j + 1].setText(str);
setColor(i, j+1, str);
texts[i][j].setText("");
setColor(i, j, "");
}
else if(str.compareTo(str1) == 0 && j !=a && j != a+ 1){
num = Integer.parseInt(str);
scores += num ;
times ++;
str = String.valueOf(2 * num);
texts[i][j + 1].setText(str);
setColor(i, j+1, str);
texts[i][j].setText("");
setColor(i, j, "");
a = j;
}
}
}
}
l2 = 1;
Create2();
break;
case KeyEvent.VK_UP:
case KeyEvent.VK_W:
for(int j = 0; j < 4; j++){
a = 5;
for(int k = 0; k < 3; k++){
for(int i = 1; i < 4; i++){
str = texts[i][j].getText();
str1 = texts[i - 1][j].getText();
if(str1.compareTo("") == 0){
texts[i - 1][j].setText(str);
setColor(i-1, j, str);
texts[i][j].setText("");
setColor(i, j, "");
}
else if(str.compareTo(str1) == 0 && i != a && i != a -1){
num = Integer.parseInt(str);
scores += num ;
times ++;
str = String.valueOf(2 * num);
texts[i - 1][j].setText(str);
setColor(i-1, j, str);
texts[i][j].setText("");
setColor(i, j, "");
a = i;
}
}
}
}
l3 =1;
Create2();
break;
case KeyEvent.VK_DOWN:
case KeyEvent.VK_S:
for(int j = 0; j < 4; j ++){
a = 5;
for(int k = 0; k < 5; k++){
for(int i = 2; i >= 0; i--){
str = texts[i][j].getText();
str1 = texts[i + 1][j].getText();
if(str1.compareTo("") == 0){
texts[i + 1][j].setText(str);
setColor(i+1, j, str);
texts[i][j].setText("");
setColor(i, j, "");
}
else if(str.compareTo(str1) == 0 && i != a && i != a + 1){
num = Integer.parseInt(str);
scores += num ;
times ++;
str = String.valueOf(2 * num);
texts[i + 1][j].setText(str );
setColor(i+1, j, str);
texts[i][j].setText("");
setColor(i, j, "");
a = i;
}
}
}
}
l4 = 1;
Create2();
break;
default:
break;
}
textScores.setText(String.valueOf(scores));
}