2017-05-19 17 views
0

私はボードを作成しましたが、私はポーンと混同しました。ボードにポーンを挿入するにはどうすればいいですか?

| || || || || || || || | 
|P||P||P||P||P||P||P||P| 
| || || || || || || || | 
| || || || || || || || | 
| || || || || || || || | 
| || || || || || || || | 
|P||P||P||P||P||P||P||P| 
| || || || || || || || | 

しかし、途中、私はボード上のポーンを置くことを選択することができます。

board = [[(x,y) for x in range(1,9)] for y in range(1,9)] 
for k in range(len(board)): 
    print('| |' * len(board)) 

私はそのような何かを見たいですか? 座標が等しいかどうかを確認するためにdouble forループを使用する必要がありますか?

def pawn(): 
    coordinates = board[1][1] 
    return coordinates 

for i in range(len(board)): 
    for j in range(8): 
     if board[i][j] == pawn(): 
      print('|P|' * len(board)) 
     else: 
      print('| |') 
+0

です。ボード上の空白の四角形に「X」の代わりにスペースを使用すると、あなたのボードが見やすくなると思います。 – PaulMcG

+0

あなたの投稿を破壊しないでください。 – Glorfindel

+2

あなたの投稿を壊さないでください。 Stack Exchangeネットワーク上に掲載することで、SEがそのコンテンツを配布する権利(CC BY-SA 3.0ライセンス)(https://creativecommons.org/licenses/by-sa/3.0 /))。 SEのポリシーによって、どんな破壊行為も元に戻ります。この投稿とあなたのアカウントとの関連付けを解除するには、[解約リクエストの正しいルートは何ですか?](https://meta.stackoverflow.com/q/323395) –

答えて

0

それが仕事ができるような何か:

import numpy as np 
board = np.empty((8,8)).tolist() 
for k in range(len(board)): 
    if k == 1 or k ==6: 
     board[k]= ['|p|','|p|','|p|','|p|','|p|','|p|','|p|','|p|'] 
    else: 
     board[k]= ['|x|','|x|','|x|','|x|','|x|','|x|','|x|','|x|'] 
[print(''.join(b)) for b in board ] 

が、私はそれはあなたが望んでいるのかはわかりません。その場合、ボードはボードのような形の2Dマトリックスです。 チェスの場合は、白は「P」、黒は「p」が必要です。

+0

'numpyこれは?リストのリストを作成することは難しいですか? – PaulMcG

+0

私はリストのリストを作ることはここの質問の目的だとは思わない。私はスクリプトにこのモジュールをたくさん使用しています。 – ymmx

+1

'numpy'はあなたがいつも使っているので便利で便利です。問題は、新しい人物があなたの答えを見て、numpyが問題を解決するための要件であると考えるかもしれないということです。その問題については、OPにリストのリストを作成するコードがすでに含まれています。答えの最初の2行を削除するだけで、問題の主な目的を解決することができます( 'board'をOPの質問に定義されている)。 – PaulMcG

0

ポーンの最初の位置は2行目と7行目です。forループインデックスを確認し、その位置を設定できます。作品

piece = collections.namedtuple('piece', ('value', 'mark')) 
EMPTY = piece(0, '|X|') 
PAWN = piece(1, '|P|') 
pieces = {p.value: p for p in (EMPTY, PAWN)} 

を設定することがより一般的な作り

board = [[(x,y) for x in range(1,9)] for y in range(1,9)] 
pawnRows = [1, 6] # 0 based index 

for k in range(len(board)): 
    if k in pawnRows: 
     print('|P|' * len(board)) 
    else: 
     print('|X|' * len(board)) 
0

、あなたはボードの状態を覚えてarrayまたはpandas.DataFrameを使用することができます

データ定義

:ような何かあなたが好きなだけ多くの作品を定義し、さらに別の色を与えることができます

マーク付きボードを印刷この

0 1 2 3 4 5 6 7 
0 0 0 0 0 0 0 0 0 
1 0 1 0 0 0 0 0 0 
2 0 0 0 0 0 0 0 0 
3 0 0 0 0 1 0 0 0 
4 0 0 0 0 0 0 0 0 
5 0 0 0 0 0 0 0 0 
6 0 0 0 0 0 0 0 0 
7 0 0 0 0 0 0 1 0 

のようなものに駒

pawn_positions = [(1, 1), (3, 4), (7, 6)] 

for pawn in pawn_positions: 
    board.loc[pawn] = PAWN.value 

結果を設定するボード

boardsize = (8,8) 
board = pd.DataFrame(data=[[1] * boardsize[0]] * boardsize[1]) * EMPTY.value 

の定義

for row_nr, row in board.applymap(lambda x: pieces[x].mark).iterrows(): 
    print(''.join(row) + '\n') 

|X||X||X||X||X||X||X||X| 
|X||P||X||X||X||X||X||X| 
|X||X||X||X||X||X||X||X| 
|X||X||X||X||P||X||X||X| 
|X||X||X||X||X||X||X||X| 
|X||X||X||X||X||X||X||X| 
|X||X||X||X||X||X||X||X| 
|X||X||X||X||X||X||P||X|