[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] Error On Pygame Simple Game



Your indentation was wrong--Python is whitespace sensitive, so you've got to be careful. I recommend getting something like Emacs, which is free, and "understands" Python, so that pressing tab will cycle through the possible indentations. Here's the fixed version:
import sys, pygame
pygame.init()

size = width, height = 320, 240
speed = [2, 2]
black = 0, 0, 0

screen = pygame.display.set_mode(size)

ball = pygame.image.load("ball.bmp")
ballrect = ball.get_rect()

while 1:
       for event in pygame.event.get():
           if event.type == pygame.QUIT: sys.exit()

   ballrect = ballrect.move(speed)
   if ball.rect.left < 0 or ball.rect.right > width:
       speed[0] = -speed[0]
   if ball.rect.top < 0 or ball.rect.bottom > height:
       speed[1] = -speed[1]

   screen.fill(black)
   screen.blit(ball, ball.rect)
   pygame.display.flip()

Also, I don't think using the ballrect variable works, you just have to do ball.rect directly, unless at the end of every update you say 'ball.rect = ballrect'.
Good luck with pygame!


RR4CLB wrote:
Hi!

    I am just getting started in Pygame and the simple program below dies on line 4. I suspect that the command 3D is the problem. So, is this format/syntax all wrong for learning pygame? Or is something not declared?

Simple Program:
import sys, pygame
pygame.init()

size = width, height = 320, 240
speed = [2, 2]
black = 0, 0, 0

screen = pygame.display.set_mode(size)

ball = pygame.image.load("ball.bmp")
ballrect = ball.get_rect()

while 1:
        for event in pygame.event.get():
            if event.type == pygame.QUIT: sys.exit()

    ballrect = ballrect.move(speed)
    if ballrect.left < 0 or ballrect.right > width:
    speed[0] = -speed[0]
    if ballrect.top < 0 or ballrect.bottom > height:
       speed[1] = -speed[1]

    screen.fill(black)
    screen.blit(ball, ballrect)
    pygame.display.flip()