gpt4 book ai didi

python - 在网格中生成随机 X,Y 坐标

转载 作者:行者123 更新时间:2023-12-01 04:21:05 24 4
gpt4 key购买 nike

我对 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。无论如何,请检查一下。

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,如果不是,则重新滚动位置和方向。

关于python - 在网格中生成随机 X,Y 坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33690800/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com