2014-04-28 6 views
0

J'ai deux tableaux 2D, contenant chacun des informations qui affiche une couche:Stockage des tableaux 2D dans un tableau 2D - Python

layer0 = [[info], [info]] 
layer1 = [[info], [info]] 

je voudrais contenir ces deux tableaux 2D, dans un autre tableau:

map = [[layer0], [layer1]] 

Cependant, mon programme n'affichera pas les tuiles correctement. Ma question est: Est-il possible de stocker des tableaux 2D, dans un autre tableau 2D? Merci.

J'ai une certaine boucle système pour itérer à travers lesdits réseaux et l'affichage des tuiles correspondant au contenu du tableau:

for array in maplayer: 
      for tile in array: 
       if tile == 0: 
        screen.blit(self.tile_dict[0], (self.tileX, self.tileY)) 
        self.tileX = self.tileX+16 
       if tile == 1: 
        screen.blit(self.tile_dict[1], (self.tileX, self.tileY)) 
        self.tileX = self.tileX+16 
      self.tileX = self.cameraX 
      self.tileY += 16 

J'ai essayé d'ajouter un autre simple boucle, à parcourir le tableau de carte réelle, mais PyGame affiche un écran vide:

for maplayer in map: 
     for array in maplayer: 
      for tile in array: 
       if tile == 0: 
        screen.blit(self.tile_dict[0], (self.tileX, self.tileY)) 
        self.tileX = self.tileX+16 
       if tile == 1: 
        screen.blit(self.tile_dict[1], (self.tileX, self.tileY)) 
        self.tileX = self.tileX+16 
      self.tileX = self.cameraX 
      self.tileY += 16 

Voici la méthode complète:

def LoadMap(self, map): 
    self.tileX = self.cameraX 
    self.tileY = self.cameraY 
    for maplayer in map: 
     for array in maplayer: 
      for tile in array: 
       if tile == 0: 
        screen.blit(self.tile_dict[0], (self.tileX, self.tileY)) 
        self.tileX = self.tileX+16 
       if tile == 1: 
        screen.blit(self.tile_dict[1], (self.tileX, self.tileY)) 
        self.tileX = self.tileX+16 
      self.tileX = self.cameraX 
      self.tileY += 16 

Merci.

+0

À quels carreaux faites-vous référence? Comment essayez-vous d'afficher ces choses? Qu'est-ce qui se passe, et en quoi est-ce différent de ce que vous attendez? Mais réponse rapide, oui il est possible de stocker des tableaux 2D dans des tableaux 2D. Exemple: [[[[1,2] [3,4]]]] – FrobberOfBits

+0

Hey FrobberOfBits, j'ai édité la question pour être plus précis. :) – FrigidDev

Répondre

1

je l'ai fait la même chose avec la lecture des tableaux 2D et ne peut pas vraiment voir pourquoi vous avez besoin d'avoir le tableau à l'intérieur d'un autre .. J'ai utilisé ce code pour créer le tableau à partir d'un fichier:

gameMap = [list(row.rstrip('\n')) for row in open('Room 1.txt')] 

Alors ce pour le lire:

for i in range(0, len(gameMap)): 

    for x in range(0, len(gameMap[i])): 
     xC = x * 30 
     y = i * 30 

     if gameMap[i][x] == "*": 
      screen.blit(wallImage, (xC, y)) 

     elif gameMap[i][x] == ".": 
      screen.blit(floorImage, (xC, y)) 

     elif gameMap[i][x] == "+": 

      if playerDirection == "up" or playerDirection == "": 
       screen.blit(playerForwardImage, (xC, y)) 

      elif playerDirection == "right": 
       screen.blit(playerRightImage, (xC, y)) 

      elif playerDirection == "left": 
       screen.blit(playerLeftImage, (xC, y)) 

      elif playerDirection == "down": 
       screen.blit(playerDownImage, (xC, y)) 

     elif gameMap[i][x] == "#": 
      pygame.draw.rect(screen, black, (xC, y, 30, 30)) 

     elif gameMap[i][x] == "=": 
      pygame.draw.rect(screen, red, (xC, y, 30, 30)) 

espoir qui aide, je suis un peu confus au sujet de la raison pour laquelle vous avez besoin même de le mettre dans un autre tableau.

+0

Vous savez, vous avez raison, je n'ai pas besoin de l'avoir en 2D, je ne sais pas pourquoi je l'ai fait ... – FrigidDev

+0

C'est cool. Heureux d'aider. Vous êtes d'accord pour en créer un et le lire? – Andy

+0

Oui, ce n'est pas un problème;), merci – FrigidDev