APP下载

基于Android的五子棋游戏设计

2020-04-21黄建段志举陈杉杉周绍景温志雄

数字技术与应用 2020年1期
关键词:五子棋

黄建 段志举 陈杉杉 周绍景 温志雄

摘要:本文主要阐述以面向对象的程序开发语言,Android Studio为开发工具, 基于Android平台设计开发一个五子棋游戏。本程序中设定了黑白两方的对战模式,并进行输赢方的判定。

关键词:五子棋;Android;游戏开发

中图分类号:TP317 文献标识码:A 文章编号:1007-9416(2020)01-0161-02

0 引言

五子棋是一种两人对弈的纯策略型棋类游戏,起源于中国古代,它容易上手,老少皆宜,是全国智力运动会竞技项目之一。随着近几年来使用Android手机的用户不断增加,Android平台游戏凭借其可玩性高、上手容易、游戏稳定、交流方便和扩展性高等特点受到更多人的喜欢[1]。本文将基于Android平台设计一个五子棋游戏,实现黑棋玩家与白棋玩家对弈并判定输赢。

1 应用设计分析

1.1 应用功能分析

游戏开始时,由黑子开局,将一枚棋子落在棋盘一坐标上,然后由白棋落子,如此轮流下子,直到某一方首先在棋盘的竖、横或斜三方向上的五子连成线,则该方该局获胜。功能划分如图1所示,(1)开始;(2)黑棋或白棋落子;(3)胜负判断;(4)重玩;(5)任意一方悔棋;(6)退出游戏。

1.2 应用逻辑分析

五子棋游戏逻辑分为四个部分:黑棋下、判断黑棋是否获胜、白棋下、判断白棋是否获胜;在判断获胜的黑白子方法相同,所以只需完成黑棋下、白棋下、判断获胜三个部分。

1.3 方法设计

onTouch()负责监听触摸屏幕事件调用悔棋、重玩等功能,判断玩家触摸棋盘是否符合五子棋规则,goBack()实现悔棋功能,rePlay()清空所有棋子数据实现重玩游戏功能,checkWinner()判斷胜负。

2 应用关键功能实现

2.1 应用界面绘制

五子棋界面的开发主要在Activity中使用自定义View完成。在自定义View中基于Canvas重写onDraw()呈现图像、文字、线条等二维图形和坐标。

2.1.1 棋盘绘制

在ChessFiveView类中,定义绘制线条的起始点x0、y0,间距D,最大行数maxRows如图2所示,最大列数maxColx如图3所示,复写父类的onDraw方法,设置画笔颜色为黑色,使用for循环调用drawLine方法即可绘制出垂直交叉的棋盘线如图4所示。

2.1.2 棋子绘制

重写onTouch方法监听玩家触摸事件,通过event即可获取玩家手指触摸棋盘的x、y值。根据棋盘线条的绘制规则进行运算,用对应的棋子占据该位置。使用三目运算符更换下一个棋子类型,调用postInvalidate()方法重新绘制界面,将棋子绘制在棋盘上。当使用postInvalidate()方法后,在onDraw()方法中根据二维数组行列号绘制棋子,如图5所示。

2.2 应用功能实现

2.2.1 悔棋功能

在goBack()方法中从已下子对象数组中取出最后的一个元素lstStep.get(n-1),获得lstStep中当前行和列的信息,将对应位置的二维数组清零chess[row][col]=0,使用postInvalidate方法重新画图,把最后一个元素移除lstStep.remove(n-1)。

2.2.2 重玩功能

在rePlay()方法中用for循环将chess[row][col]数组数值清零,重置棋子类型和胜负,并重新画图。

2.3 五子棋胜负判断

checkWinner()中给定一个点、一个方向、一个相对坐标值,就能得到一个二维坐标。将坐标代入当前棋盘数组chess中,保存对应位置每个棋子的类型。在游戏中,每当玩家下一步棋后获取该棋子,判断其横、竖、正斜、反斜4个方向是否符合赢的条件[2]。若某一方向同类型棋子大于等于5,则获取当前棋子类型进行胜负判断,游戏结束。

参考文献

[1] 卫少林,卫文学.基于JavaScript的人机五子棋游戏的设计与实现[J].现代计算机(专业版),2016(25):58-62.

[2] 彭健,陈兰兰.基于Java语言开发五子棋游戏项目的教学设计与实践[J].江苏科技信息,2016(33):47-48.

猜你喜欢

五子棋
Sim Sim
学下五子棋
90后罗运生:五子棋是我生命的一部分
财政部长吴波的“五子棋局”
基于PSP技术的五子棋网络系统的开发研究
夏日五子棋