基于Android五子棋.docx
- 文档编号:5997009
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:36
- 大小:86.36KB
基于Android五子棋.docx
《基于Android五子棋.docx》由会员分享,可在线阅读,更多相关《基于Android五子棋.docx(36页珍藏版)》请在冰豆网上搜索。
基于Android五子棋
安卓五子棋游戏开发
今天我们来看一下Android下游戏的开发。
首先来看看整体的结构:
各个类的详细代码如下,附有详细注释:
MainActivity:
packagecom.example.gobang;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
//importcom.example.gobang.bt.BtGoBangActivity;
importcom.example.gobang.mm.MMGobangActivity;
importcom.example.gobang.R;
publicclassMainActivityextendsActivityimplementsOnClickListener{
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.gobang);
Buttonb_mm=(Button)findViewById(R.id.b_mm);
Buttonb_bt=(Button)findViewById(R.id.b_bt);
b_mm.setOnClickListener(this);
b_bt.setOnClickListener(this);
}
@Override
publicvoidonClick(Viewv){
switch(v.getId()){
caseR.id.b_bt:
//startActivity(newIntent(MainActivity.this,BtGoBangActivity.class));
System.out.println("蓝牙版还未上线");
break;
caseR.id.b_mm:
startActivity(newIntent(MainActivity.this,MMGobangActivity.class));
break;
}
}
ChessFormUtil:
packagecom.example.gobang.mm;
publicclassChessFormUtil{
//定义各种棋形的分数
/**待分析的棋型列表的长度*/
publicstaticfinalintANALYZE_LEN=8;
publicstaticfinalintHALF_LEN=ANALYZE_LEN>>1;
/**
*五连:
你只需下一步就可以胜利了
*/
publicstaticfinalintWU_LIAN=85;
/**
*活四:
两边都可成五的点
*/
publicstaticfinalintHUO_SI=40;
/**
*活三:
在走一步可以成活四的点
*/
publicstaticfinalintHUO_SAN=15;
/**
*冲四:
只有一端可成五的点
*/
publicstaticfinalintCHONG_SI=6;
/**
*活二:
在走一步可成活三的点
*/
publicstaticfinalintHUO_ER=4;
/**
*眠三:
在走一步可成冲四的点
*/
publicstaticfinalintMIAN_SAN=2;
/**
*眠二:
在走一步可成眠三的点
*/
publicstaticfinalintMIAN_ER=1;
//-------------------------------------------------------------
/**
*分析存在五连
*
*@paramtmpChess
*/
publicbooleananalyzeWulian(int[]tmpChess,intisWho){
intcount=0;
for(inti=0;i if(tmpChess[HALF_LEN-(i+1)]==isWho){ count++; }else{ break; } } for(inti=0;i if(tmpChess[HALF_LEN+i]==isWho){ count++; }else{ break; } } if(count==4){ returntrue; } returnfalse; } /** * *分析活四return是否存在活四 * *@paramtmpChess */ publicbooleananalyzeHuosi(int[]tmpChess,intisWho){ intcount=0; inti=0; booleanisSpace=false; for(i=0;i if(tmpChess[HALF_LEN-(i+1)]==isWho){ count++; }else{ break; } } if(tmpChess[HALF_LEN-(i+1)]==0){ isSpace=true; } for(i=0;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){ returntrue; } returnfalse; } /** * *分析活三return是否存在活三 * *@paramtmpChess */ publicbooleananalyzeHuosan(int[]tmpChess,intisWho){ intcount=0; inti=0; booleanisSpace=false; for(i=0;i if(tmpChess[HALF_LEN-(i+1)]==isWho){ count++; }else{ break; } } if(tmpChess[HALF_LEN-(i+1)]==0){ isSpace=true; } for(i=0;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){ returntrue; } returnfalse; } /** * *分析冲四return是否存在冲四 * *@paramtmpChess */ publicbooleananalyzeChongsi(int[]tmpChess,intisWho){ intcount=0; inti=0; booleanisSpace=false; for(i=0;i if(tmpChess[HALF_LEN-(i+1)]==isWho){ count++; }else{ break; } } if(tmpChess[HALF_LEN-(i+1)]==0){ isSpace=true; } for(i=0;i if(tmpChess[HALF_LEN+i]==isWho){ count++; }else{ break; } } if(tmpChess[HALF_LEN+i]==0){ isSpace=true; } if(count==3&&isSpace){ returntrue; } returnfalse; } /** * *分析活二return是否存在活二 * *@paramtmpChess */ publicbooleananalyzeHuoEr(int[]tmpChess,intisWho){ intcount=0; inti=0; booleanisSpace=false; for(i=0;i if(tmpChess[HALF_LEN-(i+1)]==isWho){ count++; }else{ break; } } if(tmpChess[HALF_LEN-(i+1)]==0){ isSpace=true; } for(i=0;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){ returntrue; } returnfalse; } /** * *分析眠三return是否存在眠三 * *@paramtmpChess */ publicbooleananalyzeMianSan(int[]tmpChess,intisWho){ intcount=0; inti=0; booleanisSpace=false; for(i=0;i if(tmpChess[HALF_LEN-(i+1)]==isWho){ count++; }else{ break; } } if(tmpChess[HALF_LEN-(i+1)]==0){ isSpace=true; } for(i=0;i if(tmpChess[HALF_LEN+i]==isWho){ count++; }else{ break; } } if(tmpChess[HALF_LEN+i]==0){ isSpace=true; } if(count==2&&isSpace){ returntrue; } returnfalse; } /** * *分析眠二return是否存在眠二 * *@paramtmpChess */ publicbooleananalyzeMianEr(int[]tmpChess,intisWho){ intcount=0; inti=0; booleanisSpace=false; for(i=0;i if(tmpChess[HALF_LEN-(i+1)]==isWho){ count++; }else{ break; } } if(tmpChess[HALF_LEN-(i+1)]==0){ isSpace=true; } for(i=0;i if(tmpChess[HALF_LEN+i]==isWho){ count++; }else{ break; } } if(tmpChess[HALF_LEN+i]==0){ isSpace=true; } if(count==1&&isSpace){ returntrue; } returnfalse; } } GobangView: packagecom.example.gobang.mm; importandroid.content.Context; importandroid.content.res.Resources; importandroid.graphics.Bitmap; importandroid.graphics.BitmapFactory; importandroid.graphics.Canvas; importandroid.graphics.Color; importandroid.graphics.Paint; importandroid.graphics.Paint.Style; importandroid.graphics.drawable.Drawable; importandroid.util.AttributeSet; importandroid.util.Log; importandroid.view.KeyEvent; importandroid.view.MotionEvent; importandroid.view.View; importandroid.widget.TextView; importcom.example.gobang.R; classChessPoint{ intx; inty; intscore; } //publicclassGobangViewextendsViewimplementsRunnable{ publicclassGobangViewextendsView{ privatefinalstaticintGRID_SIZE=13; privatefinalstaticintCHESS_GRID=GRID_SIZE-1; privatefinalstaticintCHECK_DIR=4;//当前位置的四个方向,横、竖、左斜、右斜 privateintmChessDia=22;//棋的直径 privateintmWidth;//棋盘格的宽度 privateintmStartX;//棋盘定位的左上角X privateintmStartY;//棋盘定位的左上角Y privateBitmap[]mChessBW;//黑棋和白棋 privateint[][]mChessTable=newint[CHESS_GRID][CHESS_GRID];//网格 privateint[][][]computerTable=newint[CHESS_GRID][CHESS_GRID][CHECK_DIR];//电脑
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Android 五子棋