2017-01-26 22 views
-1

イムのpython 2.7とpygameのイムは、宇宙の侵略者のゲームを作るしようとしているが、イムは、このエラーを取得し、使用してそのにラインに問題があることを言ってTypeError: 'bool'オブジェクトは呼び出し可能ではありませんか?

screen.blit(font.render(str(hits),True(255,255,255)),(400,320)) 

誰かがこれは何を意味するのか、それを修正する方法を教えてもらえてください?今あなたがTrue()

しかしTrue機能を呼び出そうboolオブジェクト、関数ではなく - - それは"callable"ではありません - あなたがエラーを取得する完全なコードは、あなたがTrueの後にコンマ,を忘れてしまった

import pygame, sys, random, time, math 
from pygame.locals import * 
pygame.init() 
clock = pygame.time.Clock() 
pygame.display.set_caption("Space Invaders") 
screen = pygame.display.set_mode((640,650)) 
badguy_image = pygame.image.load("images/badguy.png").convert() 
badguy_image.set_colorkey((0,0,0)) 
fighter_image = pygame.image.load("images/fighter.png").convert() 
fighter_image.set_colorkey((255,255,255)) 
GAME_OVER = pygame.image.load("images/gameover.png").convert() 
font = pygame.font.Font(None,20) 
last_badguy_spawn_time = 0 
score = 0 
shots = 0 
hits = 0 
misses = 0 

class Badguy: 

    def __init__(self): 
     self.x = random.randint(0,570) 
     self.y = -100 
     d=(math.pi/2)*random.random()-(math.pi/4) 
     speed = random.randint(2,6) 
     self.dx=math.sin(d)*speed 
     self.dy=math.cos(d)*speed 

    def move(self):    
     self.x += self.dx 
     self.y += self.dy 

    def bounce(self): 
     if self.x < 0 or self.x > 570: 
      self.dx *= -1 

    def off_screen(self): 
     return self.y > 640 

    def touching(self,missile): 
     return (self.x+35-missile.x)**2+(self.y+22-missile.y)**2 < 1225 

    def score(self): 
     global score 
     score+=100 

    def draw(self): 
     screen.blit(badguy_image,(self.x,self.y))  

class Fighter: 
    def __init__(self): 
     self.x = 320 

    def move(self): 
     if pressed_keys[K_LEFT] and self.x > 0: 
      self.x -=3 
     if pressed_keys[K_RIGHT] and self.x < 540: 
      self.x +=3    

    def fire(self): 
     global shots 
     shots+=1 
     missiles.append(Missile(self.x+50)) 

    def hit_by(self,badguy): 
     return (
       badguy.y > 585 and 
       badguy.x > self.x - 55 and 
       badguy.x < self.x + 85 
       ) 

    def draw(self): 
     screen.blit(fighter_image,(self.x,591))    

class Missile: 
    def __init__(self,x): 
     self.x = x 
     self.y = 591 

    def move(self): 
     self.y -= 5 

    def off_screen(self): 
     return self.y < -8 

    def draw(self): 
     pygame.draw.line(screen,(255,0,0),(self.x,self.y),(self.x,self.y+8),1) 

badguys = [] 
fighter = Fighter() 
missiles = [] 

while 1: 
    clock.tick(60) 
    for event in pygame.event.get(): 
     if event.type == QUIT: 
      sys.exit() 
     if event.type == KEYDOWN and event.key == K_SPACE: 
      fighter.fire() 
    pressed_keys = pygame.key.get_pressed() 

    if time.time() - last_badguy_spawn_time > 0.5: 
     badguys.append(Badguy()) 
     last_badguy_spawn_time = time.time() 

    screen.fill((0,0,0)) 
    fighter.move() 
    fighter.draw() 

    i = 0 
    while i < len(badguys): 
     badguys[i].move() 
     badguys[i].bounce() 
     badguys[i].draw() 
     if badguys[i].off_screen(): 
      del badguys[i] 
      i -= 1 
     i += 1 

    i = 0 
    while i < len(missiles): 
     missiles[i].move() 
     missiles[i].draw() 
     if missiles[i].off_screen(): 
      del missiles[i] 
      misses += 1 
      i -= 1 
     i += 1 

    i = 0 
    while i < len(badguys): 
     j = 0 
     while j < len(missiles): 
      if badguys[i].touching(missiles[j]): 
       badguys[i].score() 
       hits += 1 
       del badguys[i] 
       del missiles[j] 
       i -= 1 
       break 
      j += 1 
     i += 1 

    screen.blit(font.render("Score: "+str(score),True,(255,255,255)),(5,5)) 

    for badguy in badguys: 
     if fighter.hit_by(badguy): 
      screen.blit(GAME_OVER,(170,200))    
      screen.blit(font.render(str(shots),True,(255,255,255)),(266,320)) 
      screen.blit(font.render(str(score),True,(255,255,255)),(266,348)) 
      screen.blit(font.render(str(hits),True(255,255,255)),(400,320)) 
      screen.blit(font.render(str(misses),True,(255,255,255)),(400,377)) 
      if shots == 0: 
       screen.blit(font.render("--",True,(255,255,255)),(400,357)) 
      else: 
       screen.blit(font.render(str((1000*hits/shots)/10.)+"%",True,(255,255,255)),(400,357))    
      while 1: 
       for event in pygame.event.get(): 
        if event.type == QUIT: 
         sys.exit() 
       pygame.display.update() 

    pygame.display.update()  
+0

あなたは忘れてしまった '真'の後に 'True'をしようとしました – furas

答えて

1

です。

+0

どうすればこのような未来のことを避けることができますか?私は何度もそのコードを見て、紛失したコンマに気付かなかった – Spoooky

+0

あなたは避けることができませんが、今はこのエラーの意味とどこに問題があるのか​​を知っています。 – furas

+1

BTW:もし 'IDE'(' PyCharm'、 'PyDev'など)を' notepad ++ 'と使用した場合、予期される問題について警告することができます。 – furas

関連する問題