Android五子棋 (2).doc
《Android五子棋 (2).doc》由会员分享,可在线阅读,更多相关《Android五子棋 (2).doc(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Android开发-一个简单的五子棋游戏好了,下面直接贴代码:/* Five In a Row. (五子棋)* 这是一个简单的五子棋程序,是我自己的一个练习,贴出来跟大家分享。* 希望跟大家一起多交流。 我的GoogleTalk: lixinso */-/TBD:AI,悔棋/-package lixinsong.game.gobang;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.TextVie
2、w;/这是主程序,继承自Activity,实现onCreate方法。:public class gobang extends Activity GobangView gbv; /* Called when the activity is first created. */ Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); gbv = (GobangView)this.findViewById(R.i
3、d.gobangview); gbv.setTextView(TextView)this.findViewById(R.id.text);里面的R.id.gobangview是在res中定义的View。 /五子棋的Viewpackage lixinsong.game.gobang;import android.content.Context;import android.content.res.Resources;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Color
4、;import android.graphics.Paint;import android.graphics.Paint.Style;import android.graphics.drawable.Drawable;import android.util.AttributeSet;import android.util.Log;import android.view.KeyEvent;import android.view.MotionEvent;import android.view.View;import android.widget.TextView;/*棋盘一共1010格* 棋盘居中
5、*/public class GobangView extends View implements Runnable public class GobangView extends View protected static int GRID_SIZE = 10; protected static int GRID_WIDTH = 30; / 棋盘格的宽度 protected static int CHESS_DIAMETER = 26; / 棋的直径 protected static int mStartX;/ 棋盘定位的左上角X protected static int mStartY;/
6、 棋盘定位的左上角Y private Bitmap mChessBW; / 黑棋和白棋 private static int mGridArray; / 网格 boolean key = false; int wbflag = 1; /该下白棋了=2,该下黑棋了=1. 这里先下黑棋(黑棋以后设置为机器自动下的棋子) int mLevel = 1; /游戏难度 int mWinFlag = 0; private final int BLACK=1; private final int WHITE=2; int mGameState = GAMESTATE_RUN; /游戏阶段:0=尚未游戏,1=
7、正在进行游戏,2=游戏结束 static final int GAMESTATE_PRE = 0; static final int GAMESTATE_RUN = 1; static final int GAMESTATE_PAUSE = 2; static final int GAMESTATE_END = 3; /private TextView mStatusTextView; / 根据游戏状态设置显示的文字 public TextView mStatusTextView; / 根据游戏状态设置显示的文字 private Bitmap btm1; private final Paint
8、 mPaint = new Paint(); CharSequence mText; CharSequence STRING_WIN = White win! n Press Fire Key to start new game.; CharSequence STRING_LOSE = Black win! n Press Fire Key to start new game.; CharSequence STRING_EQUAL = Cool! You are equal! n Press Fire Key to start new Game.; public GobangView(Cont
9、ext context, AttributeSet attrs, int defStyle) super(context, attrs, defStyle); public GobangView(Context context, AttributeSet attrs) /好像调用的是这个构造函数,为什么不是前面的呢 super(context, attrs); this.setFocusable(true); /20090530 this.setFocusableInTouchMode(true); init(); /这里画棋子后来没有用图片画,而是直接画了圆。因为我做的图片不好看。 / 初始
10、化黑白棋的Bitmap public void init() mGameState = 1; /设置游戏为开始状态 wbflag = BLACK; /初始为先下黑棋 mWinFlag = 0; /清空输赢标志。 mGridArray = new intGRID_SIZE-1GRID_SIZE-1; mChessBW = new Bitmap2; Bitmap bitmap = Bitmap.createBitmap(CHESS_DIAMETER, CHESS_DIAMETER, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitma
11、p); Resources r = this.getContext().getResources(); Drawable tile = r.getDrawable(R.drawable.chess1); tile.setBounds(0, 0, CHESS_DIAMETER, CHESS_DIAMETER); tile.draw(canvas); mChessBW0 = bitmap; tile = r.getDrawable(R.drawable.chess2); tile.setBounds(0, 0, CHESS_DIAMETER, CHESS_DIAMETER); tile.draw(
12、canvas); mChessBW1 = bitmap; public void setTextView(TextView tv) mStatusTextView =tv; mStatusTextView.setVisibility(View.INVISIBLE); Override protected void onSizeChanged(int w, int h, int oldw, int oldh) mStartX = w / 2 - GRID_SIZE * GRID_WIDTH / 2; mStartY = h / 2 - GRID_SIZE * GRID_WIDTH / 2; Ov
13、erride public boolean onTouchEvent(MotionEvent event) switch (mGameState) case GAMESTATE_PRE: break; case GAMESTATE_RUN: int x; int y; float x0 = GRID_WIDTH - (event.getX() - mStartX) % GRID_WIDTH; float y0 = GRID_WIDTH - (event.getY() - mStartY) % GRID_WIDTH; if (x0 GRID_WIDTH / 2) x = (int) (event
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android五子棋 2 Android 五子棋
限制150内