Android下的五子棋开发详细步骤(附代码)

这篇博客详细介绍了如何在Android平台上开发五子棋游戏,包括MainActivity、ChessFormUtil和MMGobangActivity的主要代码,以及布局文件gobang_mm.xml和gobang.xml的内容。通过这些代码,开发者可以实现五子棋的人机对弈和界面交互。请注意在AndroidManifest.xml中注册Activity。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天我们来看一下Android下游戏的开发。首先来看看整体的结构:

各个类的详细代码如下,附有详细注释:

MainActivity:


package com.example.gobang;


import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;




//import com.example.gobang.bt.BtGoBangActivity;
import com.example.gobang.mm.MMGobangActivity;
import com.example.gobang.R;


public class MainActivity extends Activity implements OnClickListener {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.gobang);
        Button b_mm = (Button) findViewById(R.id.b_mm);
        Button b_bt = (Button) findViewById(R.id.b_bt);
        b_mm.setOnClickListener(this);
        b_bt.setOnClickListener(this);
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.b_bt:
                //startActivity(new Intent(MainActivity.this, BtGoBangActivity.class));
            System.out.println("蓝牙版还未上线");
                break;
            case R.id.b_mm:
                startActivity(new Intent(MainActivity.this, MMGobangActivity.class));
                break;
        }
    }


}


ChessFormUtil:

package com.example.gobang.mm;


public class ChessFormUtil {


    // 定义各种棋形的分数
    /** 待分析的棋型列表的长度 */
    public static final int ANALYZE_LEN = 8;


    public static final int HALF_LEN = ANALYZE_LEN >> 1;
    /**
     * 五连:你只需下一步就可以胜利了
     */
    public static final int WU_LIAN = 85;
    /**
     * 活四:两边都可成五的点
     */
    public static final int HUO_SI = 40;
    /**
     * 活三:在走一步可以成活四的点
     */
    public static final int HUO_SAN = 15;
    /**
     * 冲四:只有一端可成五的点
     */
    public static final int CHONG_SI = 6;
    /**
     * 活二:在走一步可成活三的点
     */
    public static final int HUO_ER = 4;


    /**
     * 眠三:在走一步可成冲四的点
     */
    public static final int MIAN_SAN = 2;
    
    /**
     * 眠二:在走一步可成眠三的点
     */
    public static final int MIAN_ER = 1;


    // -------------------------------------------------------------
    /**
     * 分析存在五连
     * 
     * @param tmpChess
     */
    public boolean analyzeWulian(int[] tmpChess, int isWho) {
        int count = 0;
        for (int i = 0; i < HALF_LEN; i++) {
            if (tmpChess[HALF_LEN - (i + 1)] == isWho) {
                count++;
            } else {
                break;
            }
        }
        for (int i = 0; i < HALF_LEN; i++) {
            if (tmpChess[HALF_LEN + i] == isWho) {
                count++;
            } else {
                break;
            }
        }
        if (count == 4) {
            return true;
        }
        return false;
    }


    /**
     * 
     * 分析活四 return 是否存在活四
     * 
     * @param tmpChess
     */
    public boolean analyzeHuosi(int[] tmpChess, int isWho) {
        int count = 0;
        int i = 0;
        boolean isSpace = false;
        for (i = 0; i < HALF_LEN; i++) {
            if (tmpChess[HALF_LEN - (i + 1)] == isWho) {
                count++;
            } else {
                break;
            }
        }
        if (tmpChess[HALF_LEN - (i + 1)] == 0) {
            isSpace = true;
        }
        for (i = 0; i < HALF_LEN; i++) {
            if (tmpChess[HALF_LEN + i] == isWho) {
                count++;
            } else {
                break;
            }
        }
        if (tmpChess[HALF_LEN + i] == 0) {
            isSpace = true;
        } else {
            isSpace = false;
        }


        if (count == 3 && isSpace) {
            return true;
        }
        return false;
    }


    /**
     * 
     * 分析活三 return 是否存在活三
     * 
     * @param tmpChess
     */
    public boolean analyzeHuosan(int[] tmpChess, int isWho) {
        int count = 0;
        int i = 0;
        boolean isSpace = false;
        for (i = 0; i < HALF_LEN; i++) {
            if (tmpChess[HALF_LEN - (i + 1)] == isWho) {
                count++;
            } else {
                break;
            }
        }
        if (tmpChess[HALF_LEN - (i + 1)] == 0) {
            isSpace = true;
        }
        for (i = 0; i < HALF_LEN; i++) {
            if (tmpChess[HALF_LEN + i] == isWho) {
                count++;
            } else {
                break;
            }
        }
        if (tmpChess[HALF_LEN + i] == 0) {
            isSpace = true;
        } else {
            isSpace = false;
        }


        if (count == 2 && isSpace) {
            return true;
        }
        return false;
    }


    /**
     * 
     * 分析冲四 return 是否存在冲四
     * 
     * @param tmpChess
     */
    public boolean analyzeChongsi(int[] tmpChess, int isWho) {
        int count = 0;
        int i = 0;
        boolean isSpace = false;
        for (i = 0; i < HALF_LEN; i++) {
            if (tmpChess[HALF_LEN - (i + 1)] == isWho) {
                count++;
            } else {
                break;
            }
        }
        if (tmpChess[HALF_LEN - (i + 1)] == 0) {
            isSpace = true;
        }
        for (i = 0; i < HALF_LEN; i++) {
            if (tmpChess[HALF_LEN + i] == isWho) {
                count++;
            } else {
                break;
            }
        }
        if (tmpChess[HALF_LEN + i] == 0) {
            isSpace = true;
        }


        if (count == 3 && isSpace) {
            return true;
        }
        return false;
    }


    /**
     * 
     * 分析活二 return 是否存在活二
     * 
     * @param tmpChess
     */
    public boolean analyzeHuoEr(int[] tmpChess, int isWho) {
        
        int count = 0;
        int i = 0;
        boolean isSpace = false;
        for (i = 0; i < HALF_LEN; i++) {
            if (tmpChess[HALF_LEN - (i + 1)] == isWho) {
                count++;
            } else {
                break;
            }
        }
        if (tmpChess[HALF_LEN - (i + 1)] == 0) {
            isSpace = true;
        }
        for (i = 0; i < HALF_LEN; i++) {
            if (tmpChess[HALF_LEN + i] == isWho) {
                count++;
            } else {
                break;
            }
        }
        if (tmpChess[HALF_LEN + i] == 0) {
            isSpace = true;
        } else {
            isSpace = false;
        }


        if (count == 1 && isSpace) {
            return true;
        }
        return false;
    }


    /**
     * 
     * 分析眠三 return 是否存在眠三
     * 
     * @param tmpChess
     */
    public boolean analyzeMianSan(int[] tmpChess, int isWho) {
        int count = 0;
        int i = 0;
        boolean isSpace = false;
        for (i = 0; i < HALF_LEN; i++) {
            if (tmpChess[HALF_LEN - (i + 1)] == isWho) {
                count++;
            } else {
                break;
            }
        }
        if (tmpChess[HALF_LEN - (i + 1)] == 0) {
            isSpace = true;
        }
        for (i = 0; i < HALF_LEN; i++) {
            if (tmpChess[HALF_LEN + i] == isWho) {
                count++;
            } else {
                break;
            }
        }
        if (tmpChess[HALF_LEN + i] == 0) {
            isSpace = true;
        }


        if (count == 2 && isSpace) {

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值