Creació de jocs amb PyBadge

Programació Gràfics     Recursos CITCEA
Tutorial Exemples Projectes   Inici

Dibuix amb mapa de bits

Podem donar color individualment a cada un dels píxels de la pantalla. Per fer-ho, abans ens cal conèixer com funciona el sistema de coordenades i crear una paleta de colors.

Sistema de coordenades

L'origen de coordenades es troba a la cantonada superior esquerra de la pantalla. Aquest punt serà el (0, 0). L'eix X va cap a la dreta i l'eix Y va cap a baix. Això vol dir que les cantonades d'una pantalla de 160 ⨯ 128 seran:

(0, 0)                       (159, 0)
         
              
         
(0, 127)     (159, 127)

Paleta de colors

La paleta de colors és una llista que conté els colors que farem servir. Un cop creada la paleta, podrem assignar a cada píxel de la pantalla un dels seus colors. La funció Palette ens permet crear una paleta per a quatre colors:

paleta = displayio.Palette(4)

Un cop creada la paleta, podem especificar els seus colors en codificació RGB hexadecimal. Donarem tres valors de dos dígits hexadecimals, el primer per al vermell, el segon per al verd i el tercer per al blau.

paleta[0] = 0xFF0000  # vermell
paleta[1] = 0x00FF00  # verd
paleta[2] = 0x0000FF  # blau
paleta[3] = 0xFFFF00  # groc

Assignació de colors als píxels

Un cop definida la paleta de colors, podem assignar els seus colors als píxels. Primer haurem de definir un objecte de bitmap que es correspondrà amb la nostra pantalla, fent servir la funció Bitmap; en aquest cas li diem que farem servir una paleta de quatre colors.

imatge = displayio.Bitmap(160, 128, 4)

El següent tros de programa assigna els colors de la paleta a alguns píxels:

	imatge[0, 0] = 0  # vermell
	imatge[1, 0] = 1  # verd
	imatge[2, 0] = 2  # blau
	imatge[3, 0] = 3  # groc

	imatge[0, 1] = 3  # groc
	imatge[1, 1] = 0  # vermell
	imatge[2, 1] = 1  # verd
	imatge[3, 1] = 2  # blau

	imatge[0, 2] = 2  # blau
	imatge[1, 2] = 3  # groc
	imatge[2, 2] = 0  # vermell
	imatge[3, 2] = 1  # verd

que correspondria a la següent imatge:

           
              
              
        

Creació d'un dibuix

Anem a dibuixar una circumferència centrada a la pantalla amb uns eixos. El programa per mostrar-la a la pantalla semblarà una mica complicat però hi haurà uns elements que ens permetran fer coses interessants més endavant. Primerament crearem un objecte d'imatge. A continuació crearem un mosaic, vinculat a la imatge, i un grup al que annexarem el mosaic. Finalment mostrarem el grup a la pantalla. Més endavant veurem què són els mosaics i els grups i quins avantatges ens poden aportar. El programa, doncs, és el següent:

import board
import displayio
import math
# Creem un objecte per a la pantalla
pant = board.DISPLAY
# Creem una imatge amb tres colors
imatge = displayio.Bitmap(pant.width, pant.height, 3)
# Creem una paleta de tres colors
paleta = displayio.Palette(3)
# Creem un mosaic vinculat a la imatge
tile_grid = displayio.TileGrid(imatge, pixel_shader=paleta)
# Creem un grup on allotjar el mosaic
grup = displayio.Group()
# Omplim la paleta
paleta[0] = 0x000000  # Fons negre
paleta[1] = 0xffff00  # Groc
paleta[2] = 0xffffff  # Blanc
# Afegim el mosaic al grup
grup.append(tile_grid)
# Mostrem el grup a la pantalla
pant.root_group = grup
# Eix horitzontal
for x in range(0, pant.width-1):
    imatge[x, pant.height//2] = 1
# Eix vertical
for y in range(0, pant.height-1):
    imatge[pant.width//2, y] = 1
# Dibuixem un cercle de radi 50
for a in range(0, 360):
    ar = a * math.pi / 180
    x = int(50 * math.cos(ar)) + pant.width//2
    y = int(50 * math.sin(ar)) + pant.height//2
    imatge[x, y] = 2
# Bucle infinit mentre es mostra la imatge
while True:
    pass

Recordem que el bucle final, encara que estigui buit, és important ja que si no hi és no veurem el resultat a la pantalla.

 

 

 

 

 

 

 

 

 

 

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