2017-12-02 123 views
-1

我想實現一個叫做Pah Tum的遊戲。 (它是如何工作的我的問題,這是不相關的。)我想在這樣一個控制檯創建一個字段:如何實現字段和象他們一樣解決國際象棋

A B C D 
1 [] [] [] [] 
2 [] [] [] [] 
3 [] [] [] [] 
4 [] [] [] [] 

我已經想通了如何打印但是: 我要定義一個函數中我可以解決特定領域和阻止他們,就像這樣:B3

A B C D 
1 [] [] [] [] 
2 [] [] [] [] 
3 [] [X][] [] 
4 [] [] [] [] 

不知怎的,我無法弄清楚如何做到這一點,而無需使用百行代碼,我打印一步一步的。

+0

你有沒有考慮嵌套列表,其中每個列表repersents行? – timgeb

+0

使用'2d'列表以及_block_field_是什麼意思? – Arman

+0

SO不像隨便的電子郵件或短信。試着正確使用資本我和收縮。 –

回答

2

您可以創建一個類,並使用__setitem__

import string 
class Board: 
    def __init__(self, width): 
     self.w = width 
     self.board = [[[] for i in range(width)] for b in range(width)] 
    def __setitem__(self, coords, val): 
     self.board[coords[0]][coords[-1]] = [val] 
    def __repr__(self): 
     return ' '+' '.join(list(string.ascii_lowercase[:self.w]))+"\n"+'\n'.join(string.ascii_lowercase[a]+' '.join(str(i) for i in b) for a, b in enumerate(self.board)) 

board = Board(4) 
board[(2, 2)] = 'X' 
print(board) 

輸出:

a b c d 
a[] [] [] [] 
b[] [] [] [] 
c[] [] ['X'] [] 
d[] [] [] []