我在写一个函数,检查跳棋棋子是否能跳,当它不能跳的时候就停下来,所以我写了:
def checkJump(x,y,count,incr):
player = board[x][y]
count = 0
jumpleft = (board[x+incr][y+incr] != player) and (board[x+incr][y+incr] != '') and (board[x+(incr*2)][y+(incr*2)] == '') and 0 <= x <= 7 and 0 <= y <= 7 and 0 and 0 <= x+incr <= 7 and 0 <= x+(incr*2) <= 7 and 0 <= y+(incr*2) <= 7
jumpright = (board[x+incr][y-incr] != player) and (board[x+incr][y-incr] != '') and (board[x+(incr*2)][y-(incr*2)] == '') and 0 <= x <= 7 and 0 <= y <= 7 and 0 and 0 <= x+incr <= 7 and 0 <= x+(incr*2) <= 7 and 0 <= y-(incr*2) <= 7
while jumpleft or jumpright:
while jumpleft:
x += incr*2
y += incr*2
count += 1
jumpleft = (board[x+incr][y+incr] != player) and (board[x+incr][y+incr] != '') and (board[x+(incr*2)][y+(incr*2)] == '') and 0 <= x <= 7 and 0 <= y <= 7 and 0 and 0 <= x+incr <= 7 and 0 <= x+(incr*2) <= 7 and 0 <= y+(incr*2) <= 7
while jumpright:
x += incr*2
y -= incr*2
count += 1
jumpright = (board[x+incr][y-incr] != player) and (board[x+incr][y-incr] != '') and (board[x+(incr*2)][y-(incr*2)] == '') and 0 <= x <= 7 and 0 <= y <= 7 and 0 and 0 <= x+incr <= 7 and 0 <= x+(incr*2) <= 7 and 0 <= y-(incr*2) <= 7
jumpleft = (board[x+incr][y+incr] != player) and (board[x+incr][y+incr] != '') and (board[x+(incr*2)][y+(incr*2)] == '') and 0 <= x <= 7 and 0 <= y <= 7 and 0 and 0 <= x+incr <= 7 and 0 <= x+(incr*2) <= 7 and 0 <= y+(incr*2) <= 7
jumpright = (board[x+incr][y-incr] != player) and (board[x+incr][y-incr] != '') and (board[x+(incr*2)][y-(incr*2)] == '') and 0 <= x <= 7 and 0 <= y <= 7 and 0 and 0 <= x+incr <= 7 and 0 <= x+(incr*2) <= 7 and 0 <= y-(incr*2) <= 7
return x,y,count
但是,检查的条件过于冗余,多个条件与and
连接。有没有更好的方法来为while循环编写多个条件,而不是仅仅用and
链接它们?谢谢你的回答
既然你对游戏编程感兴趣,我推荐你玩pygame。如果您不感兴趣,我建议用条件“If语句”替换一些“and”赋值运算符。它们的用途相同,可读性更强。你知道吗
也许您可以定义两个返回True或False的检查函数:
打电话给他们就知道了。这将使您的代码更具可读性。你知道吗
相关问题 更多 >
编程相关推荐