新版五子连珠 五子连珠游戏版( 二 )

< len(sorted_line):if dt_x == 0:y1 = item.yy2 = sorted_line[index].yif abs(y1-y2) == 4:# 此点和第5个点比较y值,如相差为4则连成5子return Trueelse:x1 = item.xx2 = sorted_line[index].xif abs(x1-x2) == 4: # 此点和第5个点比较x值,如相差为4则连成5子return Trueelse:breakreturn False# 检查(i,j)位置是否已占用def check_at(self, i, j):for item in self.ball_coord:if (i,j) == item[\\'coord\\']:return Falsereturn True# 通过物理坐标获取逻辑坐标def get_coord(self, pos):x, y = posi, j = (0, 0)oppo_x = x - self.leftif oppo_x > 0:i = round(oppo_x / self.space)# 四舍五入取整oppo_y = y - self.topif oppo_y > 0:j = round(oppo_y / self.space)return (i, j)复制代码Renju类有几个函数说明:

  1. init()方法主要做了几件事:
  • 载入资源,建立了_chessboard这个棋盘的surface对象
  • 计算棋盘所有落子点的物理坐标,并存放如points属性中,points是个二维数组,这样points[i][j]就可以表示逻辑位置(i,j)所对应的物理坐标了 。
  • 调用_draw_board()方法,在_chessboard上画格线及标注等 。
  1. drop_at(i,j)方法,在逻辑位置(i,j)落子,至于是落白子和黑子通过Renju类的控制开关black_turn来决定 。画图,并将已落子信息存入ball_coord列表中 。
  2. check_at(i,j)方法,通过遍历ball_coord列表来查看(i,j)位置是否能落子 。
  3. check_over()方法判断是否存在五子连线的情况,主要通过调用_check_direct方法分别判断四个方向上的情况 。
  4. _check_direct(direct)方法是判断五子连线的主要逻辑,通过判断最后一颗落子的某个方向落子实现 。
更多精彩文章关注公众号python社区营


特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。