Python Forum
how can i solve this videogame error?
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
how can i solve this videogame error?
#1
THIS IS THE ERROR I AM GETTING:

Traceback (most recent call last):
File "C:\Users\usuario\Documents\abscorp\232\232.py", line 132, in <module>
newdrop()
File "C:\Users\usuario\Documents\abscorp\232\232.py", line 44, in newdrop
d = Drop1()
TypeError: 'Group' object is not callable


THIS IS MY CODE:


import pygame
import time
import sys
import random


WIDTH = 800
HEIGHT = 600
FPS = 360

WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
GRAY = (168, 169, 173)

font_name = pygame.font.match_font('arial')
pygame.init()
pygame.mixer.init()
screen=pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("where is the drop!")
clock = pygame.time.Clock()


#Load all game graphics and sounds
background = pygame.image.load("bckgrnd_3.png").convert()
background_rect = background.get_rect()
boy_1_img = pygame.image.load("boy_1_img.png").convert()
drop_img = pygame.image.load("drop_img.png").convert()
explosion_anim = {}
explosion_anim['lg'] = []
explosion_anim['sm'] = []


for i in range(3):
    filename = 'exp_{}.png'.format(i)
    img = pygame.image.load(filename).convert()
    img.set_colorkey(GRAY)
    img_lg = pygame.transform.scale(img, (75, 75))
    explosion_anim['lg'].append(img_lg)
    img_sm = pygame.transform.scale(img, (32, 32))
    explosion_anim['sm'].append(img_sm)

def newdrop():
    Drop1 = pygame.sprite.Group()
    d = Drop1()
    all_sprites.add(d)
    drop.add(d)

class Drop(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.transform.scale(drop_img, (50, 38))
        self.image.set_colorkey(BLACK)
        self.rect = self.image.get_rect()
        self.radius = int(self.rect.width * .85/ 2)
        #pygame.draw.circle(self.image, RED, self.rect.center, self.radius)
        self.rect.x = random.randrange(WIDTH - self.rect.width)
        self.rect.y = random.randrange(-100, -40)
        self.speedy = random.randrange(1, 2)
        self.speedx = random.randrange(-1, 1)

    def update(self):
        self.rect.x += self.speedx
        self.rect.y += self.speedy
        if self.rect.top > HEIGHT + 10:
            self.rect.x = random.randrange(WIDTH - self.rect.width)
            self.rect.y = random.randrange(-100, -40)
            self.speedy = random.randrange(1, 2)

class Player(pygame.sprite.Sprite):
    #sprite for the Player
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.transform.scale(boy_1_img, (50, 38))
        self.image.set_colorkey(WHITE)
        self.rect = self.image.get_rect()
        self.radius = 25
        #pygame.draw.circle(self.image, RED, self.rect.center, self.radius)
        self.rect.center = (WIDTH / 1.5, HEIGHT / 1.5)
        self.shield = 100
        self.shoot_delay = 250
        self.last_shot = pygame.time.get_ticks()

    def update(self):
        self.speedx = 0
        self.speedy = 0
        keystate = pygame.key.get_pressed()
        if keystate[pygame.K_LEFT]:
            self.speedx = -2
        if keystate[pygame.K_RIGHT]:
            self.speedx = 2
        if keystate[pygame.K_UP]:
            self.speedy = -2
        if keystate[pygame.K_DOWN]:
            self.speedy = 2
        if keystate[pygame.K_SPACE]:
            self.throw()
        self.rect.x += self.speedx
        self.rect.y += self.speedy
        if self.rect.right > WIDTH:
            self.rect.right = WIDTH
        if self.rect.left < 0:
            self.rect.left = 0
        if self.rect.top > HEIGHT:
            self.rect.top = HEIGHT
        if self.rect.bottom < 0:
            self.rect.bottom = 0
            

##    def shoot(self):
##    now = pygame.time.get_ticks()
##    if (now - self.last_shot > self.shoot_delay):
##        self.last_shot = now
##        bullet = Bullet(self.rect.centerx, self.rect.top)
##        all_sprites.add(bullet)
##        bullets.add(bullet)
##        shoot_sound.play()

##shoot_sound = pygame.mixer.Sound('pew.wav')
##expl_sounds = []
##for snd in ['expl3.wav', 'expl6.wav']:
##    expl_sounds.append(pygame.mixer.Sound(snd))
##pygame.mixer.music.load('bckgrnd_1.wav')
##pygame.mixer.music.set_volume(0.4)



all_sprites = pygame.sprite.Group()
drop = pygame.sprite.Sprite()
player=Player()
all_sprites.add(player)
for i in range(8):
    newdrop()
    
##pygame.mixer.music.play(loops=-1)

# Game Loop
score = 0
running= True
while running:   
    #keep loop running at the right speed
    clock.tick(FPS)
    #Process input (events)
    for event in pygame.event.get():
    #check for closing window
        if event.type == pygame.QUIT:
            running= False
        
    #Update
    all_sprites.update()
    
    #check to see if a drop hits bucket
    hits = pygame.sprite.spritecollide(drop, player, True, True)
    for hit in hits:
        score += 1
        ##random.choice(expl_sounds).play()
        expl = Explosion(hit.rect.center, 'lg')
        all_sprites.add(expl)
        newdrop()
    
    
    #check to see if a drop hits floor
    hits = pygame.sprite.spritecollide(bucket, drop, True, pygame.sprite.collide_circle)
    for hit in hits:
        newdrop()
        player.shield -= 10
        expl = Explosion(hit.rect.center, 'sm')
        all_sprites.add(expl)
        if player.shield <= 0:
            running = False
    #print (player.shield)

    #Draw / render
    screen.fill(BLACK)
    screen.blit(background, (0, 0))
    all_sprites.draw(screen)
    draw_text(screen, str(score), 18, WIDTH / 2, 10)
    draw_shield_bar(screen, 5, 5, player.shield)
    #*after* drawing everything, flip the display
    pygame.display.flip()

pygame.quit()
Reply


Messages In This Thread
how can i solve this videogame error? - by abscorpy - Jan-22-2018, 06:52 PM

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020