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

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条回答 默认 最新

  • ash062 2022-03-14 20:44
    关注

    这不是很明显了吗,字典取值是用[]而非(),所以71行应该是

    self.image = self.images[self.direction]
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月22日
  • 已采纳回答 3月14日
  • 创建了问题 3月14日

悬赏问题

  • ¥15 java代码写在记事本上后在cmd上运行时无报错但又没生成文件
  • ¥15 关于#python#的问题:在跑ldsc数据整理的时候一直抱这种错误,要么--out识别不了参数,要么--merge-alleles识别不了参数(操作系统-linux)
  • ¥15 PPOCRLabel
  • ¥15 混合键合键合机对准标识
  • ¥100 现在不懂的是如何将当前的相机中的照片,作为纹理贴图,映射到扫描出的模型上
  • ¥15 魔霸ROG7 pro,win11.息屏后会显示黑屏,如图,如何解决?(关键词-重新启动)
  • ¥15 有没有人知道这是哪里出了问题啊?要怎么改呀?
  • ¥200 C++表格文件处理-悬赏
  • ¥15 Windows Server2016本地登录失败
  • ¥15 复合卡卡号轨道写入芯片卡