Game2048

本人Android小白,这个程序也是比较简陋,也没有经过完整测试,不喜勿喷。发到博客纯属为了保存资料。

接下来是布局代码xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="80dp"
android:orientation="horizontal">
<TextView
android:id="@+id/one"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_margin="5dp"
android:layout_marginLeft="10dp"
android:background="#FFA54F"
android:textSize="30sp"
android:text=""
android:gravity="center"/>
<TextView
android:id="@+id/two"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_margin="5dp"
android:background="#FFA54F"
android:textSize="30sp"
android:text=""
android:gravity="center"/>
<TextView
android:id="@+id/three"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_margin="5dp"
android:background="#FFA54F"
android:textSize="30sp"
android:text=""
android:gravity="center"/>
<TextView
android:id="@+id/four"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_margin="5dp"
android:background="#FFA54F"
android:textSize="30sp"
android:text=""
android:gravity="center"/>
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="80dp"
android:orientation="horizontal">
<TextView
android:id="@+id/five"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_margin="5dp"
android:background="#FFA54F"
android:textSize="30sp"
android:text=""
android:gravity="center"
/>
<TextView
android:id="@+id/six"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_margin="5dp"
android:background="#FFA54F"
android:textSize="30sp"
android:text=""
android:gravity="center"/>
<TextView
android:id="@+id/seven"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_margin="5dp"
android:background="#FFA54F"
android:textSize="30sp"
android:text=""
android:gravity="center"/>
<TextView
android:id="@+id/eight"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_margin="5dp"
android:background="#FFA54F"
android:textSize="30sp"
android:text=""
android:gravity="center"/>

</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="80dp"
android:orientation="horizontal">
<TextView
android:id="@+id/nine"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_margin="5dp"
android:layout_marginLeft="10dp"
android:background="#FFA54F"
android:textSize="30sp"
android:text=""
android:gravity="center"/>
<TextView
android:id="@+id/ten"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_margin="5dp"
android:background="#FFA54F"
android:textSize="30sp"
android:text=""
android:gravity="center"/>
<TextView
android:id="@+id/eleven"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_margin="5dp"
android:background="#FFA54F"
android:textSize="30sp"
android:text=""
android:gravity="center"/>
<TextView
android:id="@+id/twelve"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_margin="5dp"
android:background="#FFA54F"
android:textSize="30sp"
android:text=""
android:gravity="center"/>

</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="80dp"
android:orientation="horizontal">
<TextView
android:id="@+id/thirteen"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_margin="5dp"
android:layout_marginLeft="10dp"
android:background="#FFA54F"
android:textSize="30sp"
android:text=""
android:gravity="center"/>
<TextView
android:id="@+id/fourteen"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_margin="5dp"
android:background="#FFA54F"
android:textSize="30sp"
android:text=""
android:gravity="center"/>
<TextView
android:id="@+id/fifteen"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_margin="5dp"
android:background="#FFA54F"
android:textSize="30sp"
android:text=""
android:gravity="center"/>
<TextView
android:id="@+id/sixteen"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_margin="5dp"
android:background="#FFA54F"
android:textSize="30sp"
android:text=""
android:gravity="center"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="100dp"
android:orientation="vertical">
<Button
android:id="@+id/top"
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_marginLeft="150dp"
android:textSize="20sp"
android:text="↑"
android:gravity="center"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="100dp"
android:orientation="horizontal">
<Button
android:id="@+id/left"
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_marginLeft="60dp"
android:textSize="20sp"
android:text="←"
android:gravity="center"
/>
<Button
android:id="@+id/right"
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_marginLeft="80dp"
android:textSize="20sp"
android:text="→"
android:gravity="center"
/>
</LinearLayout>

</LinearLayout>
<Button
android:id="@+id/bottom"
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_marginLeft="150dp"
android:textSize="20sp"
android:text="↓"
android:gravity="center"
/>

<Button
android:id="@+id/start"
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_marginLeft="150dp"
android:textSize="20sp"
android:text="start"
android:gravity="center"
/>
</LinearLayout>

 接下来是MainActivity

package com.example.win10.game2048;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.util.Random;

public class MainActivity extends AppCompatActivity {

private Random random=new Random();
private int x;
private int y;
private String str="";
private Button start;
private Button top;
private Button left;
private Button right;
private Button bottom;
private TextView [][] textViews=new TextView[4][4];
private int [][]result=new int[4][4];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
inisit();
/*if("".equals(str))
{
textViews[1][0].setText("1");
}*/
top.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MoveTop();
}
});
left.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MoveLeft();
}
});
right.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MoveRight();
}
});
bottom.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MoveBottom();
}
});
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for (int i=0;i<4;i++)
for (int j=0;j<4;j++)
result[i][j]=0;
setXY();
}
});
}
public void inisit()
{
start=(Button) findViewById(R.id.start);
top=(Button) findViewById(R.id.top);
left=(Button) findViewById(R.id.left);
right=(Button) findViewById(R.id.right);
bottom=(Button) findViewById(R.id.bottom);
textViews[0][0]=(TextView) findViewById(R.id.one);
//textViews[1].setText("1");
textViews[0][1]=(TextView) findViewById(R.id.two);
//textViews[2].setText("2");
textViews[0][2]=(TextView) findViewById(R.id.three);
//textViews[3].setText("3");
textViews[0][3]=(TextView) findViewById(R.id.four);
//textViews[4].setText("4");
textViews[1][0]=(TextView) findViewById(R.id.five);
//textViews[5].setText("5");
textViews[1][1]=(TextView) findViewById(R.id.six);
//textViews[6].setText("6");
textViews[1][2]=(TextView) findViewById(R.id.seven);
//textViews[7].setText("7");
textViews[1][3]=(TextView) findViewById(R.id.eight);
//textViews[8].setText("8");
textViews[2][0]=(TextView) findViewById(R.id.nine);
//textViews[9].setText("9");
textViews[2][1]=(TextView) findViewById(R.id.ten);
//textViews[10].setText("10");
textViews[2][2]=(TextView) findViewById(R.id.eleven);
//textViews[11].setText("11");
textViews[2][3]=(TextView) findViewById(R.id.twelve);
// textViews[12].setText("12");
textViews[3][0]=(TextView) findViewById(R.id.thirteen);
//textViews[13].setText("13");
textViews[3][1]=(TextView) findViewById(R.id.fourteen);
//textViews[14].setText("14");
textViews[3][2]=(TextView) findViewById(R.id.fifteen);
// textViews[15].setText("15");
textViews[3][3]=(TextView) findViewById(R.id.sixteen);
//textViews[16].setText("16");
for (int i=0;i<4;i++)
for (int j=0;j<4;j++)
result[i][j]=0;
}
public void MoveBottom(){
getXY();
for (int j=0;j<4;j++)
{
for(int i=3;i>=0;i--)
{
int t=i;
if(result[i][j]==0)
{
while (t>=1&&result[t][j]==0)
{
t--;
}
result[i][j]=result[t][j];
result[t][j]=0;
}

}

}
for (int j=0;j<4;j++)
{
for(int i=3;i>=1;i--)
{
if(result[i][j]==result[i-1][j]&&result[i][j]!=0)
{
result[i][j]=2*result[i][j];
result[i-1][j]=0;
for(int t=i-1;t>0;t--)
{
result[t][j]= result[t-1][j];
result[t-1][j]=0;
}
}
}
}
setXY();
createNumber();
}
public void MoveLeft(){
getXY();
for (int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
int t=j;
if(result[i][j]==0)
{
while (t<3&&result[i][t]==0)
{
t++;
}
result[i][j]=result[i][t];
result[i][t]=0;
}
}
}
for (int i=0;i<4;i++)
{
for(int j=0;j<3;j++)
{
if(result[i][j]==result[i][j+1]&&result[i][j]!=0)
{
result[i][j]=2*result[i][j];
result[i][j+1]=0;
for(int t=j+1;t<3;t++)
{
result[i][t]= result[i][t+1];
result[i][t+1]=0;
}
}
}
}
setXY();
createNumber();
}
public void MoveRight(){
getXY();
for (int i=0;i<4;i++)
{
for(int j=3;j>=0;j--)
{
int t=j;
if(result[i][j]==0)
{
while (t>=1&&result[i][t]==0)
{
t--;
}
result[i][j]=result[i][t];
result[i][t]=0;
}

}

}
for (int i=0;i<4;i++)
{
for(int j=3;j>=1;j--)
{
if(result[i][j]==result[i][j-1]&&result[i][j]!=0)
{
result[i][j]=2*result[i][j];
result[i][j-1]=0;
for(int t=j-1;t>0;t--)
{
result[i][t]= result[i][t-1];
result[i][t]=0;
}
}
}
}
setXY();
createNumber();
}
public void MoveTop(){
getXY();
for (int j=0;j<4;j++)
{
for(int i=0;i<4;i++)
{
int t=i;
if(result[i][j]==0)
{
while (t<3&&result[t][j]==0)
{
t++;
}
result[i][j]=result[t][j];
result[t][j]=0;
}

}

}
for (int j=0;j<4;j++)
{
for(int i=0;i<3;i++)
{
if(result[i][j]==result[i+1][j]&&result[i][j]!=0)
{
result[i][j]=2*result[i][j];
result[i+1][j]=0;
for(int t=i+1;t<3;t++)
{
result[t][j]= result[t+1][j];
result[t+1][j]=0;
}
}
}
}
setXY();
createNumber();
}

public void createNumber()
{
Boolean isfill=true;
for (int i=0;i<4;i++)
for (int j=0;j<4;j++)
if(result[i][j]==0)
{
isfill=false;
break;
}
if(isfill==true)
return;
x=random.nextInt(4);
y=random.nextInt(4);
while(result[x][y]!=0)
{
x=random.nextInt(4);
y=random.nextInt(4);
}
result[x][y]=2;
setXY();
}
public void getXY()
{
for (int i=0;i<4;i++)
for (int j=0;j<4;j++)
{
if(textViews[i][j].getText().toString().equals(""))
result[i][j]=0;
else
result[i][j] =Integer.valueOf(textViews[i][j].getText().toString()).intValue();
}
}
public void setXY()
{
for (int i=0;i<4;i++)
for (int j=0;j<4;j++)
{

if(result[i][j]!=0)
textViews[i][j].setText(String.valueOf(result[i][j]));
else
textViews[i][j].setText("");
}
}

}
原文地址:https://www.cnblogs.com/CY-947205926/p/7748170.html