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

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日

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!