我正在尝试设计一种基本的战舰风格游戏,船只在5x5板上占用2个空间。
我正在随机生成其中一个坐标并尝试随机生成第二个坐标,使其位于最后一个数字的1个空格内。这是我的代码
coordinate1x = random.randint(0,4)
coordinate1y = random.randint(0,4)
coordinate1 = [coordinate1x, coordinate1y]
coordinate2x = random.randint(coordinate1x, coordinate1x + 1)
coordinate2y = random.randint(coordinate1y, coordinate1y + 1)
coordinate2 = [coordinate2x, coordinate2y]
battleship_location = [coordinate1, coordinate2]
我很难找到获得正确数字的逻辑。
任何帮助都非常适合
答案 0 :(得分:0)
有两个决定:
船的方向可以是:
[ ][ ]
或:
[ ]
[ ]
两者中的左/最顶部是在第二选择中选择的单元格。为了确保您不会超出边界,可以为第一个单元格选择的范围对于水平船舶是这样的(Y
可以选择,N
不是):< / p>
Y Y Y Y N
Y Y Y Y N
Y Y Y Y N
Y Y Y Y N
Y Y Y Y N
对于垂直船舶:
Y Y Y Y Y
Y Y Y Y Y
Y Y Y Y Y
Y Y Y Y Y
N N N N N
以下是建议的代码:
# choose whether to place the ship vertically or not
is_vertical = random.randint(0,1)
# choose the first cell from a range that depends on the chosen direction
cell1 = [random.randint(0, 3+is_vertical), random.randint(0,4-is_vertical)]
# copy the coordinates
cell2 = cell1[:]
# add 1 to the x or y coordinate, depending on the chosen direction
cell2[is_vertical] += 1
battleship_location = [cell1, cell2]
print(battleship_location)