bilishikaoshi
2022-03-14 20:26
采纳率: 100%
浏览 93
已结题

pygame,TypeError: 'dict' object is not callable

问题遇到的现象

TypeError: 'dict' object is not callable
“dict”对象不可调用

问题相关代码。
import pygame
击杀字的颜色red=pygame.Color(255,0,0)
class Gamesubject():  # Gamesubject=游戏主体
    Window=None
    SCREEN_WIDTH = 800
    SCREEN_HEIGHT = 500
    #游戏主窗口
    #创建我方坦克
    TANK_P1 = None

    def __init__(self):
        pass
    def Startgame(self):  # Startgame=开始游戏
            pygame.display.init()
            Gamesubject.Window = pygame.display.set_mode([Gamesubject.SCREEN_WIDTH, Gamesubject.SCREEN_HEIGHT])
            #创建窗口并加载
            Gamesubject.TANK_P1 = Tank(250,500)
            #创建我方坦克
            pygame.display.set_caption('坦克大战v1.0') 
            # 设置游戏窗口标题
            while True:
                #于循环中完成事件的获取
                self.getEvent()
                #绘制的文字粘贴到窗口中
                Gamesubject.Window.blit(self.getTextSurface('剩余敌方坦克%d辆' % 5), (5, 5))
                #将我方坦克加载到窗口中
                Gamesubject.TANK_P1.DisplayTank()
                pygame.display.update()
    def getEvent(self):#获取鼠标,键盘事件
        #获取所有事件
        eventList =pygame.event.get()
        #对所有事件进行处理
        for event in eventList:
            if event.type == pygame.QUIT:#判断退出键
                self.Endgame()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    print('坦克向左移动一步')
                elif event.key == pygame.K_RIGHT:
                    print('坦克向右移动一步')
                elif event.key == pygame.K_UP:
                    print('坦克向上移动一步')
                elif event.key == pygame.K_DOWN:
                    print('坦克向下移动一步')
                elif event.key == pygame.K_SPACE:
                    print('发射子弹')
    #绘制左上角文字
    def getTextSurface(self,text):
        pygame.font.init()
        #fontList = pygame.font.get_fonts()
        #print(fontList)
        font = pygame.font.SysFont('kaiti',18)
        textSureface = font.render(text, True, 击杀字的颜色red)
        return textSureface

    #开始游戏方法
    def Endgame(self):  # Endgame=结束游戏
        print('谢谢游玩')
        exit()#结束python解释器
    #结束游戏方法
class Tank():#Tank=坦克
    def __init__(self,left, top):
        self.images = {
            'U': pygame.image.load('image\p1tankU.gif'),
            'D': pygame.image.load('image\p1tankD.gif'),
            'L': pygame.image.load('image\p1tankL.gif'),
            'R': pygame.image.load('image\p1tankR.gif')

        }
        self.direction = 'U'
        self.image = self.images(self.direction)
        #坦克所在的区域
        self.rect = self.image.get_rect()
        #指导坦克初始化位置 分别距x,y轴的位置
        self.rect.left = left
        self.rect.top = top

    def move(self):  # move=移动
        pass
    #坦克的移动
    def shot(self):#shot=射击
        pass
    #坦克的射击
    def DisplayTank():# Display=展示
        self.image = self.images[self.direction]
    #1.重新设置坦克图片 
        Gamesubject.Window.blit(self.image,self.rect)
    #2.将坦克加入到窗口中
    #展示坦克(将坦克这个图片显示到窗口中)
class MyTank(Tank):# MyTank=我方坦克
    def __init__(self):
        pass
class Enemy(Tank):#Enemy=敌方坦克
    def __init__(self):
        pass
class bullet():#bullet=子弹
    def __init__(self,):
        pass
    def move(self):# move=移动
        pass
    #子弹的移动
    def Displaybullet():  # Display=展示
        pass
    #展示子弹
class Blasteffect():#Blasteffect=爆炸效果
    def __init__(self):
        pass
    def DisplayBlasteffect():  # Display=展示
        pass
    #展示爆炸效果
class wall():#wall=墙壁
    def __init__(self):
        pass
    def Displaywall():  # Display=展示
        pass
    #展示墙壁
class music():#music=音效
    def __init__(self):
        pass
    def play():
        pass

    #开始播放音乐
Gamesubject().Startgame()

运行结果及报错内容

img

1条回答 默认 最新

相关推荐 更多相似问题