Creació de jocs amb PyBadge

Programació Gràfics     Recursos CITCEA
Tutorial Exemples Projectes   Inici

Guardem el taulell en un fitxer extern

Fins ara hem fet servir un taulell rectangular molt senzill i això permetia que l'assignació de les rajoles que composaven el taulell fos força simple. Podem, però, guardar la informació en un fitxer a banda amb format de valors separats per comes (extensió csv). Això permetria fer servir taulells més complexos o anar variant fàcilment de taulell al llarg del joc.

Hem creat un fitxer que guarda la informació que tenim en aquesta taula:

 0  1  2  3  4  5  6  7  8  9
 0  0  1  1  1  1  1  1  1  1  2
 1  4  5  5  5  5  5  5  5  5  6
 2  4  5  5  5  5  5  5  5  5  6
 3  4  5  5  5  5  5  5  5  5  6
 4  4  5  5  5  5  5  5  5  5  6
 5  4  5  5  5  5  5  5  5  5  6
 6  4  5  5  5  5  5  5  5  5  6
 7  8  9  9  9  9  9  9  9  9 10

El fitxer taulell.csv té el següent contingut:

0,1,1,1,1,1,1,1,1,2
4,5,5,5,5,5,5,5,5,6
4,5,5,5,5,5,5,5,5,6
4,5,5,5,5,5,5,5,5,6
4,5,5,5,5,5,5,5,5,6
4,5,5,5,5,5,5,5,5,6
4,5,5,5,5,5,5,5,5,6
8,9,9,9,9,9,9,9,9,10

Que, com podem observar, són els valors de la taula separats per comes. El següent programa agafa la disposició del taulell d'aquest fitxer (que haurem de copiar a la carpeta del microcontrolador).

import board
import keypad
import displayio
import adafruit_imageload
# Noms dels botons
K_X = 0
K_O = 1
K_START = 2
K_SELECT = 3
K_RIGHT = 4
K_DOWN = 5
K_UP = 6
K_LEFT = 7
# Creem un objecte per a la pantalla
pant = board.DISPLAY
# Carreguem el fitxer amb la imatge
imatge, palette = adafruit_imageload.load("/tiles.bmp",
                                                bitmap=displayio.Bitmap,
                                                palette=displayio.Palette)
# Creem l'sprite (personatge)
pers = displayio.TileGrid(imatge, pixel_shader=palette,
                            width = 1, height = 1,
                            tile_width = 16, tile_height = 16,
                            default_tile = 7)
# Creem un mosaic per al taulell
taulell = displayio.TileGrid(imatge, pixel_shader=palette,
                            width = 10, height = 8,
                            tile_width = 16, tile_height = 16)
# Definim un grup per a l'sprite
grup_pers = displayio.Group(scale=1)
grup_pers.append(pers)
# Definim un grup per al taulell
grup_taulell = displayio.Group(scale=1)
grup_taulell.append(taulell)
# Creem un grup per englobar-ho tot
grup = displayio.Group()
# Afegim els grups anteriors al global
grup.append(grup_taulell)  # Primer el taulell
grup.append(grup_pers)  # Despres el personatge
# Objecte per llegir els botons
pad = keypad.ShiftRegisterKeys(
    clock=board.BUTTON_CLOCK,
    data=board.BUTTON_OUT,
    latch=board.BUTTON_LATCH,
    key_count=8,
    value_when_pressed=True,
)
# Fem que el fons dels personatges sigui transparent
palette.make_transparent(2)
# Llegim el fitxer CSV
fit = open("taulell.csv", "r")
cont_fit = fit.read()
fit.close()
# Descomposem el fitxer en una llista de linies
llista_fit = cont_fit.replace("\r", "").split("\n")
# Bucle que recorre totes les linies
for vy in range(0, len(llista_fit)):
    # Creem una llista amb els elements de la linia
    linia = llista_fit[vy].split(",")
    # Bucle que recorre tots els elements de la linia
    for vx in range(0, len(linia)):
        # Dibuixem el taulell
        taulell[vx, vy] = int(linia[vx])
# Situem el personatge
cx = 4
cy = 3
# Mostra el grup a la pantalla
pant.root_group = grup
while True:
    boto_act = pad.events.get()
    if boto_act and boto_act.pressed:
        boto = boto_act.key_number
        if boto == K_RIGHT and cx < 8:
            cx += 1
        if boto == K_LEFT and cx > 1:
            cx -= 1
        if boto == K_DOWN and cy < 6:
            cy += 1
        if boto == K_UP and cy > 1:
            cy -= 1
    pers.x = 16 * cx
    pers.y = 16 * cy

 

 

 

 

 

 

 

 

 

 

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