< 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类有几个函数说明:
- init()方法主要做了几件事:
- 载入资源,建立了_chessboard这个棋盘的surface对象
- 计算棋盘所有落子点的物理坐标,并存放如points属性中,points是个二维数组,这样points[i][j]就可以表示逻辑位置(i,j)所对应的物理坐标了 。
- 调用_draw_board()方法,在_chessboard上画格线及标注等 。
- drop_at(i,j)方法,在逻辑位置(i,j)落子,至于是落白子和黑子通过Renju类的控制开关black_turn来决定 。画图,并将已落子信息存入ball_coord列表中 。
- check_at(i,j)方法,通过遍历ball_coord列表来查看(i,j)位置是否能落子 。
- check_over()方法判断是否存在五子连线的情况,主要通过调用_check_direct方法分别判断四个方向上的情况 。
- _check_direct(direct)方法是判断五子连线的主要逻辑,通过判断最后一颗落子的某个方向落子实现 。
- 亚马逊黑色星期五大促将在11月24日开启
- 五龙戏珠风水详解 龙凤戏珠风水图解
- 文旦和柚子有区别吗 文旦跟柚子的区别
- 孩子喂奶期间可以用化妆品吗 喂奶能用化妆品吗?
- 子宫糜烂有什么症状表现 子宫糜烂的症状是什么
- 儿童绘本作品 儿童图画书有哪些
- lol新版本装备更新内容 LOL版本更新内容
- 如何培养孩子的学习习惯与方法 如何培养孩子良好的学习习惯
- 用别人的旧鞋柜风水 穿别人的旧鞋子的风水
- 院子西高东低的风水 东高西低的楼风水好吗
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
