我正在用Python制作战舰游戏,却被一段代码卡住了。我做了一个10x10网格板,玩家/计算机将放置5艘不同尺寸的飞船。船被保存在字典里。
我已经在我卡住的地方做了标记。当玩家尝试放置一艘飞船时,如果该船没有可用的位置,它会打印“无效选择”,玩家应该可以再次放置它。但是循环继续,因此跳过了放置飞船的步骤。我尝试过将函数称为“player-place-chu ships”,但是它会重新启动,并放置已经放置的飞船的副本。
我在考虑在for循环中创建一个count,并从“无效选择”之前停止的地方重新启动循环,但不确定从中启动for循环是否可行dict.项目在特定地点?
希望有一个好心的人能给我一些建议,我对python还是个新手,所以这里可能会使用不好的/非正统的代码。
代码如下:
#Dictionary for ships
ships = {'A': 5, 'B': 4, 'C': 3, 'S': 3, 'D': 2}
#Create player board
player_board = []
for player_row in range(10):
player_board.append([])
for player_col in range(10):
player_board[player_row].append('.')
#Print player board
def print_player_board(player_board):
for player_row in player_board:
print(" ".join(player_row))
def player_place_ships(player_board, ships):
for i, j in ships.items():
ori = input('Enter orientation, v or h: ')
x = int(input('Enter row: '))
y = int(input('Enter col: '))
place = x,y
placement = player_board[x][y]
if ori == 'v' and placement == '.':
for k in range(j):
player_board[x][y] = i
player_board[x+k][y] = i
elif ori == 'h' and placement == '.':
player_board[x][y] = i
player_board[x][y+k] = i
elif ori != 'v' or 'h' and placement != '.':
print('Invalid choice, please try again.') #This is where I'm stuck
player_place_ships(player_board, ships)
print_player_board(player_board)
您可以使用
while ship_not_placed
来修复您的问题或者只是用一个
while true
并从while中跳出,而不是改变ship_not_placed
(我从来都不明白这两者之间的最佳实践是什么)相关问题 更多 >
编程相关推荐