2017-07-25 6 views
2

何か間違って投稿すると、これは私が質問を投稿した初めてのことです。リストに複数の値を挿入するPython/Battleship

私は戦艦ゲームをPythonで作成しており、コードの特定の部分に固執しています。私は1のサイズの船を追加することができますが、1より大きい船は追加しません。私は10x10のグリッドボードのリストと船を保持するための辞書と船のサイズを使用しました。私はこれを解決する方法を理解するのを助けることができるかもしれない親切な魂がありますか?ここに私のコードは、これまでのところです:

def comp_place_ship(comp_board): 
    ships = {"A": 4, "B": 3, "C": 2, "S": 2, "D": 1} 
    for i, j in ships.items(): 
     x = random.randint(0,9) 
     y = random.randint(0,9) 
     place = x,y 
     if place != 0: 
      print(place) 
      comp_board[x][y] = i 
      comp_board[x+j][y] = i #THIS IS WHERE I'M STUCK 
      print('The computer has placed ship: ', i) 

comp_place_ship(comp_board) 
print("--------------------------------------------") 
print("--------------------------------------------") 
print_comp_board(comp_board) 

編集:あなたは私が何を意味するか知っているので、あなたに出力を表示するために役立つかもしれない:This is the output

私はまた、「A」ではなく0にマークされた領域を希望します。

+0

それがエラーを投げていますか? 'x + j> 9'のときは常にインデックスを外してしまうようです。これが起こらないようにする必要があります。あなたの船はすべて同じ向きに置かれているように見えますが、これはあなたが望むものであってもなくてもかまいません。 – dashiell

+0

'place!= 0'は決して'偽 'になりません(言い換えれば、' place'は決して '0'にならないでしょう)。 – DeepSpace

+0

コメントありがとうございます。それはまだエラーを投げているわけではありませんが、リスト/ボードはどのようにしたいですか。 exのために挿入されません。 4 "A"がA列、A列、0,0、A(それが意味をなさない場合)質問を編集して出力を表示します。私はオリエンテーションのコードをまだ追加していない。 – Tinadark

答えて

0

これは私が持っているものです:

from pprint import pprint 
import random 

comp_board = []*10 
for i in xrange(10): 
    comp_board.append(['0']*10) 

def comp_place_ship(comp_board): 
    ships = {"A": 4, "B": 3, "C": 2, "S": 2, "D": 1} 
    for i, j in ships.items(): 
     x = random.randint(0,9-j) # fix the index error 
     y = random.randint(0,9) 
     place = x,y 
     print(place) 
     for k in range(j): # you alter a variable number of cells based on the length of the ship 
      comp_board[x][y] = i 
      comp_board[x+k][y] = i 
      print('The computer has placed ship: ', i) 

comp_place_ship(comp_board) 
pprint(comp_board) 
+0

soooたくさん@dashellありがとう!これはまさに私が残りのことをする方法を理解するために必要なものです。どのような種類のモジュールがpprintですか?それが必要なのか、それとも十分に印刷されているのかこれは学校プロジェクトのためのもので、さまざまなモジュールの使用を正当化する必要があります。 – Tinadark

+0

pprintは、リストや辞書を印刷するのがとても素敵な機能です。私はあなたの 'print_comp_board'関数を持っていなかったので私はそれを使用していました – dashiell

+0

これをクリアしていただきありがとうございます:) print_comp_board関数を追加するのを忘れました。ところで、船を重複させないようにする方法はありますか? if文を次のように試してみました:if comp_board [x + k] [y] == '0'(空のセルの標準出力)しかし、それはうまくいかなかった。重複していることもあります。 – Tinadark

関連する問題