Creació de jocs amb PyBadge

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

Tres en línia

Anem a fer un programa per jugar al tres en línia. Abans de res, farem el taulell, que és la part estàtica. Comencem per definir el mosaic que s'emprarà per fer el taulell i les vores. Hem de crear un fitxer amb setze rajoles però, de moment, només ens en calen sis. El fitxer d'imatge tile.bmp és aquest:

Fitxer

Per entendre com el farem servir, el trossejarem en les corresponents rajoles de 16 ⨯ 16 píxels.

Mosaic Espai Mosaic Espai Mosaic Espai Mosaic Espai Mosaic Espai Mosaic

Els números que corresponen a cada rajola són:

Índex Utilització
0 Fons de la barra lateral
1 Cantonada superior esquerra d'una casella
2 Cantonada superior dreta d'una casella
3 Cantonada inferior dreta d'una casella
4 Cantonada inferior esquerra d'una casella
5 Vora del taulell

La figura següent mostra com ha de quedar el taulell.

Taulell

Al lateral del taulell és on s'indicarà a quin jugador li correspon tirar en cada moment.

El programa seria el següent:

import ugame
import stage
banc = stage.Bank.from_bmp16("tile0.bmp")
fons = stage.Grid(banc, 10, 8)  # 16 * 10 = 160
                                # 16 * 8 = 128
joc = stage.Stage(ugame.display, 12)
# Funcio que dibuixa el taulell
def dib_taulell():
    # Ara tot el fons és negre
    # Fem l'espai lateral, on s'indica a qui toca tirar
    fons.tile(8, 3, tile=1)  # Superior esquerra
    fons.tile(8, 4, tile=4)  # Superior dreta
    fons.tile(9, 3, tile=2)  # Inferior esquerra
    fons.tile(9, 4, tile=3)  # Inferior dreta
    # Fem la vora del taulellfor i in range(8):  # 8 fileres
    for j in range(8):  # 8 columnes
        fons.tile(0, j, tile=5)
        fons.tile(7, j, tile=5)
    for i in range(6):  # 6 fileres
        fons.tile(i+1, 0, tile=5)
        fons.tile(i+1, 7, tile=5)
    # Anem a fer el taulell
    for i in range(6):  # 6 fileres
        for j in range(6):  # 6 columnes
            if i%2 == 0: # Si filera és senar
                if j%2 == 0: # Si columna és senar
                    fons.tile(i+1, j+1, tile=1)
                else:
                    fons.tile(i+1, j+1, tile=4)
            else:
                if j%2 == 0: # Si columna és senar
                    fons.tile(i+1, j+1, tile=2)
                else:
                    fons.tile(i+1, j+1, tile=3)
# Fi de la funcio
joc.layers = [fons]
dib_taulell()
joc.render_block()
while True:
    pass

En aquest cas, el taulell té unes repeticions molt clares i, per tant, podem fer servir bucles i comparacions per definir-lo; però això pot ser més complicat en altres casos. Una forma alternativa és definir una matriu que indiqui quina rajola correspon a cada posició i emprar un parell de bucles per dibuixar-ho, com es fa en el programa següent:

import ugame
import stage
banc = stage.Bank.from_bmp16("tile0.bmp")
fons = stage.Grid(banc, 10, 8)  # 16 * 10 = 160
                                # 16 * 8 = 128
joc = stage.Stage(ugame.display, 12)
# Funcio que dibuixa el taulell
def dib_taulell():
    tau = [ [5, 5, 5, 5, 5, 5, 5, 5, 0, 0], 
    [5, 1, 2, 1, 2, 1, 2, 5, 0, 0], 
    [5, 4, 3, 4, 3, 4, 3, 5, 0, 0], 
    [5, 1, 2, 1, 2, 1, 2, 5, 1, 2], 
    [5, 4, 3, 4, 3, 4, 3, 5, 4, 3], 
    [5, 1, 2, 1, 2, 1, 2, 5, 0, 0], 
    [5, 4, 3, 4, 3, 4, 3, 5, 0, 0], 
    [5, 5, 5, 5, 5, 5, 5, 5, 0, 0] ]
    for i in range(8):  # 8 fileres
        for j in range(10):  # 10 columnes
            fons.tile(j, i, tile=tau[i][j])
# Fi de la funcio
joc.layers = [fons]
dib_taulell()
joc.render_block()
while True:
    pass

 

 

 

 

 

 

 

 

 

 

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