| Programació | Gràfics | Recursos CITCEA | ||
| Tutorial | Exemples | Projectes | Inici |
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

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