これ、五目並べの勝者判定プログラムなんだが
何やってるかさっぱりわからん
だれか解説してくれないか?
def has_a_winner(self):
width = self.width
height = self.height
states = self.states
n = self.n_in_row
moved = list(set(range(width * height)) - set(self.availables))
if(len(moved) < self.n_in_row + 2):
return False, -1
for m in moved:
h = m // width
w = m % width
player = states[m]
if (w in range(width - n + 1) and
len(set(states.get(i, -1) for i in range(m, m + n))) == 1):
return True, player
if (h in range(height - n + 1) and
len(set(states.get(i, -1) for i in range(m, m + n * width, width))) == 1):
return True, player
if (w in range(width - n + 1) and h in range(height - n + 1) and
len(set(states.get(i, -1) for i in range(m, m + n * (width + 1), width + 1))) == 1):
return True, player
if (w in range(n - 1, width) and h in range(height - n + 1) and
len(set(states.get(i, -1) for i in range(m, m + n * (width - 1), width - 1))) == 1):
return True, player
return False, -1
くだすれPython(超初心者用) その36
■ このスレッドは過去ログ倉庫に格納されています
877デフォルトの名無しさん
2018/03/12(月) 22:13:29.39ID:KbeqxTAu■ このスレッドは過去ログ倉庫に格納されています
