import random, time
import pygame
from pygame.locals import *

FPS = 25
(ECRAN_WIDTH, ECRAN_HEIGHT)=(600,600)

VIDE=0
R=1
V=2
B=3
N=4
J=5
COULEURS=[(0,0,0),(155,0,0),(0,155,0),(0,0,155),(155,0,155),(155,155,0)]

fallFreq=1


M = [ [J, R, R, N, V, R, VIDE, VIDE, VIDE, VIDE, VIDE, VIDE],
[R, R, B, J, VIDE, R, N, V, VIDE, VIDE, VIDE, VIDE],
[J, N, N, R, VIDE, J, VIDE, VIDE, VIDE, VIDE, VIDE, VIDE],
[J, J, VIDE, R, VIDE, VIDE, VIDE, VIDE, VIDE, VIDE, VIDE, VIDE],
[N, VIDE, R, VIDE, VIDE, R, VIDE, VIDE, VIDE, VIDE, VIDE, VIDE],
[VIDE, V, VIDE, VIDE, VIDE, VIDE, VIDE, VIDE, VIDE, VIDE, VIDE, VIDE]]
#M=creerGrille(6,12)

# La piece qui tombe
# - True : Si elle tombe ou pas (ne devrait pas arriver, si elle arrete de
# tomber on en créé une nouvelle
# - x,y : ou elle est
# - k : sa taille
# - lst_coul : les couleurs de la piece
x= 3
y= 11
k= 3
lst_coul = [R,V,B]
piece=[True,x,y,k,lst_coul]

    
def affichage_pygame(ecran,M,piece):
    # Ou on commence le dessin de la matrice
    debut_x,debut_y=250,400
    # Taille des cases
    larg=25
    
    # On charge une police (64 est la taille)
    police_car = pygame.font.SysFont("None", 64)

    # On vide l'ecran
    ecran.fill((0,0,0))

    # On affiche le plateau de jeu
    for i in range(len(M)):
        for j in range(len(M[i])):
            pygame.draw.rect(ecran, COULEURS[M[i][j]],(debut_x+i*larg,debut_y-j*larg,larg,larg))

    # On affiche la pièce qui tombe
    _,x,y,k,lst_coul=piece
    for l in range(k):
        pygame.draw.rect(ecran, COULEURS[lst_coul[l]],(debut_x+x*larg,debut_y-(y-l)*larg,larg,larg))
        
    

    
    # On délimite le plateau
    pygame.draw.rect(ecran, (255,255,255),(debut_x-1,debut_y-(len(M[0])-1)*larg-1,len(M)*larg+2,len(M[0])*larg+2),1)


    # On dessine "l'interface", les coordonnees ont ete choisies a la main
    ecran.blit(pygame.font.SysFont("None", 100).render("Tetris Couleur",True,(0,255,255)),(50,10))
    ecran.blit(pygame.font.SysFont("None", 32).render("Utilisez les fleches du clavier",True,(255,0,255)),(150,520))
    pygame.display.flip()



pygame.init()
FPSCLOCK = pygame.time.Clock()
pygame.font.init()
ecran = pygame.display.set_mode((ECRAN_WIDTH, ECRAN_HEIGHT))
pygame.display.set_caption("Tetris Couleur")

police_sys64 = pygame.font.SysFont("None", 64)
police_sys96 = pygame.font.SysFont("None", 128)


lastFallTime = time.time()



affichage_pygame(ecran,M,piece)

EN_JEU=True

while EN_JEU:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            EN_JEU=False
        if event.type == KEYDOWN:
            if event.key == K_ESCAPE:
                EN_JEU=False
            if event.key == K_LEFT:
                if piece[1]>0:
                    piece[1]-=1
                print("Gauche")
            if event.key == K_RIGHT:
                if piece[1]<5:
                    piece[1]+=1
                print("Droite")
            if event.key == K_DOWN:
                print("Bas")
            if event.key == K_SPACE:
                print("Espace")
    if time.time() - lastFallTime > fallFreq:
        if piece[2]-piece[3]>=0:
            piece[2]-=1
        print("Descente")
        lastFallTime=time.time()


    affichage_pygame(ecran,M,piece)
    FPSCLOCK.tick(FPS)


ecran.blit(police_sys96.render("FIN !",True,(255,0,0)),(50,250))
pygame.display.flip()
pygame.time.wait(500)
pygame.quit()
