Background

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Background

Marc Stevens
Hai, Marc hier.
 
Ik ben al een tijdje bezig geweest met verdiepen in het maken van spellen met een achtergrond en een sprite die bijvoorbeeld over het scherm beweegt.
Daar voor heb ik enige voorbeelden bestudeerd.
Maar nu vraag ik me af , hoe je nou een spel maakt waar de sprite als het ware stil staat, en de achtergrond onderdoor beweegt.
Dit zie je ook bij games van bijvoorbeeld autoracen of adventure-games waar een figuurtje door een gangen stelsel beweegt.Het figuurtje staat stil terwijl de achtergrond er achter door beweegt.
Ik heb zoiets dergelijks op een eenvoudige manier ook proberen te maken door een groot PNG bestand (kabouter) als achtergrond te gebruiken en dit met de cursor toetsen te bewegen.
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?
 
                                                                                             bij voorbaat dank,
 
                                                                                                                  Marc Stevens
 
 
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()
                         
                                                                                                                 
  

_______________________________________________
Python-nl mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/python-nl
Reply | Threaded
Open this post in threaded view
|

Re: Background

Geert Stappers
On Thu, Nov 13, 2014 at 02:29:24AM +0100, Marc Stevens wrote:

> Hai, Marc hier.
>
> Ik ben al een tijdje bezig geweest met verdiepen in het maken van
> spellen met een achtergrond en een sprite die bijvoorbeeld over het
> scherm beweegt.
> Daar voor heb ik enige voorbeelden bestudeerd.
> Maar nu vraag ik me af , hoe je nou een spel maakt waar de sprite als
> het ware stil staat, en de achtergrond onderdoor beweegt.
> Dit zie je ook bij games van bijvoorbeeld autoracen of adventure-games
> waar een figuurtje door een gangen stelsel beweegt.Het figuurtje staat
> stil terwijl de achtergrond er achter door beweegt.
> Ik heb zoiets dergelijks op een eenvoudige manier ook proberen te maken
> door een groot PNG bestand (kabouter) als achtergrond te gebruiken en
> dit met de cursor toetsen te bewegen.
> 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?
>
>                        bij voorbaat dank,
>
>                        Marc Stevens
>
>
> 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))

Goh, hadden we een keer een kabouter kunnen zien,
ziet ie niet in de bijlages  ;-)


>     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]:

Daar zou ik
      if event.key==K_ESCAPE:
verwachten. ( Nee, het is niet door mij uitgeprobeert )


>         running=False
>
> pygame.quit()
>                          



Groeten
Geert Stappers
--
Leven en laten leven
_______________________________________________
Python-nl mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/python-nl
Reply | Threaded
Open this post in threaded view
|

Re: Background

Michiel Overtoom
In reply to this post by Marc Stevens

Hoi Marc,

On Nov 13, 2014, at 02:29, Marc Stevens wrote:

> Het programma loopt in het begin al meteen vast.

Hoe openbaart zich dit 'vastlopen'? Krijg je een foutmelding? Blijft het scherm leeg? Beweegt de achtergrond niet?

Verder had ik statements als 'if event.key==K_LEFT: X=X-1' in de 'for event in pygame.event.get()' lus verwacht, maar ik kan me vergissen.

Groets,


--
"You can't actually make computers run faster, you can only make them do less." - RiderOfGiraffes

_______________________________________________
Python-nl mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/python-nl
Reply | Threaded
Open this post in threaded view
|

Re: Background

Michiel Overtoom
In reply to this post by Marc Stevens

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

_______________________________________________
Python-nl mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/python-nl