小游戏源码及详细解说Word文档格式.docx

上传人:b****5 文档编号:8434551 上传时间:2023-05-11 格式:DOCX 页数:15 大小:113.48KB
下载 相关 举报
小游戏源码及详细解说Word文档格式.docx_第1页
第1页 / 共15页
小游戏源码及详细解说Word文档格式.docx_第2页
第2页 / 共15页
小游戏源码及详细解说Word文档格式.docx_第3页
第3页 / 共15页
小游戏源码及详细解说Word文档格式.docx_第4页
第4页 / 共15页
小游戏源码及详细解说Word文档格式.docx_第5页
第5页 / 共15页
小游戏源码及详细解说Word文档格式.docx_第6页
第6页 / 共15页
小游戏源码及详细解说Word文档格式.docx_第7页
第7页 / 共15页
小游戏源码及详细解说Word文档格式.docx_第8页
第8页 / 共15页
小游戏源码及详细解说Word文档格式.docx_第9页
第9页 / 共15页
小游戏源码及详细解说Word文档格式.docx_第10页
第10页 / 共15页
小游戏源码及详细解说Word文档格式.docx_第11页
第11页 / 共15页
小游戏源码及详细解说Word文档格式.docx_第12页
第12页 / 共15页
小游戏源码及详细解说Word文档格式.docx_第13页
第13页 / 共15页
小游戏源码及详细解说Word文档格式.docx_第14页
第14页 / 共15页
小游戏源码及详细解说Word文档格式.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

小游戏源码及详细解说Word文档格式.docx

《小游戏源码及详细解说Word文档格式.docx》由会员分享,可在线阅读,更多相关《小游戏源码及详细解说Word文档格式.docx(15页珍藏版)》请在冰点文库上搜索。

小游戏源码及详细解说Word文档格式.docx

>

/com.wuyudong.game2048.GameView>

<

4、游戏2048在Android平台的触控交互设计

添加触控交互相关代码

privatevoidinitGameView(){

setOnTouchListener(newOnTouchListener(){

//记录起始位置和偏移坐标

privatefloatstartX,startY,offsetX,offsetY;

@Override

publicbooleanonTouch(Viewv,MotionEventevent){

switch(event.getAction()){

caseMotionEvent.ACTION_DOWN:

//监听手指按下的初始位置坐标

startX=event.getX();

startY=event.getY();

break;

caseMotionEvent.ACTION_UP:

//监听手指离开时的位置坐标

offsetX=event.getX()-startX;

offsetY=event.getY()-startY;

if(Math.abs(offsetX)>

Math.abs(offsetY)){

if(offsetX<

-5){

System.out.println("

left"

);

}elseif(offsetX>

5){

right"

}

}else{

if(offsetY<

up"

}elseif(offsetY>

down"

default:

returntrue;

});

5、实现2048游戏的卡片类

编写卡片类Card.java

packagecom.wuyudong.game2048;

importandroid.content.Context;

importandroid.widget.FrameLayout;

importandroid.widget.TextView;

publicclassCardextendsFrameLayout{

publicCard(Contextcontext){

super(context);

lable=newTextView(getContext());

lable.setTextSize(32);

LayoutParamslp=newLayoutParams(-1,-1);

addView(lable,lp);

setNum(0);

privateintnum=0;

publicintgetNum(){

returnnum;

publicvoidsetNum(intnum){

this.num=num;

lable.setText(num+"

"

publicbooleanequals(Cardo){

returngetNum()==o.getNum();

privateTextViewlable;

}

6、添加2048游戏卡片

先添加相关代码看看效果

protectedvoidonSizeChanged(intw,inth,intoldw,intoldh){

super.onSizeChanged(w,h,oldw,oldh);

intcardWidth=(Math.min(w,h)-10)/4;

addCards(cardWidth,cardWidth);

privatevoidaddCards(intcardWith,intcardHeight){

Cardc;

for(inty=0;

y<

4;

y++){

for(intx=0;

x<

x++){

c=newCard(getContext());

c.setNum

(2);

addView(c,cardWith,cardHeight);

运行后的效果

出现问题,所有的2都出现在同一行中,解决办法:

在initGameView()中添加代码,指定为四列:

setColumnCount(4);

lable.setGravity(Gravity.CENTER);

接着添加相关的背景颜色以及卡片数字的背景颜色,还有卡片间距

setBackgroundColor(0xffbbada0);

//设置整体背景

lable.setBackgroundColor(0x33ffffff);

lp.setMargins(10,10,0,0);

运行后界面如下:

7、在2048游戏中添加随机数

startGame();

privatevoidstartGame(){

cardsMap[x][y].setNum(0);

addRandomNum();

privatevoidaddRandomNum(){

emptyPoints.clear();

//清空

if(cardsMap[x][y].getNum()<

=0){

emptyPoints.add(newPoint(x,y));

Pointp=emptyPoints.remove((int)(Math.random()*emptyPoints.size()));

cardsMap[p.x][p.y].setNum(Math.random()>

0.1?

2:

4);

8、实现2048游戏逻辑

privatevoidswipeLeft(){//往左滑动手指

for(intx1=x+1;

x1<

x1++){

if(cardsMap[x1][y].getNum()>

0){

cardsMap[x][y].setNum(cardsMap[x1][y].getNum());

cardsMap[x1][y].setNum(0);

x--;

}elseif(cardsMap[x][y].equals(cardsMap[x1][y])){

cardsMap[x][y].setNum(cardsMap[x][y].getNum()*2);

privatevoidswipeRight(){

for(intx=3;

x>

=0;

x--){

for(intx1=x-1;

x1>

x1--){

x++;

 

privatevoidswipeUp(){

for(inty1=y+1;

y1<

y1++){

if(cardsMap[x][y1].getNum()>

cardsMap[x][y].setNum(cardsMap[x][y1].getNum());

cardsMap[x][y1].setNum(0);

y--;

}elseif(cardsMap[x][y].equals(cardsMap[x][y1])){

privatevoidswipeDown(){

for(inty=3;

y>

y--){

for(inty1=y-1;

y1>

=0;

y1--){

y++;

privateCard[][]cardsMap=newCard[4][4];

privateList<

Point>

emptyPoints=newArrayList<

();

9、游戏2048计分

MainActivity.java中添加相关代码:

importandroid.os.Bundle;

importandroid.app.Activity;

importandroid.view.Menu;

publicclassMainActivityextendsActivity{

publicMainActivity(){

mainActivity=this;

protectedvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

tvScore=(TextView)findViewById(R.id.tvScore);

publicbooleanonCreateOptionsMenu(Menumenu){

//Inflatethemenu;

thisaddsitemstotheactionbarifitispresent.

getMenuInflater().inflate(R.menu.main,menu);

publicvoidclearScore(){

score=0;

showScore();

publicvoidshowScore(){

tvScore.setText(score+"

publicvoidaddScore(ints){

score+=s;

privateintscore=0;

privateTextViewtvScore;

privatestaticMainActivitymainActivity=null;

publicstaticMainActivitygetMainActivity(){

returnmainActivity;

10、检查2048游戏结束

privatevoidcheckComplete(){

booleancomplete=true;

ALL:

if(cardsMap[x][y].getNum()==0

||(x>

0&

&

cardsMap[x][y].equals(cardsMap[x-1][y]))

||(x<

3&

cardsMap[x][y].equals(cardsMap[x+1][y]))

||(y>

cardsMap[x][y].equals(cardsMap[x][y-1]))

||(y<

cardsMap[x][y].equals(cardsMap[x][y+1]))){

complete=false;

breakALL;

if(complete){

newAlertDialog.Builder(getContext())

.setTitle("

Oh"

.setMessage("

GameOver!

.setPositiveButton("

restart"

newDialogInterface.OnClickListener(){

publicvoidonClick(DialogInterfacedialog,

intwhich){

}).show();

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2