2017-02-01 19 views
0

У меня были проблемы с прозрачностью с использованием pytmx в проекте, над которым я работал, но он довольно длинный и не написан очень хорошо. Поэтому я попытался сделать меньшую версию, которая только что сделала tiledmap (этот пост), но я получаю эту ошибку.Объект TypeError 'module' не является вызываемым

EDIT:

Traceback (most recent call last): 
    File "E:/advcomp/testing/main.py", line 34, in <module> 
    playGame.gameLoop() 
    File "E:/advcomp/testing/main.py", line 21, in gameLoop 
    self.loadMap() 
    File "E:/advcomp/testing/main.py", line 30, in loadMap 
    self.map_img = self.map.makeSurface() 
    File "E:\advcomp\testing\loading.py", line 19, in makeSurface 
    tiledSurface = pygame.surface((self.mapWidth, self.mapWidth)) 
TypeError: 'module' object is not callable 

main.py

import pygame 
from settings import * 
from loading import * 

class game(): 
    def __init__(self): 
     self.screen = pygame.display.set_mode((displayWidth, displayHeight)) 
     pygame.display.set_caption(title) 
     self.clock = pygame.time.Clock() 
     self.gameRunning = True 

    def loop(self): 
     for event in pygame.event.get(): 
      if event.type == pygame.QUIT: 
       self.gameRunning = False 

    def gameLoop(self): 
     self.clock.tick(fps) 
     self.loop() 
     self.loadMap() 
     self.editScreen() 

    def editScreen(self): 
     self.screen.blit(self.map_img, (0,0)) 
     pygame.display.update() 

    def loadMap(self): 
     self.map = tiledMap() 
     self.map_img = self.map.makeSurface() 

playGame = game() 
while playGame.gameRunning == True: 
    playGame.gameLoop() 

loading.py

import pygame 
import pytmx 

pygame.init() 

class tiledMap(): 
    def __init__(self): 
     self.gameMap = pytmx.load_pygame("maps\_testingMap.tmx") 
     self.mapWidth = self.gameMap.width * self.gameMap.tilewidth 
     self.mapHeight = self.gameMap.height * self.gameMap.tilewidth 

    def render(self, surface): 
     for layer in self.gameMap.visible_layers: 
      for x,y,gid in layer: 
       tile = pytmx.get_tile_image_by_gid(gid) 
       surface.blit(tile, (x * self.gameMap.tilewidth, y * self.gameMap.tileheight)) 

    def makeSurface(self): 
     tiledSurface = pygame.surface((self.mapWidth, self.mapWidth)) 
     self.render(tiledSurface) 
     return tiledSurface 
+1

Опубликовать полное сообщение об ошибке, это простая ошибка, но мы не можем помочь, если мы не знаем, какая строка вызвала это. –

+0

Можете ли вы опубликовать все сообщение об ошибке? – Hans

+0

Хорошо, я добавил полное сообщение об ошибке – CustomerSupport

ответ

0
def makeSurface(self): 
    tiledSurface = pygame.Surface((self.mapWidth, self.mapWidth)) 
    self.render(tiledSurface) 
    return tiledSurface 

Примечание Я изменил капитализацию второй линии выше. pygame.Surface - это класс, который вы ищете, pygame.surface - это не класс.

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