[英]Python connect four, cannot use libraries
我想在 python 3.7 中连接四个,但我们很快就卡住了,我们真的很新,所以这就是原因。 我们基本上希望将玩家 1 和 2 的 1 和 2 放在下面的网格中,但是当我们在同一列中输入玩家 1 和 2 时,它不起作用。 我很想有人帮助我们,因为我们已经坚持了很长时间,在此先感谢! 附: 我们不想使用任何插件或添加到 python 中,只是常规的 if、def、while 等语句。
ROW_COUNT = 6
COLUMN_COUNT = 7
row6 = [0, 0, 0, 0, 0, 0, 0]
row5 = [0, 0, 0, 0, 0, 0, 0]
row4 = [0, 0, 0, 0, 0, 0, 0]
row3 = [0, 0, 0, 0, 0, 0, 0]
row2 = [0, 0, 0, 0, 0, 0, 0]
row1 = [0, 0, 0, 0, 0, 0, 0]
Board=[row6, row5, row4, row3, row2, row1]
def drop_piece(Board, row, Column, piece):
Board[row][Column] = piece
def is_valid_location(Board, Column):
return Board[0][Column] ==0
def get_next_open_row(Board, Column):
for r in range(ROW_COUNT):
if Board[r][Column]==0:
return r
gameOver = False
turn = 0
while not gameOver:
if turn == 0:
Column = int(input("Player 1, Make your turn(0-6):"))
if is_valid_location(Board ,Column):
row = get_next_open_row(Board, Column)
drop_piece(Board, row, Column, 1)
turn = turn + 1
else:
Column = int(input("Player 2, Make your turn(0-6):"))
if is_valid_location(Board, Column):
row = get_next_open_row(Board, Column)
drop_piece(Board, row, Column, 2)
turn = turn - 1
print(row1)
print(row2)
print(row3)
print(row4)
print(row5)
print(row6)
这应该会让你重新开始,仍然需要编写gameOver
部分。
一个问题是您将显示定义为:
row6 = [0, 0, 0, 0, 0, 0, 0]
row5 = [0, 0, 0, 0, 0, 0, 0]
row4 = [0, 0, 0, 0, 0, 0, 0]
row3 = [0, 0, 0, 0, 0, 0, 0]
row2 = [0, 0, 0, 0, 0, 0, 0]
row1 = [0, 0, 0, 0, 0, 0, 0]
Board=[row6, row5, row4, row3, row2, row1]
但是,打印输出
print(row1) #Prints First
print(row2)
print(row3)
print(row4)
print(row5)
print(row6) #Prints Last
使其在屏幕上显示为:
row1 = [0, 0, 0, 0, 0, 0, 0]
row2 = [0, 0, 0, 0, 0, 0, 0]
row3 = [0, 0, 0, 0, 0, 0, 0]
row4 = [0, 0, 0, 0, 0, 0, 0]
row5 = [0, 0, 0, 0, 0, 0, 0]
row6 = [0, 0, 0, 0, 0, 0, 0]
另一个是你的切换很容易坏:
if turn == 0:
if is_valid_location(Board ,Column):
turn = turn + 1
else:
turn = turn - 1
这意味着 turn 可以增加的唯一方法是如果turn
为 0 并且Column
是有效位置,否则它将继续是玩家 2 的回合并继续递减。
这是我的代码,现在显示是基于计数变量中设置的行和列动态进行的,切换是基于布尔值的,并且只切换播放器,为用户选择添加验证,并且打印是在一个环形:
ROW_COUNT = 6
COLUMN_COUNT = 7
Board = [] # Define the Board list
# Appends a list of 0s COLUMN_COUNT long, to the Board list, ROW_COUNT amount of times.
for x in range(ROW_COUNT): Board.append(list([0] * COLUMN_COUNT))
def drop_piece(Board, row, Column, piece):
Board[row][Column] = piece
def is_valid_location(Board, Column):
# Checks that the top row for the selected column is 0
return Board[-1][Column] == 0
def get_next_open_row(Board, Column):
for r in range(ROW_COUNT):
if Board[r][Column]==0:
return r
gameOver = False
turn = True
while not gameOver:
# Boolean toggle True = player 1, False = player 2
if turn: player = 1
else: player = 2
Column = int(input("Player " + str(player) +", Make your turn(0-6):"))
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")
# prints the reversed Board, since printing needs to be last printed first
for row in reversed(Board):
print(row)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.