80,349
社区成员
发帖
与我相关
我的任务
分享
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
int action = event.getAction();
if(action == MotionEvent.ACTION_DOWN) {
startX = event.getX();
startY = event.getY();
} else if(action == MotionEvent.ACTION_UP) {
endX = event.getX();
endY = event.getY();
int direction = getSlideDirection(startX,startY,endX,endY);
//Toast.makeText(this, ""+direction, Toast.LENGTH_SHORT).show();
boolean gameOver = maps.slide(direction);
if(gameOver) {
if(maps.getScore() > maps.getBestScore()) {
Toast.makeText(this, "恭喜超过最佳记录!!!", Toast.LENGTH_SHORT).show();
//存到文件中,方便下次读取
maps.setBestScore(maps.getScore());
//setText
best.setText(maps.getScore()+" 分");
}
Toast.makeText(this, "游戏结束!!!", Toast.LENGTH_SHORT).show();
}
}
return super.dispatchTouchEvent(event);
}
public boolean slide(int direction) {
switch(direction) {
case Direction._LEFT:
left_remove_blank();
left();
break;
case Direction._RIGHT:
right_remove_blank();
right();
break;
case Direction._UP:
up_remove_blank();
up();
break;
case Direction._DOWN:
down_remove_blank();
down();
break;
}
if(hasEmptyItem()) {
addNumber();
initColor();
return false;
} else {
return isFull();
}
}
private void initColor() {
int [] color = {
0x1F000000,0xFFFFFF66,0xFF99FF33,0xFF66FF00,
0xFF66FFFF,0xFF3399FF,0xFF3366FF,0xFF6633FF,
0xFFCC66FF,0xFFFF66CC,0xFFFF3333,0xFFCC6633
};
String strValue;
int value;
int v2;
for(int i=0;i<4;i++) {
for(int j=0;j<4;j++) {
strValue = maps[i][j].getText().toString();
if(strValue.equals("")) {
maps[i][j].setBackgroundColor(color[0]);
} else {
value = Integer.valueOf(strValue);
v2 = (int) (Math.log(value) / Math.log(2));
maps[i][j].setBackgroundColor(color[v2 % color.length]);
if(v2 > 16) {
maps[i][j].setTextSize(15);
} else if(v2 >= 10) {
maps[i][j].setTextSize(20);
} else {
maps[i][j].setTextSize(30);
}
}
}
}
}