程序很简单就只放代码了,自己完善下color和Drawable即可使用
Java文件:
package com.ytu.jkxy.jk171.sjp.russiablock;
import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Point;
import android.os.Handler;
//import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.FrameLayout;
import android.widget.Toast;
import java.util.Random;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
//声明一个游戏区域控件
View view;
//游戏区域长宽
int xWidth,xHight;
//地图画笔
Paint mapPaint;
//初始化辅助线画笔
Paint linepaint;
//方块画笔
Paint boxPaint;
//状态画笔
Paint startPaint;
//地图
boolean [][]maps;
//方块
Point[] boxs;
//方块的种类
final int TYPE = 7;
//方块类型
int boxType;
//方块大小
int boxSize;
//自动下落线程
public Thread downThread;
//
public Handler handler=new Handler(){
public void handleMessage(android.os.Message msg){
//刷新重绘view
view.invalidate();
};
};
//暂停状态
public boolean isPause;
//游戏结束状态
public boolean isOver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//去掉标题栏
getSupportActionBar().hide();
setContentView(R.layout.activity_main);
intData();
newBoxs();
initView();
intLister();
}
//初始化数据
public void intData(){
//获得屏幕宽度
int width=getScreeWidth(this);
//设置游戏区域宽度=屏幕宽度*2/3
xWidth=width * 2/3;
//游戏区域的高度=宽度 * 2
xHight=2 * xWidth;
//初始化地图
maps=new boolean[10][20];
//初始化方块大小:游戏宽度/10
boxSize=xWidth/maps.length;
}
/*新的方块*/
public void newBoxs(){
//随机数生成一个新的方块
Random random=new Random();
boxType=random.nextInt(7);
switch (boxType){
//田字形
//55
//55
case 0:
boxs=new Point[]{new Point(4,0),new Point(5,0),new Point(4,1),new Point(5,1)};
break;
//L 例:
//5
//5
//55
case 1:
boxs=new Point[]{new Point(4,1),new Point(5,0),new Point(3,1),new Point(5,1)};
break;
//反L
case 2:
boxs=new Point[]{new Point(4,1),new Point(3,0),new Point(3,1),new Point(5,1)};
break;
//横条
//例:5555
case 3:
boxs=new Point[]{new Point(3,0),new Point(4,0),new Point(5,0),new Point(6,0)};
break;
//凸字形 例:
/*5
555*/
case 4:
boxs=new Point[]{new Point(4,1),new Point(5,0),new Point(5,1),new Point(6,1)};
break;
case 5:
boxs=new Point[]{new Point(4,0),new Point(5,0),new Point(5,1),new Point(5,2)};
break;
case 6:
boxs=new Point[]{new Point(5,0),new Point(6,0),new Point(4,1),new Point(5,1)};
break;
}
}
//初始化视图
@SuppressLint("ResourceAsColor")
public void initView(){
//初始化画笔