Creació de jocs amb PyBadge

Programació Dades pràctiques     Recursos CITCEA
Tutorial Exemples Projectes   Inici

Un sprite en moviment

El l'exemple de l'sprite en moviment feiem servir quatre imatges per fer l'efecte de rotació; però la biblioteca stage permet fer rodar els sprites d'una manera senzilla, sense necessitat de generar les quatre imatges.

Ara ferem servir el fitxer bloc1.bmp que només conté dues imatges, com es mostra a continuació:

Sprites

La funció set_frame admet un segon paràmetre, amb el qual podem indicar si la imatge es mostra tal com està o bé girada d'alguna manera. La taula següent indica les opcions possibles:

Només rotació       Rotació i imatge especular
Paràmetre Rotació       Paràmetre Rotació
0 Sense rotació 4 Sense rotació
1 90° horari 5 90° horari
2 180° 6 180°
3 90° antihorari 7 90° antihorari

El següent programa fa el mateix que el d'l'sprite en moviment però canviant l'angle en el que es mostra la segona imatge del fitxer.

import ugame
import stage
banc = stage.Bank.from_bmp16("bloc1.bmp")
fons = stage.Grid(banc, 10, 8)  # 16 * 10 = 160
                                # 16 * 8 = 128
bloc = stage.Sprite(banc, 1, 5, 5)  # Inici a (5, 5)
joc = stage.Stage(ugame.display, 12)
joc.layers = [bloc, fons]
joc.render_block()
incx = 2
incy = 2
gir = 0
while True:
    bloc.update()
    gir = gir + 1
    if gir > 4:
        gir = 0
    bloc.set_frame(1, gir)
    bloc.move(bloc.x + incx, bloc.y + incy)
    if not 0 < bloc.x < 144:  # 160 - 16 = 144
        incx = -incx
    if not 0 < bloc.y < 112:  # 128 - 16 = 112
        incy = -incy
    joc.render_sprites([bloc])
    joc.tick()

 

 

 

 

 

 

 

 

 

 

Licencia de Creative Commons
Esta obra de Oriol Boix está licenciada bajo una licencia no importada Creative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0.