【发布时间】:2018-11-16 15:46:18
【问题描述】:
我已经在一个四人组游戏上工作了几个星期(初学者),我几乎完成了。但我唯一的问题是我似乎无法让获胜条件发挥作用。老实说,我不知道如何解决它,所以我希望这里的人能看到问题所在。直到最后一条评论 (#) 的上半部分工作正常,它打印板,在错误输入时给出错误消息,并将碎片放在你想要的地方。唯一仍然不起作用的是获胜条件。我无法完成一场比赛,它会让我连续打到 7 场,而且不会给出获胜条件。我的代码可以在下面找到!
ROW_COUNT = 6 #CREEEREN VAN HET BORD
COLUMN_COUNT = 7
Board = []
for x in range(ROW_COUNT): Board.append(list([0] * COLUMN_COUNT))
def drop_piece(Board, row, Column, piece): #PLAATSEN VAN EEN RONDJE
Board[row][Column] = piece
def is_valid_location(Board, Column): #CHECKEN OF DE PLEK OP HET BORD LEEG IS
return Board[-1][Column] == 0
def get_next_open_row(Board, Column): #CHECKEN OF DE ROW LEEG IS
for r in range(ROW_COUNT):
if Board[r][Column]==0:
return r
gameOver = False
turn = True
while not gameOver:
if turn: player = 1
else: player = 2
UserInput = input("Player " + str(player) + ", Make your turn(0-6):")
if UserInput.isdigit():
Column = int(UserInput)
else:
print("Your input has to be between 0 and 6!")
UserInput = input("Player " + str(player) + ", Make your turn(0-6):")
if Column != 0 and Column != 1 and Column != 2 and Column != 3 and Column != 4 and Column != 5 and Column != 6:
print("Your input has to be between 0 and 6!")
UserInput = input("Player " + str(player) + ", Make your turn(0-6):")
else:
if is_valid_location(Board, Column):
row = get_next_open_row(Board, Column)
drop_piece(Board, row, Column, player)
turn = not turn
else: print("Invalid selection")
for row in reversed(Board):
print(row) # EVERYTHING UNTIL HERE WORKS FINE!
#HORIZONTAAL
for C in range(COLUMN_COUNT - 3):
for R in range(ROW_COUNT):
if Board[R][C] == 1 and Board[R][C + 1] == 1 and Board[R][C + 2] == 1 and Board[R][C + 3] == 1:
print("You've won")
#VERTICAAL
for C in range(COLUMN_COUNT):
for R in range(ROW_COUNT - 3):
if Board[R][C] == 1 and Board[R + 1][C] == 1 and Board[R + 2][C] == 1 and Board[R + 3][C] == 1:
print("You've won")
#DIAGONAAL
for C in range(COLUMN_COUNT - 3):
for R in range(ROW_COUNT - 3):
if Board[R][C] == 1 and Board[R + 1][C + 1] == 1 and Board[R + 2][C + 2] == 1 and Board[R + 3][C + 3] == 1:
print ("You've won")
【问题讨论】:
-
基于切片的列表比较可以简化这一点:例如,
if Board[R][C:C+4] == [1,1,1,1]:
标签: python