2017-01-12 3 views
-1

Ich führe eine Funktion aus, die eine Tafel mit leeren Quadraten erzeugt, dargestellt durch '. 'und der Spieler wird durch eine' 0 'dargestellt.Nummerierung von Zeilen und Spalten in einem Raster/einer Tafel

Ich möchte die Zeilen und Spalten nummerieren, um eine Koordinate darzustellen, die der Benutzer bei Eingabeaufforderung eingeben kann. Dies ist das Endergebnis ich im Sinn hatte:

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

Ich denke, es gibt eine enumerate-Funktion, die dabei helfen könnte, ich versuche nur, die Hilfe benötigen, sie umzusetzen.

Als Referenz ist hier die Funktion verwendet, um das Raster zu erzeugen:

def drawgrid(win,lose,counter,coordinate): 
    for i in range(-1+(coordinate[0])): 
      print(" . "*8) 
    print(" . "*((coordinate[1])-1),counter," . "*(7-coordinate[1])) 
    for i in range(8-coordinate[0]): 
     print(" . "*8) 
+0

Können Sie Ihren Code zeigen? Ich nehme an, Sie verwenden ein Array, würden die Indizes für jeden Raum arbeiten? – newGuy

+0

Derzeit wird das Raster mit einer for-Schleife generiert, die die Leerzeichen bis zur Zeile vor dem Player druckt. Der Code wird dann eine bestimmte Zeile für den Player-Zähler drucken, um sie richtig zu platzieren. Es wird dann die verbleibenden Leerzeilen ausarbeiten, die benötigt werden, um das Raster neu zu zeichnen. Ich bearbeite den Post, um die Funktion für die Generierung zu verwenden. – pumped

+0

Erstellen Sie zunächst eine zweidimensionale Liste, um die Board-Informationen zu behalten - dh. 'board = [[". ",". "], [". ",". "]]] - und dann können Sie über' enumerate 'nachdenken – furas

Antwort

0

hier ist eine einfache Art und Weise ein ‚Brett‘ zu machen und dann ausdrucken.

w,h = 8,8 

board =[['.' for x in range(w)] for y in range(h)] 
print ' ', 
for i in range(w): 
    print i, 
print '' 
for i in range(h): 
    print i, 
    for j in range(w): 
     print board[i][j], 
    print '' 

Ergebnisse

0 1 2 3 4 5 6 7 
0 . . . . . . . . 
1 . . . . . . . . 
2 . . . . . . . . 
3 . . . . . . . . 
4 . . . . . . . . 
5 . . . . . . . . 
6 . . . . . . . . 
7 . . . . . . . . 
[Finished in 0.2s] 
0

Scheint, wie Sie eine Matrix wollen. Möchten Sie, dass die Labels für den Player sichtbar oder nur für das Programm zugänglich sind?

Hier ist ein kleines Demo-Programm, das sowohl tut

class Cell: 
    """ 
    :param x: x-axis location 
    :param y: y-axis location 
    """ 
    def __init__(self, x, y): 
     self.x = int(x) 
     self.y = int(y) 
     self.visual = "." 

    def __str__(self): 
     return self.visual 

class Board: 

    def __init__(self, x=10, y=10, show_labels=False): 
     """ 
     :param x: How many columns the board uses 
     :param y: How many rows the board uses 
     :param show_labels: Display labels to the player 
     """ 

     self.x = x 
     self.y = y 
     self.show_labels = show_labels 
     self.board = {} 

     self.generate_board() 

    def generate_board(self): 
     for y in range(0, self.y): 

      # Add the key X to the board dictionary 
      self.board[y] = [] 

      for x in range(0, self.x): 
       # Make a cell @ the current x, y and add it to the board 
       cell = Cell(x, y) 
       self.board[y].append(cell) 

    def show_board(self): 

     for key, cells in self.board.iteritems(): 

      # Add the X Labels 
      if self.show_labels: 
       if key == 0: 
        x_label = [] 
        for cell in self.board[key]: 
         x_label.append(str(cell.x + 1)) 
        print "".join(x_label) 

      row = [] 
      for cell in cells: 
       row.append(str(cell)) 

      # Add the Y labels 
      if self.show_labels: 
       row.append(str(cell.y + 1)) 

      print "".join(row) 

    def set_player(self, x, y): 
     self.board[y][x].visual = "0" 

b = Board(5, 5, True) 
b.set_player(2, 2) 
b.show_board() 

Ausgang für 5x5

12345 
.....1 
.....2 
..0..3 
.....4 
.....5 

Ausgang für 10x8

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