java 简单2048代码_看2048挺火的,就用java写了个,附完整代码

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

/**

* 按键输入事件的处理方法

* @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));

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值