package com.yimeng.mygame;
import java.util.ArrayList;
import java.util.List;
导入安卓. app.alert诊断程序;
导入安卓. content.context;
import Android.content.dialog接口;
导入安卓. graphics.point;
import Android.util.attributes et;
导入安卓. view.motion event;
导入安卓. view.view;
import Android .构件.生动宝贝;
公共课堂game view extends的生动宝贝{
//构建方法、初始接口
publicgameview(SDDJZ ) {
super (上下文;
initGameView (;
}
//构建方法、初始接口
publicgameview(SDDJZ,AttributeSet attrs ) {
super (上下文、attrs );
initGameView (;
}
//构建方法、初始接口
publicgameview(SDDJZ,AttributeSet attrs,int defStyle ) {
super (上下文、attrs、defStyle );
initGameView (;
}
//接口的初始方法
私有语音识别initgameview (
设置列计数(4;
setbackgroundcolor(0xffbbada0; //bbada0a1debe
setontouchlistener (new view.ontouchlistener ) ) }
私密浮动开始、开始、关闭、关闭;
@Override
公共蓝牙(view arg 0,MotionEvent arg1) {
切换(arg1. get action () ) }
casemotionevent.action _ down :
startX=arg1.getX (;
startY=arg1.getY (;
布雷克;
case MotionEvent.ACTION_UP:
offsetx=arg1.getx((-startx;
offsetY=arg1.getY ()- startY;
if(math.ABS(offsetx ) math.ABS (offsety ) ) )
if(offsetx-5 ) {
swipeLeft (;
}elseif(offsetx5) )。
swipeRight (;
}
} else {
if(offsety-5 ) {
swipeUp (;
}elseif(offsety5) ) )。
swipeDown (;
}
}
布雷克;
默认:
布雷克;
}
返回真;
}
);
}
@Override
protectedvoidonsizechanged (intw,int h,int oldw,int oldh ) {
super.onsizechanged(w,h,oldw,oldh );
intcardwidth=(math.min(w,h )- 10 )/4;
addcards (卡宽度,卡宽度);
开始game (;
}
隐私保护卡(Intcardwidth,Int卡高度)。
Card c;
for(inty=0; y 4; y ) {
for(intx=0; x 4; x ) {
c=newcard (获取上下文) );
c.setN
um(0);addView(c, cardWidth, cardHeight);
cardMap[x][y] = c;
}
}
}
private void startGame() {
for (int y = 0; y < 4; y++) {
for (int x = 0; x < 4; x++) {
cardMap[x][y].setNum(0);
}
}
addRandomNum();
addRandomNum();
}
private void addRandomNum() {
emptyPionts.clear();
for (int y = 0; y < 4; y++) {
for (int x = 0; x < 4; x++) {
if (cardMap[x][y].getNum() <= 0) {
emptyPionts.add(new Point(x, y));
}
}
}
Point p = emptyPionts
.remove((int) (Math.random() * emptyPionts.size()));
cardMap[p.x][p.y].setNum(Math.random() > 0.1 ? 2 : 4);
}
private void swipeLeft() {
boolean merg = false;
for (int y = 0; y < 4; y++) {
for (int x = 0; x < 4; x++) {
for (int x1 = x + 1; x1 < 4; x1++) {
if (cardMap[x1][y].getNum() > 0) {
if (cardMap[x][y].getNum() <= 0) {
cardMap[x][y].setNum(cardMap[x1][y].getNum());
cardMap[x1][y].setNum(0);
x--;
merg = true;
} else if (cardMap[x][y].equals(cardMap[x1][y])) {
cardMap[x][y].setNum(cardMap[x][y].getNum() * 2);
cardMap[x1][y].setNum(0);
cardMap[x][y].getNum());
merg = true;
}
break;
}
}
}
}
if (merg) {
addRandomNum();
checkComplete();
}
}
private void swipeRight() {
boolean merg = false;
for (int y = 0; y < 4; y++) {
for (int x = 3; x >= 0; x--) {
for (int x1 = x - 1; x1 >= 0; x1--) {
if (cardMap[x1][y].getNum() > 0) {
if (cardMap[x][y].getNum() <= 0) {
cardMap[x][y].setNum(cardMap[x1][y].getNum());
cardMap[x1][y].setNum(0);
x++;
merg = true;
} else if (cardMap[x][y].equals(cardMap[x1][y])) {
cardMap[x][y].setNum(cardMap[x][y].getNum() * 2);
cardMap[x1][y].setNum(0);
cardMap[x][y].getNum());
merg = true;
}
break;
}
}
}
}
if (merg) {
addRandomNum();
checkComplete();
}
}
private void swipeUp() {
boolean merg = false;
for (int x = 0; x < 4; x++) {
for (int y = 0; y < 4; y++) {
for (int y1 = y + 1; y1 < 4; y1++) {
if (cardMap[x][y1].getNum() > 0) {
if (cardMap[x][y].getNum() <= 0) {
cardMap[x][y].setNum(cardMap[x][y1].getNum());
cardMap[x][y1].setNum(0);
y--;
merg = true;
} else if (cardMap[x][y].equals(cardMap[x][y1])) {
cardMap[x][y].setNum(cardMap[x][y].getNum() * 2);
cardMap[x][y1].setNum(0);
cardMap[x][y].getNum());
merg = true;
}
break;
}
}
}
}
if (merg) {
addRandomNum();
checkComplete();
}
}
private void swipeDown() {
boolean merg = false;
for (int x = 0; x < 4; x++) {
for (int y = 3; y >= 0; y--) {
for (int y1 = y - 1; y1 >= 0; y1--) {
if (cardMap[x][y1].getNum() > 0) {
if (cardMap[x][y].getNum() <= 0) {
cardMap[x][y].setNum(cardMap[x][y1].getNum());
cardMap[x][y1].setNum(0);
y++;
merg = true;
} else if (cardMap[x][y].equals(cardMap[x][y1])) {
cardMap[x][y].setNum(cardMap[x][y].getNum() * 2);
cardMap[x][y1].setNum(0);
cardMap[x][y].getNum());
merg = true;
}
break;
}
}
}
}
if (merg) {
addRandomNum();
checkComplete();
}
}
public void checkComplete() {
boolean complete = true;
All: for (int y = 0; y < 4; y++) {
for (int x = 0; x < 4; x++) {
if (cardMap[x][y].getNum() == 0
|| (x > 0 && cardMap[x][y].equals(cardMap[x - 1][y]))
|| (x < 3 && cardMap[x][y].equals(cardMap[x + 1][y]))
|| (y > 0 && cardMap[x][y].equals(cardMap[x][y - 1]))
|| (y < 3 && cardMap[x][y].equals(cardMap[x][y + 1]))) {
complete = false;
break All;
}
}
}
if (complete) {
new AlertDialog.Builder(getContext())
.setTitle("游戏结束!")
.setMessage(
"得分:" + MainActivity.getMainActivity().getScore())
.setPositiveButton("重新挑战",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0,
int arg1) {
startGame();
}
}).show();
}
}
private Card[][] cardMap = new Card[4][4];
private List emptyPionts = new ArrayList();
}