我正在尝试制作自己的游戏《战舰》(德语:Schife versenken)。
我将游戏板制作为dataframe(10x10)。船只的坐标是随机创建的。我有4种不同的船只(从5到2的长度开始)。这些船中的每一个都是一个清单。列表中的元素由随机创建的起始坐标(ship_row,ship_col)组成,并且取决于船舶是水平还是垂直,其他元素是ship_row+n或ship_col+n。
问题:船的长度可能超过了船长dataframe。我如何为这些发货清单设置边界,并且如果第一个发货清单超出边界,如何创建新的发货清单以创建循环?
这是我的示例船舶Schlachtschiff的代码:
board=[]
for n in range (10):
board.append(['O']*10)
board = pd.DataFrame(board)
g= rd.randint(1,2)
random_row(board)
random_col(board)
ship_row = random_row(board)
ship_col = random_col(board)
for Schlachtschiff in board:
if g==1:
Schlachtschiff = [(ship_row, ship_col),(ship_row, ship_col+1),(ship_row, ship_col+2),(ship_row, ship_col+3),(ship_row, ship_col+4)]
else:
Schlachtschiff= [(ship_row, ship_col),(ship_row+1, ship_col),(ship_row+2, ship_col),(ship_row+3, ship_col),(ship_row+4, ship_col)]
Run Code Online (Sandbox Code Playgroud)
我试图通过查看已创建列表的最后一个元素,使用while循环来解决该问题,但这不会停止:
while Schlachtschiff[-1] not in board:
if g==1:
Schlachtschiff = [(ship_row, ship_col),(ship_row, ship_col+1),(ship_row, ship_col+2),(ship_row, ship_col+3),(ship_row, ship_col+4)]
else:
Schlachtschiff= [(ship_row, ship_col),(ship_row+1, ship_col),(ship_row+2, ship_col),(ship_row+3, ship_col),(ship_row+4, ship_col)]
if …Run Code Online (Sandbox Code Playgroud)