[安卓]安卓课程设计之俄罗斯方块

这篇博客分享了安卓课程设计中的一个项目——俄罗斯方块的实现。博主提供了Java源代码和布局文件,并展示了测试结果。
摘要由CSDN通过智能技术生成

程序很简单就只放代码了,自己完善下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(){
        //初始化画笔
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值