回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<div>
</div>
<p>我正在为Connect 4游戏制作一个win checking功能。网格是7x6,一行有4个平铺应该会导致函数返回True,否则返回False。有关守则如下:</p>
<pre><code>grid=[[" O "," "," "," "," "," "],[" "," O "," "," "," "," "],[" "," "," O "," "," "," "],[" "," "," "," O "," "," "],[" "," "," "," "," O "," "],[" "," "," "," "," "," O "],[" "," "," "," "," "," "]]
#2D array for grid
typetofunct={"left":"x-1,y,'left'","right":"x+1,y,'right'","up":"x,y+1,'up'","down":"x,y-1,'down'","topleft":"x-1,y+1,'topleft'","topright":"x+1,y+1,'topright'","downleft":"x-1,y-1,'downleft'","downright":"x+1,y-1,'downright'"}
def check(x,y,checktype,count):
if not ((x==0 and (checktype=="left" or checktype=="topleft" or checktype=="bottomleft")) or (x==6 and (checktype=="right" or checktype=="bottomright" or checktype=="topright")) or (y==0 and (checktype=="down" or checktype=="downleft" or checktype=="downright")) or (y==5 and (checktype=="up" or checktype=="topleft" or checktype=="topright"))): #doesn't check if it's on a boundary
print("Checked {0}".format(checktype))
if grid[x][y]!=" ":
print(count)
count+=1
if count>=4:
print("True reached")
return True
else:
print("Looping")
return exec("check({0},count)".format(typetofunct.get(checktype)))
#recurs the function, has to get it from a dictionary according to string
else:
print("Grid was empty")
return count>=4
else:
print("Out of bounds")
return False
print(check(0,0,"topright",0))
</code></pre>
<p>这应该是打印:</p>
<pre><code>Checked topright
0
Looping
Checked topright
1
Looping
Checked topright
2
Looping
Checked topright
3
True reached
True
</code></pre>
<p>但我得到的是:</p>
<pre><code>Checked topright
0
Looping
Checked topright
1
Looping
Checked topright
2
Looping
Checked topright
3
True reached
None
</code></pre>
<p>据我所知,这个函数应该只返回True或False。请帮忙</p>