from machine import Pin, SoftSPI, I2C
from max7219 import Matrix8x8
from time import sleep
import ssd1306
i2c = I2C(0, scl=Pin(22), sda=Pin(23))
marcador = ssd1306.SSD1306_I2C(128, 64, i2c)
sck = Pin(4, Pin.OUT)
mosi = Pin(2, Pin.OUT)
miso = Pin(19, Pin.OUT)
cs = Pin(0, Pin.OUT)
spi = SoftSPI(baudrate=1000000, polarity=0, phase=0, sck=sck, mosi=mosi, miso=miso)
matriz = Matrix8x8(spi, cs, 4)
matriz.brightness(2)
pos_pacman = 0
fig_comidas = 0
puntos = 0
fig_estado = [True, True, True]
fig_pos = [11, 18, 25]
def pacman(pos):
matriz.pixel(pos + 2, 2, 1)
matriz.pixel(pos + 4, 2, 1)
matriz.pixel(pos + 3, 2, 1)
matriz.pixel(pos + 1, 3, 1)
matriz.pixel(pos + 2, 3, 1)
matriz.pixel(pos + 3, 3, 1)
matriz.pixel(pos + 5, 3, 1)
matriz.pixel(pos + 1, 4, 1)
matriz.pixel(pos + 2, 4, 1)
matriz.pixel(pos + 3, 4, 1)
matriz.pixel(pos + 1, 5, 1)
matriz.pixel(pos + 2, 5, 1)
matriz.pixel(pos + 3, 5, 1)
matriz.pixel(pos + 4, 5, 1)
matriz.pixel(pos + 5, 5, 1)
matriz.pixel(pos + 2, 6, 1)
matriz.pixel(pos + 3, 6, 1)
matriz.pixel(pos + 4, 6, 1)
matriz.pixel(pos + 4, 3, 1)
def figuras():
if fig_estado[0]:
matriz.pixel(12, 2, 1)
matriz.pixel(11, 3, 1)
matriz.pixel(13, 3, 1)
matriz.pixel(10, 4, 1)
matriz.pixel(11, 4, 1)
matriz.pixel(10, 5, 1)
matriz.pixel(11, 5, 1)
matriz.pixel(13, 4, 1)
matriz.pixel(13, 5, 1)
matriz.pixel(14, 4, 1)
matriz.pixel(14, 5, 1)
if fig_estado[1]:
matriz.pixel(18, 2, 1)
matriz.pixel(17, 3, 1)
matriz.pixel(18, 3, 1)
matriz.pixel(19, 3, 1)
matriz.pixel(18, 4, 1)
matriz.pixel(17, 4, 1)
matriz.pixel(19, 4, 1)
matriz.pixel(18, 5, 1)
if fig_estado[2]:
matriz.pixel(25, 2, 1)
matriz.pixel(24, 3, 1)
matriz.pixel(25, 3, 1)
matriz.pixel(26, 3, 1)
matriz.pixel(24, 4, 1)
matriz.pixel(25, 4, 1)
matriz.pixel(26, 4, 1)
matriz.pixel(24, 5, 1)
matriz.pixel(25, 5, 1)
matriz.pixel(26, 5, 1)
def marcador_update():
marcador.fill(0)
marcador.text("PAC-MAN", 35, 5)
marcador.text("Figuras:", 5, 20)
marcador.text(str(fig_comidas), 80, 20)
marcador.text("Puntos:", 5, 40)
marcador.text(str(puntos), 80, 40)
marcador.show()
def win_msg():
matriz.fill(0)
matriz.pixel(10, 1, 1)
matriz.pixel(11, 1, 1)
matriz.pixel(12, 1, 1)
matriz.pixel(10, 2, 1)
matriz.pixel(10, 3, 1)
matriz.pixel(11, 3, 1)
matriz.pixel(12, 3, 1)
matriz.pixel(10, 4, 1)
matriz.pixel(10, 5, 1)
matriz.pixel(14, 1, 1)
matriz.pixel(14, 2, 1)
matriz.pixel(14, 3, 1)
matriz.pixel(14, 4, 1)
matriz.pixel(14, 5, 1)
matriz.pixel(16, 1, 1)
matriz.pixel(16, 2, 1)
matriz.pixel(16, 3, 1)
matriz.pixel(16, 4, 1)
matriz.pixel(16, 5, 1)
matriz.pixel(17, 2, 1)
matriz.pixel(17, 3, 1)
matriz.pixel(18, 4, 1)
matriz.pixel(18, 5, 1)
matriz.pixel(18, 2, 1)
matriz.pixel(18, 3, 1)
matriz.pixel(18, 1, 1)
matriz.show()
marcador_update()
while True:
matriz.fill(0)
pacman(pos_pacman)
figuras()
for i, posicion in enumerate(fig_pos):
if fig_estado[i] and pos_pacman + 3 >= posicion:
fig_estado[i] = False
fig_comidas += 1
puntos +=5
marcador_update()
pos_pacman += 1
if pos_pacman > 28:
pos_pacman = 0
if fig_comidas == 3:
win_msg()
marcador.fill(0)
marcador.text("FIN!", 30, 20)
marcador.text("GRUPO 12", 30, 30)
marcador.show()
break
matriz.show()
sleep(0.3)