我是Python和这个网站的新手。我希望有人可以帮我解决这个问题并澄清一些事情。我在战舰计划中遇到了这个问题。我有一个10x10网格,我想随机化我网格中3艘船的每一个的位置。我还希望在我希望它们显示时显示位置。我一直试图用其他方法模仿这个,但无济于事。
我当前的网格如下:
print(" 0 ","1 ","2 ","3 ","4 ","5 ","6 ","7 ","8 ","9","10")
symbol = " O "
row = 0
for i in range(0,11):
print(symbol*11 + " " + str(row))
row += 1
例如,当我选择显示第1,2和3号船的位置时,我希望网格看起来像这样:
O O O X O O O O O O
O O O X O O O O X O
O O O X O O O O X O
O O O X O O O O X O
O O O O O O O O X O
O O O O O O O O O O
O O X X X X O O O O
O O O O O O O O O O
O O O O O O O O O O
O O O O O O O O O O
答案 0 :(得分:2)
你做了太多的手工工作。您可以将整个网格存储为数组,并修改网格,然后打印网格。此外,您不需要在范围内指定0。无论如何,请检查一下。
grid = [['O' for i in range(10)] for j in range(10)] # use generators to create list
def print_grid():
print(" " + " ".join(str(i) for i in range(10))) # " ".join() puts the " " between each string in the list
for y in range(10):
print(str(y) + " " + " ".join(grid[y]))
print_grid()
# OUTPUT:
# 0 1 2 3 4 5 6 7 8 9
# 0 O O O O O O O O O O
# 1 O O O O O O O O O O
# 2 O O O O O O O O O O
# 3 O O O O O O O O O O
# 4 O O O O O O O O O O
# 5 O O O O O O O O O O
# 6 O O O O O O O O O O
# 7 O O O O O O O O O O
# 8 O O O O O O O O O O
# 9 O O O O O O O O O O
grid[0][3] = 'X'
grid[1][3] = 'X'
grid[2][3] = 'X'
grid[3][3] = 'X'
print_grid()
# OUTPUT:
# 0 1 2 3 4 5 6 7 8 9
# 0 O O O X O O O O O O
# 1 O O O X O O O O O O
# 2 O O O X O O O O O O
# 3 O O O X O O O O O O
# 4 O O O O O O O O O O
# 5 O O O O O O O O O O
# 6 O O O O O O O O O O
# 7 O O O O O O O O O O
# 8 O O O O O O O O O O
# 9 O O O O O O O O O O
希望这是你需要的大部分内容!
编辑:没看到随机方面,我道歉!
例如,使用random.randint(但将导入移动到文件顶部):
import random
x = random.randint(1, 8)
y = random.randint(1, 8)
if random.randint(0, 1): # flip coin to determine orientation
grid[y-1][x] = 'X'
grid[y][x] = 'X'
grid[y+1][x] = 'X'
else:
grid[y][x-1] = 'X'
grid[y][x] = 'X'
grid[y][x+1] = 'X'
要检查碰撞,您可能不是将那些3设置为X关闭,确认它们全部为O,如果不是,则重新定位位置和方向。