|
|
|
|
@ -6,11 +6,184 @@ BOARDWIDTH
|
|
|
|
|
BOARDHEIGHT
|
|
|
|
|
BOXSIZE
|
|
|
|
|
XMAGGIN = int()
|
|
|
|
|
TOPMARGIN
|
|
|
|
|
BLANK
|
|
|
|
|
TOPMARGIN
|
|
|
|
|
BLANK = '.'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# R. G. B
|
|
|
|
|
RED
|
|
|
|
|
GREEN
|
|
|
|
|
BLUE
|
|
|
|
|
GRAY
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TEMWIDTH = 5
|
|
|
|
|
TEMHEIGHT = 5
|
|
|
|
|
S_SHAPE = [['.....',
|
|
|
|
|
'.....',
|
|
|
|
|
'..OO.',
|
|
|
|
|
'.OO..',
|
|
|
|
|
'.....'],
|
|
|
|
|
['.....',
|
|
|
|
|
'..O..',
|
|
|
|
|
'..OO.',
|
|
|
|
|
'...O.',
|
|
|
|
|
'.....']]
|
|
|
|
|
|
|
|
|
|
Z_SHAPE = [['.....',
|
|
|
|
|
'...',
|
|
|
|
|
'.OO.',
|
|
|
|
|
'..OO.',
|
|
|
|
|
'.....'],
|
|
|
|
|
['.....',
|
|
|
|
|
'..O..',
|
|
|
|
|
'.OO..',
|
|
|
|
|
'.O...',
|
|
|
|
|
'.....']]
|
|
|
|
|
|
|
|
|
|
I_SHAPE = [['..O..',
|
|
|
|
|
'..O..',
|
|
|
|
|
'..O..',
|
|
|
|
|
'..O..',
|
|
|
|
|
'.....'],
|
|
|
|
|
['.....',
|
|
|
|
|
'.....',
|
|
|
|
|
'OOOO.',
|
|
|
|
|
'.....',
|
|
|
|
|
'.....']]
|
|
|
|
|
|
|
|
|
|
O_SHAPE = [['.....',
|
|
|
|
|
'.....',
|
|
|
|
|
'.OO..',
|
|
|
|
|
'.OO..',
|
|
|
|
|
'.....']]
|
|
|
|
|
|
|
|
|
|
J_SHAPE = [['.....',
|
|
|
|
|
'.O...',
|
|
|
|
|
'.OOO.',
|
|
|
|
|
'.....',
|
|
|
|
|
'.....'],
|
|
|
|
|
['.....',
|
|
|
|
|
'..OO.',
|
|
|
|
|
'..O..',
|
|
|
|
|
'..O..',
|
|
|
|
|
'.....'],
|
|
|
|
|
['.....',
|
|
|
|
|
'.....',
|
|
|
|
|
'.OOO.',
|
|
|
|
|
'...O.',
|
|
|
|
|
'.....'],
|
|
|
|
|
['.....',
|
|
|
|
|
'..O..',
|
|
|
|
|
'..O..',
|
|
|
|
|
'.OO..',
|
|
|
|
|
'.....']]
|
|
|
|
|
|
|
|
|
|
L_SHAPE = [['.....',
|
|
|
|
|
'...O.',
|
|
|
|
|
'.OOO.',
|
|
|
|
|
'.....',
|
|
|
|
|
'.....'],
|
|
|
|
|
['.....',
|
|
|
|
|
'..O..',
|
|
|
|
|
'..O..',
|
|
|
|
|
'..OO.',
|
|
|
|
|
'.....'],
|
|
|
|
|
['.....',
|
|
|
|
|
'.....',
|
|
|
|
|
'.OOO.',
|
|
|
|
|
'.O...',
|
|
|
|
|
'.....'],
|
|
|
|
|
['.....',
|
|
|
|
|
'.OO..',
|
|
|
|
|
'..O..',
|
|
|
|
|
'..O..',
|
|
|
|
|
'.....']]
|
|
|
|
|
|
|
|
|
|
T_SHAPE = [['.....',
|
|
|
|
|
'.OOO.',
|
|
|
|
|
'..O..',
|
|
|
|
|
'.....',
|
|
|
|
|
'.....'],
|
|
|
|
|
['.....',
|
|
|
|
|
'..O..',
|
|
|
|
|
'.OO..',
|
|
|
|
|
'..O..',
|
|
|
|
|
'.....'],
|
|
|
|
|
['.....',
|
|
|
|
|
'..O..',
|
|
|
|
|
'.OOO.',
|
|
|
|
|
'.....',
|
|
|
|
|
'.....'],
|
|
|
|
|
['.....',
|
|
|
|
|
'..O..',
|
|
|
|
|
'..OO.',
|
|
|
|
|
'..O..',
|
|
|
|
|
'.....']]
|
|
|
|
|
|
|
|
|
|
SHAPES = {'S':S_SHAPE,
|
|
|
|
|
'Z':Z_SHAPE,
|
|
|
|
|
'J':J_SHAPE,
|
|
|
|
|
'L':L_SHAPE.
|
|
|
|
|
'I':I_SHAPE,
|
|
|
|
|
'O':O_SHAPE,
|
|
|
|
|
'T':T_SHAPE}
|
|
|
|
|
|
|
|
|
|
def main():
|
|
|
|
|
global DISSURF, FPSCLOCK, BASICFONT, BIGFONT
|
|
|
|
|
pygame.init()
|
|
|
|
|
DISSURF = pygame.display.set_mode((WINWIDTH,WINHEIGHT))
|
|
|
|
|
BASICFONT = pygame.font.Font('freesansbold,18')
|
|
|
|
|
BIGFONT = pygame.font.Font('freesansbold,18')
|
|
|
|
|
FPSCLOCK = pygame.time,Clock()
|
|
|
|
|
pygame.display.set_caption('Tetromino')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def maketextobj(text,font,color):
|
|
|
|
|
surf = font.render(text, True, color)
|
|
|
|
|
return surf, surf.get_rect()
|
|
|
|
|
|
|
|
|
|
def showtextscreen(text):
|
|
|
|
|
#draw the shadow
|
|
|
|
|
titlesurf, titlerect = maketextobj(text, BIGFONT, TEXTSHADOWCOLOR)
|
|
|
|
|
titlerect.center = ()
|
|
|
|
|
DISSURF.blit(titlesurf,titlerect)
|
|
|
|
|
|
|
|
|
|
#draw the text
|
|
|
|
|
titlesurf, titlerect = maketextobj(text, BIGFONT, TEXTCOLOR)
|
|
|
|
|
titlerect.center = ()
|
|
|
|
|
DISSURF.blit(titlesurf,titlerect)
|
|
|
|
|
|
|
|
|
|
presskeysurf, presskeyrect = maketextobj('Press a key to play', BASICFONT, TEXTCOLOR)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def checkforquit():
|
|
|
|
|
for event in pygame.event.get(QUIT):
|
|
|
|
|
terminate()
|
|
|
|
|
for event in pygame.event.get(KEYUP):
|
|
|
|
|
if event.key = K_ESCAPE:
|
|
|
|
|
terminate
|
|
|
|
|
pygame.evnet.post(event)
|
|
|
|
|
|
|
|
|
|
def terminate():
|
|
|
|
|
pygame.quit()
|
|
|
|
|
sys.exit()
|
|
|
|
|
|
|
|
|
|
def getblankboard():
|
|
|
|
|
#create a blank board data structure
|
|
|
|
|
board = []
|
|
|
|
|
for x in range(BOARDWIDTH):
|
|
|
|
|
board.append([BLANK] * BOARDHEIGHT)
|
|
|
|
|
return board
|
|
|
|
|
|
|
|
|
|
def getnewpiece():
|
|
|
|
|
# create a new piece data structure
|
|
|
|
|
shape = random.choice(list(SHAPES.keys()))
|
|
|
|
|
newpiece = {'shape':shape,
|
|
|
|
|
'rotation':random.randint(0,len(SHAPES[shape])-1)
|
|
|
|
|
'x':}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|