(self, start, stop, step, color, l, skip=[])
| 107 | |
| 108 | # Traversal Left |
| 109 | def _traverse_l(self, start, stop, step, color, l, skip=[]): |
| 110 | moves = {} |
| 111 | last = [] |
| 112 | for r in range(start, stop, step): |
| 113 | if l < 0: |
| 114 | break |
| 115 | current = self.board[r][l] |
| 116 | if current == 0: |
| 117 | if skip and not last: |
| 118 | break |
| 119 | elif skip: |
| 120 | moves[(r, l)] = last + skip |
| 121 | else: |
| 122 | moves[(r, l)] = last |
| 123 | |
| 124 | if last: |
| 125 | if step == -1: |
| 126 | row = max(r - 3, 0) |
| 127 | else: |
| 128 | row = min(r + 3, rows) |
| 129 | moves.update( |
| 130 | self._traverse_l(r + step, row, step, color, l - 1, skip=last) |
| 131 | ) |
| 132 | moves.update( |
| 133 | self._traverse_r(r + step, row, step, color, l + 1, skip=last) |
| 134 | ) |
| 135 | break |
| 136 | |
| 137 | elif current.color == color: |
| 138 | break |
| 139 | else: |
| 140 | last = [current] |
| 141 | l -= 1 |
| 142 | return moves |
| 143 | |
| 144 | # Traversal Right |
| 145 | def _traverse_r(self, start, stop, step, color, right, skip=[]): |
no test coverage detected