Объект «модуль» TypeError не вызывается

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

РЕДАКТИРОВАТЬ:

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()

загрузка.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

person CustomerSupport    schedule 01.02.2017    source источник
comment
Опубликуйте полное сообщение об ошибке, это простая ошибка, но мы не сможем помочь, если не знаем, какая строка ее вызвала.   -  person Steven Summers    schedule 01.02.2017
comment
Можете ли вы опубликовать все сообщение об ошибке?   -  person Hans    schedule 01.02.2017
comment
Хорошо, я добавил полное сообщение об ошибке   -  person CustomerSupport    schedule 01.02.2017
comment
Проверьте pygame.surface.   -  person Steven Summers    schedule 01.02.2017
comment
Вопросы капитализации.   -  person user2357112 supports Monica    schedule 01.02.2017
comment
Это очень хороший подход к решению проблемы! Вы создаете небольшую программу, которая пытается воссоздать возникшую проблему, что значительно упрощает и ускоряет отладку! Это называется минимально воспроизводимым примером и очень важно для stackoverflow. Единственная досадная вещь, с которой вы столкнулись, это то, что у pygame есть модуль pygame.surface и класс pygame.Surface. Просто помните, что классы всегда должны начинаться с заглавных букв (за очень немногими исключениями), например MyClass или Game, чтобы вы могли легко определить, что такое класс, а что модуль/функция/переменная.   -  person Ted Klein Bergman    schedule 01.02.2017


Ответы (1)


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

Обратите внимание, что я изменил заглавные буквы во второй строке выше. pygame.Surface — это класс, который вы ищете, pygame.surface — это не класс.

person Douglas    schedule 01.02.2017