私はPythonで戦艦ゲームプロジェクトを行っています。私はグリッドに配置された船を表示するには固執しています。ここでは、ユーザーの入力座標に基づいて更新されたボードを表示する私の機能があります。これはA10のような文字の形式です。ユーザーグリッドは10x10のボックスです。空のボードには "O"が印刷され、垂直の船には|横には - が付いています。すべての座標が設定された後、ボードを更新する機能は次のとおりです。ユーザ入力に基づいてPythonで異なる値でグリッドを表示
def print_updated_board(coords, direction):
board = []
for row in range(10):
board_row = []
updated = []
for c in range(ord('a'), ord('a') + BOARD_SIZE):
t = chr(c) + str(row)
board_row.append(t)
if direction == 'v':
for coord in coords:
for w in board_row:
if coord == w:
updated.append(VERTICAL_SHIP)
else:
updated.append(EMPTY)
board.append(updated)
print_board_heading()
row_num = 1
for row in board:
print(str(row_num).rjust(2) + " " + (" ".join(row)))
row_num += 1
COORDSは、座標を持つであろう、垂直方向A1に配置され、船の大きさなので、4分の大きさの一例戦艦に基づいて作成されている(A1、A2、A3、A4)。私はこのインスタンスで印刷しようとしています。
私のコードはオフになっています - グリッドは50行(10個ではなく)を誤って印刷しているようです。
これをどこで行うべきかに関するガイダンスはありがたいです。ありがとう
EDIT **************実現私はダブルループしてこれにコードを変更しました。まだ完全には動作していません(1つの場所から外れていますが)。
def print_updated_board(coords, direction):
board = []
for row in range(10):
board_row = []
updated = []
for c in range(ord('a'), ord('a') + BOARD_SIZE):
t = chr(c) + str(row)
board_row.append(t)
if direction == 'v':
for b in board_row:
if b in coords:
updated.append(VERTICAL_SHIP)
else:
updated.append(EMPTY)
board.append(updated)
print_board_heading()
row_num = 1
for row in board:
print(str(row_num).rjust(2) + " " + (" ".join(row)))
row_num += 1
OK、私は一種の決定私problem--ボード上と各船の座標上にある。上記のコードを反映するように変更 - 私の1つの問題は、船がマークから1つの変数を印刷していることです。 –