2017-12-02 1 views
-1

Ich versuche, ein Spiel namens Pah Tum zu implementieren. (Es ist nicht relevant, wie es für mein Problem funktioniert.) Ich habe ein Feld in einer Konsole wie folgt erstellen möchten:Wie Felder zu implementieren und sie wie Schach zu adressieren

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

ich bereits herausgefunden, wie das drucken, aber: Ich möchte eine Funktion definieren, in denen ich kann bestimmte Felder Adresse und blockieren sie, wie folgt aus: B3

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

Irgendwie kann ich nicht herausfinden, wie man das macht, ohne hundert Zeilen Code mit dem ich diesen Schritt für Schritt drucken.

+0

Haben Sie verschachtelte Listen betrachtet, wobei jede Liste eine Reihe repersents? – timgeb

+0

Verwenden Sie eine '2d' Liste und was meinen Sie mit _block a field_? – Arman

+0

SO ist nicht wie Casual E-Mail oder SMS. Versuchen Sie, Kapital I und Kontraktionen richtig zu verwenden. –

Antwort

2

Sie können eine Klasse erstellen und __setitem__ verwenden:

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) 

Ausgang:

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