[python-nl] Background
Michiel Overtoom
motoom at xs4all.nl
Thu Nov 13 09:59:09 CET 2014
Hoi Marc,
On Nov 13, 2014, at 02:29, Marc Stevens wrote:
> Het programmaatje (zie bijlage) is gemaakt van allerlei bijeen geraapte informatie uit voorbeelden en zal wel rammelen van de fouten, maar ik zie dit als een uitdaging.
> Als het niet te veel gevraagd is, het programma loopt in het begin al meteen vast. Zouden jullie mij verder willen helpen?
Er zaten nog wat meer issues in je programma. De manier waarop de events werden afgehandeld, klopte niet. De blit() functie neemt een Surface als parameter, geen filenaam van een plaatje. Het laden van het achtergrondplaatje hoeft maar één keer, buiten de gameloop. Er werd een variabele 'X' genoemd terwijl dit 'x' moest zijn, Python is case-sensitief ;-) De functie exit() werd geimporteerd maar nergens aangeroepen. Diverse PEP8 whitespace issues.
Ik heb je programma wat opgeknapt:
import pygame
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((800, 600))
background = pygame.image.load("kabouter.png")
x = y = 0
running = True
while running:
for event in pygame.event.get():
if event.type == QUIT:
running = False
elif event.type == KEYDOWN:
if event.key == K_ESCAPE:
running = False
elif event.key == K_LEFT:
x = x - 4
elif event.key == K_RIGHT:
x = x + 4
elif event.key == K_UP:
y = y - 4
elif event.key == K_DOWN:
y = y + 4
screen.blit(background, (x, y))
pygame.display.flip()
pygame.quit()
Groets,
>
> import pygame
> from pygame.locals import *
> from sys import exit
>
> pygame.init()
> screen=pygame.display.set_mode((800,600))
> background=pygame.Surface(screen.get_size())
> background.fill((250, 250, 250))
> x=1
> y=1
>
> running=True
>
> while running:
> for event in pygame.event.get():
> if event.type==QUIT:
> running=False
> background.blit("kabouter.png", (x,y))
> screen.blit(background, (0,0))
> pygame.display.flip()
> keys=pygame.key.get_pressed()
> if event.key==K_LEFT:
> X=X-1
> if event.key==K_RIGHT:
> x=x+1
> if event.key==K_UP:
> y=y-1
> if event.key==K_DOWN:
> y=y+1
> if keys[K_ESCAPE]:
> running=False
>
> pygame.quit()
--
"You can't actually make computers run faster, you can only make them do less." - RiderOfGiraffes
More information about the Python-nl
mailing list