创建一个子程序来告诉玩家他们输入的坐标何时已被占用
Creating a subroutine to tell a player when the coordinates that they have entered are already occupied
我创建了一个包含所有可用坐标的列表,所以我的想法是,一旦输入坐标,它就会从列表中删除并放入另一个名为 Taken_Coord 的列表中。
但我只知道我的代码可以比现在更高效我只是不确定如何,如果需要更多信息请告诉我
这是代码:
Board = [[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]]
Coordinate = 0
YCoordinate = 0
ValidMove = False
CurrentSymbol = ''
StartSymbol = ''
PlayerOneSymbol = ''
PlayerTwoSymbol = ''
Answer = ''
Aval_coordinate = ['11','12','13','21','22','23','33','32''31']
Taken_Coord = 0
def CheckValidMove(XCoordinate, YCoordinate, Board, Taken_Coord, Aval_coordinate):
ValidMove = True
Taken_Coord = (''+str(XCoordinate) + str(YCoordinate) + '')
count = Aval_coordinate.count(Taken_Coord)
if (XCoordinate < 1) or (XCoordinate > 3):
ValidMove = False
if(YCoordinate < 1) or (YCoordinate > 3):
ValidMove = False
elif count == 0:
ValidMove = False
elif Taken_Coord == '11':
Aval_coordinate.pop('11')
elif Taken_Coord == '12':
Aval_coordinate.pop('12')
elif Taken_Coord == '13':
Aval_coordinate.pop('13')
elif Taken_Coord == '21':
Aval_coordinate.pop('21')
elif Taken_Coord == '22':
Aval_coordinate.pop('22')
elif Taken_Coord == '23':
Aval_coordinate.pop('23')
elif Taken_Coord == '33':
Aval_coordinate.pop('33')
elif Taken_Coord == '31':
Aval_coordinate.pop('31')
elif Taken_Coord == '32':
Aval_coordinate.pop('32')
return ValidMove
是的,就像是。也不要对变量或函数使用大写名称,它们用于 类。 list.pop()
方法也需要您要删除的索引,而不是字符串。 Want 你大概要用的是remove()
def check_valid_move(x_coordinate, y_coordinate, board, taken_coord, aval_coordinate):
taken_coord = f"{x_coordinate}{y_coordinate}"
if x_coordinate and y_coordinate not in range(1,4):
return False
if taken_coord not in aval_coordinate:
return False
aval_coordinate.remove(taken_coord)
return True
我创建了一个包含所有可用坐标的列表,所以我的想法是,一旦输入坐标,它就会从列表中删除并放入另一个名为 Taken_Coord 的列表中。
但我只知道我的代码可以比现在更高效我只是不确定如何,如果需要更多信息请告诉我 这是代码:
Board = [[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]]
Coordinate = 0
YCoordinate = 0
ValidMove = False
CurrentSymbol = ''
StartSymbol = ''
PlayerOneSymbol = ''
PlayerTwoSymbol = ''
Answer = ''
Aval_coordinate = ['11','12','13','21','22','23','33','32''31']
Taken_Coord = 0
def CheckValidMove(XCoordinate, YCoordinate, Board, Taken_Coord, Aval_coordinate):
ValidMove = True
Taken_Coord = (''+str(XCoordinate) + str(YCoordinate) + '')
count = Aval_coordinate.count(Taken_Coord)
if (XCoordinate < 1) or (XCoordinate > 3):
ValidMove = False
if(YCoordinate < 1) or (YCoordinate > 3):
ValidMove = False
elif count == 0:
ValidMove = False
elif Taken_Coord == '11':
Aval_coordinate.pop('11')
elif Taken_Coord == '12':
Aval_coordinate.pop('12')
elif Taken_Coord == '13':
Aval_coordinate.pop('13')
elif Taken_Coord == '21':
Aval_coordinate.pop('21')
elif Taken_Coord == '22':
Aval_coordinate.pop('22')
elif Taken_Coord == '23':
Aval_coordinate.pop('23')
elif Taken_Coord == '33':
Aval_coordinate.pop('33')
elif Taken_Coord == '31':
Aval_coordinate.pop('31')
elif Taken_Coord == '32':
Aval_coordinate.pop('32')
return ValidMove
是的,就像是。也不要对变量或函数使用大写名称,它们用于 类。 list.pop()
方法也需要您要删除的索引,而不是字符串。 Want 你大概要用的是remove()
def check_valid_move(x_coordinate, y_coordinate, board, taken_coord, aval_coordinate):
taken_coord = f"{x_coordinate}{y_coordinate}"
if x_coordinate and y_coordinate not in range(1,4):
return False
if taken_coord not in aval_coordinate:
return False
aval_coordinate.remove(taken_coord)
return True