游戏页面布局:

fc713013ac59371a2640074123ef08cd.png

该页面布局写法比较多这里只提供我们学过的最简单的实现方式。(作为代价就是写起来比较繁琐)

该页面位置app/src/main/res/layout/game1.xml 。

很长对吧?因为该页面包含了多个LinearLayout的嵌套

首先整体是个线性布局(纵向" orientation="vertical" ")

整体布局包含了5个LinearLayout布局(用于展示每行数字)和1个TextView

这5个LinearLayout固定高度为60dp(横向"orientation="horizontal" ")

每行的LinearLayout包含5个TextView :

android:layout_width="0dp"

android:layout_height="match_parent"

android:layout_weight="1"

android:gravity="center"

android:text="1"

android:textSize="20dp" />

我们看到每个的宽度都为0dp ," layout_weight "都为1。这样的布局是为了让4个数字平均分配父组件的这行空间

而且所得显示文字都是居中的"gravity="center" "

游戏主要逻辑源码:

Game1.java:

yes.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

sum = sum+1;

Intent intent = new Intent(Game1.this , Game2.class);

intent.putExtra("sum" , sum);

game1.setText("您选择了: 有 \n result:"+sum);

startActivity(intent);

finish();

}

});

no.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

sum = sum+0;

Intent intent = new Intent(Game1.this , Game2.class);

intent.putExtra("sum" , sum+0);

game1.setText("您选择了: 没有 \n result:"+sum);

startActivity(intent);

finish();

}

});

两个按钮的监听事件

监听主要做两个工作:

1).计算当前的值,并传递给下个页面

2).跳转到下个页面

这些之前都讲过。

Game2.java

Intent intent = getIntent();

sum = intent.getIntExtra("sum" , 0);

Log.i("TAG" , sum+"");

yes.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

sum = sum+2;

Intent intent = new Intent(Game2.this , Game3.class);

intent.putExtra("sum" , sum);

game1.setText("您选择了: 有 \n result:"+sum);

startActivity(intent);

finish();

}

});

no.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

sum = sum+0;

Intent intent = new Intent(Game2.this , Game3.class);

intent.putExtra("sum" , sum+0);

game1.setText("您选择了: 没有 \n result:"+sum);

startActivity(intent);

finish();

}

});

Game3.java与Game4.java都和Game2.java类似。因为都是中间环节所以操作也都一样。

相比Game1.java只多做了一件事。

获取传递来的信息:

Intent intent = getIntent();

sum = intent.getIntExtra("sum" , 0);

Game5.java主要逻辑

Intent intent = getIntent();

sum = intent.getIntExtra("sum" , 0);

Log.i("TAG" , sum+"");

yes.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

sum = sum+16;

new AlertDialog.Builder(Game5.this)

.setTitle("结果")

.setMessage("你心中想的数字是:"+sum)

.setPositiveButton("好神奇!", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialogInterface, int i) {

dialogInterface.dismiss();

Intent firstpage = new Intent(Game5.this , FirstPage.class);

startActivity(firstpage);

finish();

}

})

.setNegativeButton("我不服,再来!", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialogInterface, int i) {

Intent gogame1 = new Intent(Game5.this , Game1.class);

startActivity(gogame1);

finish();

}

}).show();

}

});

no.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

sum = sum+0;

new AlertDialog.Builder(Game5.this)

.setTitle("结果")

.setMessage("你心中想的数字是:"+sum)

.setPositiveButton("好神奇!", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialogInterface, int i) {

dialogInterface.dismiss();

Intent firstpage = new Intent(Game5.this , FirstPage.class);

startActivity(firstpage);

finish();

}

})

.setNegativeButton("我不服,再来!", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialogInterface, int i) {

Intent gogame1 = new Intent(Game5.this , Game1.class);

startActivity(gogame1);

finish();

}

}).show();

}

});

经过最后一轮的计算,通过AlertDialog显示出来结果.

1cbd1a5561924a508c780157b99a05b3.png

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐