Video Juego Pyton
Juego Memorama
codigo:
import os.path
from pygame.locals import *
from pygame import *
import threading
import math
import random
#VERIFICAR SI EXISTE EL MODULO DE IMAGEN, SINO, TIRAR ERROR
if not pygame.image.get_extended():
raise SystemExit("Sorry, extended image module required")
#VARIABLES GLOBALES
SCREENRECT = Rect(0, 0, 640, 480)
MARGEN_TARJETA = 50
PADDING_TARJETA = 4
#CARPETA RAIZ, DONDE ESTAN TODOS LOS ARCHIVOS DEL JUEGO Y ESTA CLASE
main_dir = os.path.split(os.path.abspath(__file__))[0]
#FUNCIONES
def cargar_imagenes(*archivos):
imgs = []
for archivo in archivos:
imgs.append(cargar_imagen(archivo))
return imgs
ANCHO = 1200
ALTURA = 750
TARJETA_ACTUAL = None
TARJETA_ACTUAL = None
#CARGAR IMAGEN
def cargar_imagen(nombrearchivo, transparent=False):
try:
imagen = pygame.image.load(nombrearchivo)
except pygame.error:
raise SystemExit
imagen = imagen.convert()
if transparent:
color = imagen.get_at((0, 0))
imagen.set_colorkey(color, RLEACCEL)
return imagen
#Comprobar
def comprobar(tarjeta):
global TARJETA_ACTUAL
if TARJETA_ACTUAL == None:
tarjeta.voltear()
TARJETA_ACTUAL = tarjeta
else:
tarjeta.voltear()
if TARJETA_ACTUAL.id == tarjeta.id:
print("Coinciden!!!")
TARJETA_ACTUAL.image.set_alpha(80)
tarjeta.image.set_alpha(80)
TARJETA_ACTUAL = None
else:
print("No coinciden.")
def func():
global TARJETA_ACTUAL
tarjeta.pressed = False
tarjeta.voltear()
TARJETA_ACTUAL.voltear()
TARJETA_ACTUAL.pressed = False
TARJETA_ACTUAL = None
set_timeout(func, 1.0) # This is 0.1s = 100ms
#TEMPORIZADOR
def set_timeout(func, sec):
t = None
def func_wrapper():
func()
t.cancel()
t = threading.Timer(sec, func_wrapper)
t.start()
#CLASE TARJETA
class Tarjeta(pygame.sprite.Sprite):
global PADDING_TARJETA
def __init__(self, data):
pygame.sprite.Sprite.__init__(self)
self.images = []
self.images.append(cargar_imagen("tarjeta.jpg"))
self.images.append(cargar_imagen(data[0]))
self.rect = self.images[0].get_rect()
self.rect.centerx = PADDING_TARJETA
self.rect.centery = 100
self.image = self.images[0]
self.volteada = False
self.id = data[1]
self.pressed = False
def voltear(self):
if not self.volteada:
self.image = self.images[1]
self.volteada = True
else:
self.image = self.images[0]
self.volteada = False
def mouseEvent(self, type):
if type == "click":
if not self.pressed:
comprobar(self)
self.pressed = True
#CLASE PRINCIPAL
def main():
screen = pygame.display.set_mode((ANCHO, ALTURA))
pygame.display.set_caption("Pruebas Pygame")
background = cargar_imagen('fondo.jpg')
background = pygame.transform.scale(background, (ANCHO, ALTURA))
displaylist = []
global PADDING_TARJETA
global MARGEN_TARJETA
tarjetas = [("tarjeta1.jpg", "Hidrogeno"), ("tarjeta2.jpg", "Hidrogeno"),
("tarjeta3.jpg", "Berilio"), ("tarjeta4.jpg", "Berilio"),
("tarjeta5.jpg", "Sodio"),("tarjeta6.jpg", "Sodio"),
("tarjeta7.jpg", "Rubidio"), ("tarjeta8.jpg", "Rubidio"),
("tarjeta9.jpg", "Calcio"), ("tarjeta10.jpg", "Calcio"),
("tarjeta11.jpg", "Litio"), ("tarjeta12.jpg", "Litio"),
("tarjeta13.jpg", "Estroncio"), ("tarjeta14.jpg", "Estroncio"),
("tarjeta15.jpg", "Magnesio"), ("tarjeta16.jpg", "Magnesio"),
("tarjeta17.jpg", "Potasio"), ("tarjeta18.jpg", "Potasio")]
random.shuffle(tarjetas)
for i in range(0, len(tarjetas)):
tarjeta = Tarjeta(tarjetas[i])
tarjeta.rect.centerx = MARGEN_TARJETA + ((i % 3) * (tarjeta.rect.width+PADDING_TARJETA))
tarjeta.rect.centery = MARGEN_TARJETA + (math.floor(i / 3) * (tarjeta.rect.height + PADDING_TARJETA))
displaylist.append(tarjeta)
while True:
for evento in pygame.event.get():
if evento.type == QUIT:
sys.exit(0)
if evento.type == pygame.MOUSEBUTTONUP:
if(evento.button == 1):
x, y = evento.pos
for i in range(0, len(displaylist)):
child = displaylist[i]
if child.rect.collidepoint(x, y):
child.mouseEvent("click")
screen.blit(background, (0,0))
for i in range(0, len(displaylist)):
screen.blit(displaylist[i].image, displaylist[i].rect)
pygame.display.flip()
return 0
#INICIAR
if __name__ == '__main__':
pygame.init()
main()
Comentarios
Publicar un comentario