
import pygame
import t

symdict = {
    'T' : (0,0,192),
    'S' : (0,192,0),
    'Z' : (192,0,0),
    'I' : (192,0,192),
    'L' : (0,192,192),
    'J' : (192,192,0),
    'O' : (192,192,192)
}

if __name__ == '__main__':
    pygame.init()
    screen = pygame.display.set_mode((700, 500))
    clock = pygame.time.Clock()
    pygame.display.set_caption("tetris")
    
    game = t.g()
    cnt = 0
    speed = 5
    tx,ty,tr,sym = 1,1,0,'T'
    
    up,down,left,right,done = False,False,False,False,False
    while not done:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                done = True
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_UP:
                    up = True
                elif event.key == pygame.K_DOWN:
                    down = True
                elif event.key == pygame.K_LEFT:
                    left = True
                elif event.key == pygame.K_RIGHT:
                    right = True
                elif event.key == pygame.K_ESC:
                    done = True
            elif event.type == pygame.KEYUP:
                if event.key == pygame.K_UP:
                    up = False
                elif event.key == pygame.K_DOWN:
                    down = False
                elif event.key == pygame.K_LEFT:
                    left = False
                elif event.key == pygame.K_RIGHT:
                    right = False
        
        
        if cnt % speed == 0:
            if up:
                up = False
                if not t.willCollide(game,sym,tx,ty,tr+1):
                    tr += 1
            else:
                #gavity
                if t.willCollide(game,sym,tx,ty+1,tr):
                    game = t.t(game,t.shape(sym,tx,ty,tr),sym)
                    tx,ty,tr,sym = 3,0,0,t.next()
                    if t.willCollide(game,sym,tx,ty,tr):
                        print 'gameover'
                        done = True
                else:
                    ty += 1
            if down:
                speed = 4
            else:
                speed = 6
            if left:
                if not t.willCollide(game,sym,tx-1,ty,tr):
                    tx -= 1
            if right:
                if not t.willCollide(game,sym,tx+1,ty,tr):
                    tx += 1
        

           
        screen.fill((0,0,0))    
        #update
        tile = t.t(game,t.shape(sym,tx,ty,tr),sym)
        for (x,y) in ((x,y) for x in range(10) for y in range(20)):
            tiles = tile(x,y)
            if (len(tiles)):
                pos = (x*10,y*10,10,10)
                pygame.draw.rect(screen,symdict[tiles[0]],pos)
        
        pygame.display.flip()
        cnt += 1
        clock.tick(60)
        
        
        
        
        
        
        
