2017-02-10 6 views
1

In Python versuche ich ein Spiel zu erstellen, mit dem Spieler eine Position auf dem Gitter eingeben können und von ihrer Position aus wird eine Überprüfung für mehrere Instanzen durchgeführt und x Menge einer bestimmten Variable gesammelt.Condense text ohne die Einrückung zu ändern

Ich habe eine Funktion, die es dem Benutzer ermöglicht, entweder ein 8x8 Raster oder ein 12x12 zu verwenden. Um das 12x12-Raster zu generieren, habe ich direkt aus dem 8x8-Raster Code ausgeschnitten und kopiert, wobei die Ganzzahlen so geändert wurden, dass 12 Zeilen und Spalten gedruckt werden.

Wenn der Benutzer das Gitter 8x8 wählt die Code Drucke perfekt:

-------------------------- 
    1 2 3 4 5 6 7 8 
1 . . . . . . . . 
2 . . . . . . . . 
3 . . . . . . . . 
4 . . . . . . . . 
5 . . . . . . . . 
6 . . . . . . . . 
7 . . . . . . . . 
8 0 . . . . . . . 
-------------------------- 

Da jedoch der Code geschnitten wird und von dem 8x8-Gitter eingefügt, wenn das Raster als 12x12 '10 erzeugt wird, 11 und 12' Sind zwei Zahlen vorhanden, werden durch die Einrückung die unteren Zeilen im Raster falsch eingerückt.

--------------------------------------- 
    1 2 3 4 5 6 7 8 9 10 11 12 
1 . . . . . . . . . . . . 
2 . . . . . . . . . . . . 
3 . . . . . . . . . . . . 
4 . . . . . . . . . . . . 
5 . . . . . . . . . . . . 
6 . . . . . . . . . . . . 
7 . . . . . . . . . . . . 
8 . . . . . . . . . . . . 
9 . . . . . . . . . . . . 
10 . . . . . . . . . . . . 
11 . . . . . . . . . . . . 
12 0 . . . . . . . . . . . 
--------------------------------------- 

Hier ist der Beispielcode mein Gitter zur Erzeugung:

for i in range(-1+(coordinate[0])): 
    print(length," . "*12) 
    length=length+1 
print(length," . "*((coordinate[1])-1),counter," . "*(11-coordinate[1])) 
length=length+1 
for i in range(12-coordinate[0]): 
    print(length," . "*12) 
    length=length+1 

Länge der Zeilennummer bezeichnet, die als 1 beginnt, und 1 wird jede Schleife so dass die neue Zeilennummer Drucke hinzugefügt.

Ich frage mich, ob es eine schnelle Lösung gab, um zum Beispiel die Zeilennummern zu verkleinern, damit sie als eine Zeile passen; Eine solche Lösung wäre funktional. Irgendeine Idee, wie ich diesen Einschnitt schnell beheben könnte, wäre von großem Nutzen. Ich bin ein relativ neues Poster, also für jede Information, die ich vielleicht verpasst habe, schreiben Sie mir einfach.

+0

Bitte korrigieren Sie Ihre Einbuchtung. – Harrison

+0

Beachten Sie, dass die Methode 'str.format' Ihnen helfen kann, Zeilenköpfe mit fester Breite zu erstellen. – jonrsharpe

Antwort

0

Die kurze Antwort ist str.format() mit einer angegebenen Breite zu verwenden. Zum Beispiel:

>>> for n in (1, 18, 100): 
...  print '---|{:>3}|---'.format(n) # 3 is the width, > is to right justify 
... 
---| 1|--- 
---| 18|--- 
---|100|--- 

schrieb ich eine kurze Klasse das Raster zu kapseln:

class SquareGrid(object): 
    def __init__(self, size, empty_spot='.'): 
     self._size = size 
     self._empty_spot = empty_spot 
     self._grid = [[empty_spot for _ in range(size)] for __ in range(size)] 

    def set_marker(self, row, col, marker): 
     self._grid[row-1][col-1] = marker 

    def clear_marker(self, row, col): 
     self._grid[row-1][col-1] = self._empty_spot 

    def display(self): 
     label_width = len(str(self._size)) 
     label_format = '{{:>{}}}'.format(label_width) 
     labels = [label_format.format(i+1) for i in range(self._size)] 
     print(' ' * (label_width), ' '.join(labels)) 
     for label, row in zip(labels, self._grid): 
      print(label, ' '.join(label_format.format(marker) for marker in row)) 

Hier in Aktion:

>>> grid = SquareGrid(15) 
>>> grid.set_marker(15, 15, "x") 
>>> grid.set_marker(2, 8, "o") 
>>> grid.set_marker(13, 3, "x") 
>>> grid.set_marker(3, 10, "o") 
>>> grid.display() 
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 
1 . . . . . . . . . . . . . . . 
2 . . . . . . . o . . . . . . . 
3 . . . . . . . . . o . . . . . 
4 . . . . . . . . . . . . . . . 
5 . . . . . . . . . . . . . . . 
6 . . . . . . . . . . . . . . . 
7 . . . . . . . . . . . . . . . 
8 . . . . . . . . . . . . . . . 
9 . . . . . . . . . . . . . . . 
10 . . . . . . . . . . . . . . . 
11 . . . . . . . . . . . . . . . 
12 . . . . . . . . . . . . . . . 
13 . . x . . . . . . . . . . . . 
14 . . . . . . . . . . . . . . . 
15 . . . . . . . . . . . . . . x 
Verwandte Themen