分类导航
基于Android平台五子棋游戏的设计与实现
android:id=\
android:layout_width=\ android:layout_height=\ android:layout_centerHorizontal=\ android:layout_centerVertical=\ android:text=\游戏设置\ android:id=\ android:layout_width=\ android:layout_height=\ android:layout_alignLeft=\ android:layout_alignRight=\ android:layout_below=\ android:layout_marginTop=\ android:text=\帮助\ android:id=\ android:layout_width=\ android:layout_height=\ android:layout_above=\ android:layout_alignLeft=\ android:layout_marginBottom=\ android:text=\开始游戏\4.3 对弈界面实现过程 对弈界面是本游戏的重要界面,在此界面中电脑与玩家轮流落子,呈现出博弈的智慧。 4.3.1 棋盘实现 17 基于Android平台五子棋游戏的设计与实现 图4.3 棋盘界面 棋盘界面如上图,该界面的实现代码: (1)加载棋盘背景: public GameView(Context context) { super(context); this.context = context; this.setBackgroundResource(R.drawable.bg); (2)绘制棋盘线条: PADDING_LEFT = ((screenWidth) / (COLS - 1)) / 2; PADDING_TOP = ((screenHeight) / (ROWS - 1)) / 2; PADDING = PADDING_LEFT < PADDING_TOP ? PADDING_LEFT : PADDING_TOP; ROW_MARGIN = ((screenHeight - PADDING * 2)) / (ROWS - 1); COL_MARGIN = ((screenWidth - PADDING * 2)) / (COLS - 1); MARGIN = ROW_MARGIN < COL_MARGIN ? ROW_MARGIN : COL_MARGIN; PADDING_LEFT = (screenWidth - (COLS - 1) * MARGIN) / 2; PADDING_TOP = (screenHeight - (ROWS - 1) * MARGIN) / 2; initChess(); protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint paint = new Paint(); 18 基于Android平台五子棋游戏的设计与实现 paint.setColor(Color.WHITE); // 打印行 for (int i = 0; i < ROWS; i++) { } // 打印列 for (int i = 0; i < COLS; i++) { } canvas.drawLine(PADDING_LEFT + i * MARGIN, PADDING_TOP, PADDING_LEFT + i * MARGIN, MARGIN * (ROWS - 1) + PADDING_TOP, paint); canvas.drawLine(PADDING_LEFT, i * MARGIN + PADDING_TOP, (COLS - 1) * MARGIN + PADDING_LEFT, i * MARGIN + PADDING_TOP, paint); 4.3.2 落子实现 当游戏开始后,系统会默认玩家一方执白棋落子,而后电脑一方执黑棋落子。双方下棋直到任意一方连成五子。界面如图: 图4.4 下棋界面 19 基于Android平台五子棋游戏的设计与实现 此功能实现主要代码为: (1)重新开始方法,初始化棋子: public void reStart(){ initChess(); gameOver = false; } (2)打印棋子 for (int r = 0; r < ROWS; r++) { for (int c = 0; c < COLS; c++) { } // System.out.print(chessMap[r][c] + \if (chessMap[r][c] == ChessType.NONE) } continue; paint.setColor(Color.BLACK); canvas.drawCircle(r * MARGIN + PADDING_LEFT, c * MARGIN + PADDING_TOP, MARGIN / 2, paint); if (chessMap[r][c] == ChessType.BLACK) { } else if (chessMap[r][c] == ChessType.WHITE) { paint.setColor(Color.WHITE); canvas.drawCircle(r * MARGIN + PADDING_LEFT, c * MARGIN + PADDING_TOP, MARGIN / 2, paint); 4.3.3 判断胜负 每一步下棋,系统都会判定是否有相同颜色的五子连在一起,若没有,则游戏继续进行。若有,则游戏进入结束界面,并根据检测结果提示获胜方。 20 基于Android平台五子棋游戏的设计与实现 图4.5 判断胜负 该功能的实现代码如下: public boolean hasWin(int r, int c) { ChessType chessType = chessMap[r][c]; System.out.println(chessType); int count = 1; (1)纵向搜索,检测是否有相同五子连成一线: for (int i = r + 1; i < r + 5; i++) { } for (int i = r - 1; i > r - 5; i--) { if (i < 0) break; 21 if (i >= GameView.ROWS) break; count++; break; if (chessMap[i][c] == chessType) { } else 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库计算机专业本科毕业论文(6)在线全文阅读。
android:layout_width=\ android:layout_height=\ android:layout_alignLeft=\ android:layout_alignRight=\ android:layout_below=\ android:layout_marginTop=\ android:text=\帮助\ android:id=\ android:layout_width=\ android:layout_height=\ android:layout_above=\ android:layout_alignLeft=\ android:layout_marginBottom=\ android:text=\开始游戏\4.3 对弈界面实现过程 对弈界面是本游戏的重要界面,在此界面中电脑与玩家轮流落子,呈现出博弈的智慧。 4.3.1 棋盘实现 17 基于Android平台五子棋游戏的设计与实现 图4.3 棋盘界面 棋盘界面如上图,该界面的实现代码: (1)加载棋盘背景: public GameView(Context context) { super(context); this.context = context; this.setBackgroundResource(R.drawable.bg); (2)绘制棋盘线条: PADDING_LEFT = ((screenWidth) / (COLS - 1)) / 2; PADDING_TOP = ((screenHeight) / (ROWS - 1)) / 2; PADDING = PADDING_LEFT < PADDING_TOP ? PADDING_LEFT : PADDING_TOP; ROW_MARGIN = ((screenHeight - PADDING * 2)) / (ROWS - 1); COL_MARGIN = ((screenWidth - PADDING * 2)) / (COLS - 1); MARGIN = ROW_MARGIN < COL_MARGIN ? ROW_MARGIN : COL_MARGIN; PADDING_LEFT = (screenWidth - (COLS - 1) * MARGIN) / 2; PADDING_TOP = (screenHeight - (ROWS - 1) * MARGIN) / 2; initChess(); protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint paint = new Paint(); 18 基于Android平台五子棋游戏的设计与实现 paint.setColor(Color.WHITE); // 打印行 for (int i = 0; i < ROWS; i++) { } // 打印列 for (int i = 0; i < COLS; i++) { } canvas.drawLine(PADDING_LEFT + i * MARGIN, PADDING_TOP, PADDING_LEFT + i * MARGIN, MARGIN * (ROWS - 1) + PADDING_TOP, paint); canvas.drawLine(PADDING_LEFT, i * MARGIN + PADDING_TOP, (COLS - 1) * MARGIN + PADDING_LEFT, i * MARGIN + PADDING_TOP, paint); 4.3.2 落子实现 当游戏开始后,系统会默认玩家一方执白棋落子,而后电脑一方执黑棋落子。双方下棋直到任意一方连成五子。界面如图: 图4.4 下棋界面 19 基于Android平台五子棋游戏的设计与实现 此功能实现主要代码为: (1)重新开始方法,初始化棋子: public void reStart(){ initChess(); gameOver = false; } (2)打印棋子 for (int r = 0; r < ROWS; r++) { for (int c = 0; c < COLS; c++) { } // System.out.print(chessMap[r][c] + \if (chessMap[r][c] == ChessType.NONE) } continue; paint.setColor(Color.BLACK); canvas.drawCircle(r * MARGIN + PADDING_LEFT, c * MARGIN + PADDING_TOP, MARGIN / 2, paint); if (chessMap[r][c] == ChessType.BLACK) { } else if (chessMap[r][c] == ChessType.WHITE) { paint.setColor(Color.WHITE); canvas.drawCircle(r * MARGIN + PADDING_LEFT, c * MARGIN + PADDING_TOP, MARGIN / 2, paint); 4.3.3 判断胜负 每一步下棋,系统都会判定是否有相同颜色的五子连在一起,若没有,则游戏继续进行。若有,则游戏进入结束界面,并根据检测结果提示获胜方。 20 基于Android平台五子棋游戏的设计与实现 图4.5 判断胜负 该功能的实现代码如下: public boolean hasWin(int r, int c) { ChessType chessType = chessMap[r][c]; System.out.println(chessType); int count = 1; (1)纵向搜索,检测是否有相同五子连成一线: for (int i = r + 1; i < r + 5; i++) { } for (int i = r - 1; i > r - 5; i--) { if (i < 0) break; 21 if (i >= GameView.ROWS) break; count++; break; if (chessMap[i][c] == chessType) { } else 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库计算机专业本科毕业论文(6)在线全文阅读。
android:layout_width=\ android:layout_height=\ android:layout_above=\ android:layout_alignLeft=\ android:layout_marginBottom=\ android:text=\开始游戏\
4.3 对弈界面实现过程
对弈界面是本游戏的重要界面,在此界面中电脑与玩家轮流落子,呈现出博弈的智慧。
4.3.1 棋盘实现
17
图4.3 棋盘界面
棋盘界面如上图,该界面的实现代码: (1)加载棋盘背景:
public GameView(Context context) {
super(context); this.context = context;
this.setBackgroundResource(R.drawable.bg);
(2)绘制棋盘线条:
PADDING_LEFT = ((screenWidth) / (COLS - 1)) / 2; PADDING_TOP = ((screenHeight) / (ROWS - 1)) / 2;
PADDING = PADDING_LEFT < PADDING_TOP ? PADDING_LEFT : PADDING_TOP; ROW_MARGIN = ((screenHeight - PADDING * 2)) / (ROWS - 1); COL_MARGIN = ((screenWidth - PADDING * 2)) / (COLS - 1);
MARGIN = ROW_MARGIN < COL_MARGIN ? ROW_MARGIN : COL_MARGIN; PADDING_LEFT = (screenWidth - (COLS - 1) * MARGIN) / 2; PADDING_TOP = (screenHeight - (ROWS - 1) * MARGIN) / 2; initChess();
protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint paint = new Paint();
18
paint.setColor(Color.WHITE); // 打印行
for (int i = 0; i < ROWS; i++) { } // 打印列
for (int i = 0; i < COLS; i++) { }
canvas.drawLine(PADDING_LEFT + i * MARGIN, PADDING_TOP,
PADDING_LEFT + i * MARGIN, MARGIN * (ROWS - 1)
+ PADDING_TOP, paint);
canvas.drawLine(PADDING_LEFT, i * MARGIN + PADDING_TOP, (COLS - 1)
* MARGIN + PADDING_LEFT, i * MARGIN + PADDING_TOP, paint);
4.3.2 落子实现
当游戏开始后,系统会默认玩家一方执白棋落子,而后电脑一方执黑棋落子。双方下棋直到任意一方连成五子。界面如图:
图4.4 下棋界面
19
此功能实现主要代码为:
(1)重新开始方法,初始化棋子:
public void reStart(){
initChess(); gameOver = false;
}
(2)打印棋子
for (int r = 0; r < ROWS; r++) {
for (int c = 0; c < COLS; c++) { }
// System.out.print(chessMap[r][c] + \if (chessMap[r][c] == ChessType.NONE) }
continue;
paint.setColor(Color.BLACK);
canvas.drawCircle(r * MARGIN + PADDING_LEFT, c * MARGIN
+ PADDING_TOP, MARGIN / 2, paint);
if (chessMap[r][c] == ChessType.BLACK) {
} else if (chessMap[r][c] == ChessType.WHITE) {
paint.setColor(Color.WHITE);
4.3.3 判断胜负
每一步下棋,系统都会判定是否有相同颜色的五子连在一起,若没有,则游戏继续进行。若有,则游戏进入结束界面,并根据检测结果提示获胜方。
20
图4.5 判断胜负
该功能的实现代码如下:
public boolean hasWin(int r, int c) {
ChessType chessType = chessMap[r][c]; System.out.println(chessType); int count = 1;
(1)纵向搜索,检测是否有相同五子连成一线:
for (int i = r + 1; i < r + 5; i++) { }
for (int i = r - 1; i > r - 5; i--) {
if (i < 0)
break;
21
if (i >= GameView.ROWS)
break; count++; break;
if (chessMap[i][c] == chessType) { } else
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库计算机专业本科毕业论文(6)在线全文阅读。
相关推荐: