| Programació | Gràfics | Recursos CITCEA | ||
| Tutorial | Exemples | Projectes | Inici |
Fins ara només haviem situat un sprite al taulell. Ara n'anem a posar més. Teníem tres sprites, el del personatge, un cercle que representa una fruita i una estrella. Situarem un personatge (que es podrà moure), dues fruites i dues estrelles.
Tindrem una llista que contindrà els sprites i una altra llista on guardarem les coordenades de cada un d'ells. En la llista d'sprites fem servir l'índex per saber de quin dibuix es tracta; el primer serà el personatge, després vindran les dues fruites i finalment les dues estrelles.
A la funció que dibuixa el taulell fem servir les coordenades del primer sprite (el personatge) per situar la finestra però després representem tots els sprites.
El programa és el següent:
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 els sprites
sprites = [] # Llista d'sprites
coord_sprites = [] # Llista de coordenades dels sprites
for k in range(0, 5):
if k == 0:
spt = 7 # Primer situem el personatge
cdn = [4, 3]
if k > 0 and k < 3:
spt = 3 # Despres dues fruites
cdn = [3*k, 2*k]
if k > 2:
spt = 11 # Finalment dues estrelles
cdn = [3*k, 2*k]
spr = displayio.TileGrid(imatge, pixel_shader=palette,
width = 1, height = 1,
tile_width = 16, tile_height = 16)
spr[0] = spt
sprites.append(spr)
coord_sprites.append(cdn)
# 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 als sprites
grup_pers = displayio.Group(scale=1)
for sprt in sprites:
grup_pers.append(sprt)
# 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 els sprites
# 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,
)
# Llegim el fitxer CSV
fit = open("taulell_gros.csv", "r")
cont_fit = fit.read()
fit.close()
# Descomposem el fitxer en una llista de linies
llista_fit = cont_fit.replace("\r", "").split("\n")
# Variables de control de la finestra
alt = len(llista_fit)
ample = len(llista_fit[0].split(","))
# Funcio que redibuixa el taulell
def dib_taulell():
xmin = coord_sprites[0][0] - 5
xmax = coord_sprites[0][0] + 4
ymin = coord_sprites[0][1] - 4
ymax = coord_sprites[0][1] + 3
while xmin < 0:
xmin += 1
xmax += 1
while xmax >= ample:
xmin -= 1
xmax -= 1
while ymin < 0:
ymin += 1
ymax += 1
while ymax >= alt:
ymin -= 1
ymax -= 1
# Bucle que recorre totes les linies
for vy in range(0, 8):
# Creem una llista amb els elements de la linia
linia = llista_fit[vy + ymin].split(",")
for vx in range(0, 10):
# Dibuixem el taulell
taulell[vx, vy] = int(linia[vx + xmin])
# Situem els sprites
n = 0
for sprt in sprites:
sprt.x = 16 * (coord_sprites[n][0] - xmin)
sprt.y = 16 * (coord_sprites[n][1] - ymin)
n += 1
# Fi de la funcio
# Fem que el fons dels personatges sigui transparent
palette.make_transparent(2)
# Mostra el grup a la pantalla
pant.root_group = grup
dib_taulell()
abans = 0 # Lectura anterior dels polsadors
while True:
boto_act = pad.events.get()
if boto_act and boto_act.pressed:
boto = boto_act.key_number
if boto == K_RIGHT and coord_sprites[0][0] < ample - 2:
coord_sprites[0][0] += 1
if boto == K_LEFT and coord_sprites[0][0] > 1:
coord_sprites[0][0] -= 1
if boto == K_DOWN and coord_sprites[0][1] < alt - 2:
coord_sprites[0][1] += 1
if boto == K_UP and coord_sprites[0][1] > 1:
coord_sprites[0][1] -= 1
dib_taulell()
Amb aquest exemple volíem mostrar només com es poden crear els elements que formen part del joc i la manera de moure'ls. Aquest exemple es podria anar millorant fins arribar a tenir un joc complet. Algunes coses que es podrien fer són:

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