Java如何把五子棋必胜26阵法图解x和y的坐标发给服务器端

版权声明:本文为博主原创文章未经博主允许不得转载。 /qq_/article/details/

由于游戏结束の后设置显示的Dialog不想遮挡最后的棋盘,所以将棋盘设置了一个layout_marginBottom使棋盘整体向上移动了40dp

自定义的Panel封装了棋盘线的绘制,棋盘点击事件的處理,棋子的绘制,棋子点的存储,胜负情况的判断等,给外部的接口只是游戏的结果和重新开始游戏的方法.

三.自定义棋盤的代码书写.

1创建Panelclass文件,继承View,并添加两个构造方法,只需要处理两个参数的构造方法,单个参数的是在代码中创建View时候调用的,两個参数的是在布局文件中定义时候调用的,如下:

2.接下來定义一下需要用到的参数,由于要绘制棋盘的线条,棋子,等,所以需要定义的参数如下:

3.下一步是获取棋盘的尺寸,棋盘是正方形的,并且是以棋盘的宽度为准的,一般尺寸的获取是在onSizeChanged里面获取的,這个方法会在进行绘制之前调用,且只调用一次,并且会在屏幕尺寸发生改变的时候调用,如屏幕旋转,对尺寸参数进行处理的代码如下:

4.尺寸处理完之后就需要绘制棋盘了,看示例图可以直到,棋盘线距离组件的边界都有一个偏移量,并且已经在onSizeChanged内处理过了,繪制棋盘很简单,就是一个循环就能完成全部的绘制工作.

绘制之前需要先初始化画笔,这里我们就将绘制线和绘制棋子的画笔都初始化一下,细节都在注释里面:

接下来绘制棋盘,观察棋盘可以知道,横线的起点为偏移量,终点为宽度减去偏移量,起始Y坐标与終止Y坐标相同,都为行高与当前序号的乘积,竖线绘制的参数与横线的参数完全相同,不同的只是与横线的x,y刚好相反,代码如下:

 

然后在onDraw内调用drawBoard即完成了棋盘的绘制,效果如下:

5.我们之前处理了白子黑子的资源文件,接下来应该处理点击事件,并且将棋子显示到棋盘上

首先我们使用List<Point>来存储棋子的位置,Point类为系统自带,在onTouch方法中对点击的位置进行计算,生成横纵坐标是棋子在棋盘中的相对位置的Point,然后添加到對应的List<Point>中去,代码如下,详细的都在注释当中:

获取到了要显示的点,接下来就是遍历List,将点绘制到画布当中去,如下:

 

6.能通过点擊交替生成棋子之后需要的就是对游戏结束条件的判断,同时调用接口将结果传出,判断胜利比较麻烦,基本原理是对白子和黑子中的每一个点進行四个方向上的判断,判断是否连成5个或者是连成4个且至少存在两个空白位置,代码如下:

 

7.对重新开始一局游戲的处理,如下:

 

9,返回棋盘的底部坐标:

自定义棋盘View就完成了,接下來是Activity中的处理,如下:

余下的内容没有什么需要细说的,就直接上代码:

至此所有代码就完成了,下面贴一下MainActivityPanel的全部代码,注释较全面.

代码已分享到GitHub欢迎下载查看:夜深了,晚安.zzzz

  • 100w优质文档免费下载
  • 赠百度阅读VIP精品版

我要回帖

更多关于 五子棋必胜26阵法图解 的文章

 

随机推荐