Video Juego Pyton

Juego Memorama



codigo: 

import pygame
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

Entradas populares de este blog

Unidad 4 iluminación y sombreado

UNIDAD 3 GRAFICACION EN 3D

1.4 Aspectos matemáticos de la graficación (Geometría Fractal)