首页 > 编程知识 正文

自己写的android小游戏,2048小游戏源码C语言

时间:2023-05-06 02:17:20 阅读:54325 作者:2421

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();

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。