安卓五子棋小游戏

本文介绍了一款安卓五子棋小游戏的实现过程,包括自定义View,重写onTouchEvent()来记录棋局,以及横向、纵向和斜向五连的检测方法。此外,还讨论了如何利用onSaveInstanceState()和onRestoreInstanceState()保存和恢复游戏状态,以防止因接听电话等中断导致的游戏进度丢失。
摘要由CSDN通过智能技术生成

一款五子棋小游戏,可以拿来联系一下自定义View             Demo源码下载:   源码   (studio上面构建的项目,导入时要配置一下gradle文件)

1.写一个类继承View

/**
 * Created by fanday on 2016/4/23.
 */
public class PieceView extends View {
    private int lineNum=10;//棋盘的行列数
    private float lineHeight;//每一行的行高
    private int width;//棋盘的边长(棋盘是正方形的)
    private Paint paint;

    public PieceView(Context context) {
        this(context,null);//一个参数的构造调用两个的,最终都走三个参数的构造
    }

    public PieceView(Context context, AttributeSet attrs) {
        this(context, attrs,0);
    }

    public PieceView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();//构造方法中需要初始化的变量
    }

2.在构造方法中调用初始化方法,初始化一些变量

   private Bitmap whitePiece;//白棋
    private Bitmap blackPiece;//黑棋
    private double intScale=0.75;//棋子显示到棋盘上面是以棋盘的网格大小为基准的,棋子的缩放比例
    private Paint piecePaint;//画棋子的画笔对象
    private void init() {
        piecePaint=new Paint(Paint.ANTI_ALIAS_FLAG);
        paint=new Paint();//画网格的画笔对象
        paint.setAntiAlias(true);
        paint.setColor(0xffff0000);
        paint.setStyle(Paint.Style.STROKE);//设置画笔只描边
        this.setBackgroundColor(0x44aaaaaa);
        whitePiece= BitmapFactory.decodeResource(getResources(), R.drawable.white);
        blackPiece=BitmapFactory.decodeResource(getResources(),R.drawable.black);
    }

3.在onMeasure()方法中对View的宽高测量模式进行判断

  @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int widthSize=MeasureSpec.getSize(widthMeasureSpec);//获取宽度的sixe
        int widthMode = MeasureSpec.getMode(widthMeasureSpec);//获取宽度的Mode
        int heightSize=MeasureSpec.getSize(heightMeasureSpec);
        int heightMode=MeasureSpec.getMode(heightMeasureSpec);
        if(widthMode==MeasureSpec.UNSPECIFIED){//如果宽度的测量模式不确定,就让宽度=高度
            widthSize=heightSize;
        }
        else if(heightMode==MeasureSpec.UNSPECIFIED){//若果高度的测量模式不确定的,就让宽度=宽度
            widthSize=widthSize;
        }
        setMeasuredDimension(widthSize,widthSize);//设置view的宽高
    }
    private boolean isWhiteWin;
    private 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值