2014-08-30 2 views
0

Я создаю игру с pygame, и я использую ConfigParser для разбора различных вещей для фрагментов карты. Но когда я доберусь до той части, где яPythons ConfigParser, читающий мой файл как список

parse.read(filename) 

Он выдает эту ошибку

self.level = self.config.get("level","map") 
    AttributeError: 'list' object has no attribute 'get' 

Я угадывание parse.read(filename) возвратил список вместо предполагаемого объекта. Вот мой код, я полагаю. Я искал google, но не мог найти ничего связанного с этим.

import pygame 
import ConfigParser 

parse = ConfigParser.ConfigParser() 

class MakeLevel(): 
    def MapMake(self,spriteList,filename): 
     self.config = parse.read(filename) 
     self.level = self.config.get("level","map") 
     self.LegendDict = self.config.get("dictionary") 
     self.Proper = [] 
     self.newTile = None 
     self.x = 0 
     self.y += 50 
     #Get propper legend stats 
     for items in LegendDict: 
      for row in level: 
       for col in row: 
        if col == items: 
         #LegendDict[items] 
         self.image = self.config.get(items, "image") 
         self.newTile = MapTile(self.image,self.x,self.y) 
         return spriteList.add(self.newTile) 
       x += 50 
      y += 50 
      x = 0 


class MapTile(pygame.sprite.Sprite): 
    def __init__(self,image,x,y): 
     pygame.sprite.Sprite.__init__(self) 
     self.image = pygame.image.load(image) 
     self.rect = Rect(x, y, 32, 32) 


class Controller(): 
    def __init__(self): 
     pass 

    def Keys(self): 
     for event in pygame.event.get(): 
      if event.type == pygame.KEYDOWN: 
       if event.key == pygame.K_a: 
        return 'a' 
       if event.key == pygame.K_d: 
        return 'd' 

      if event.type == pygame.KEYUP: 
       if event.key == pygame.K_a: 
        return 'a up' 
       if event.key == pygame.K_d: 
        return 'd up' 

AllSprites = pygame.sprite.Group() 

makeLevel = MakeLevel() 

makeLevel.MapMake(AllSprites,"level1.ini") 

AllSprites.draw() 

Я также попытался открыть файл заранее, и он все еще не работает.

mapFile = open("level1.ini") 
makeLevel.MapMake(AllSprites, mapFile) 

Я убедился, что файл level1.ini находится в той же папке, что и файл main.py. Надеюсь, проблема не такая очевидная.

ответ

1

ConfigParser.read возвращает список успешно обработанных имен файлов, поэтому в вашем примере self.config - это список имен файлов - вероятный ['level1.ini']. После синтаксического анализа вы, вероятно, захотите .get из анализатора. Нечто похожее на это:

def MapMake(self,spriteList,filename): 
     parse.read(filename) 
     self.level = parse.get("level", "map") 
+0

О, ладно, это работает. Спасибо! – 2014-08-30 05:11:34

Смежные вопросы