grid_x_count = 10
grid_y_count = 18
inert = []
for y in range(grid_y_count):
inert.append([])
for x in range(grid_x_count):
inert[y].append(' ')
piece_structures = [
[
[
[' ', ' ', ' ', ' '],
['i', 'i', 'i', 'i'],
[' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' '],
],
[
[' ', 'i', ' ', ' '],
[' ', 'i', ' ', ' '],
[' ', 'i', ' ', ' '],
[' ', 'i', ' ', ' '],
],
],
[
[
[' ', ' ', ' ', ' '],
[' ', 'o', 'o', ' '],
[' ', 'o', 'o', ' '],
[' ', ' ', ' ', ' '],
],
],
[
[
[' ', ' ', ' ', ' '],
['j', 'j', 'j', ' '],
[' ', ' ', 'j', ' '],
[' ', ' ', ' ', ' '],
],
[
[' ', 'j', ' ', ' '],
[' ', 'j', ' ', ' '],
['j', 'j', ' ', ' '],
[' ', ' ', ' ', ' '],
],
[
['j', ' ', ' ', ' '],
['j', 'j', 'j', ' '],
[' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' '],
],
[
[' ', 'j', 'j', ' '],
[' ', 'j', ' ', ' '],
[' ', 'j', ' ', ' '],
[' ', ' ', ' ', ' '],
],
],
[
[
[' ', ' ', ' ', ' '],
['l', 'l', 'l', ' '],
['l', ' ', ' ', ' '],
[' ', ' ', ' ', ' '],
],
[
[' ', 'l', ' ', ' '],
[' ', 'l', ' ', ' '],
[' ', 'l', 'l', ' '],
[' ', ' ', ' ', ' '],
],
[
[' ', ' ', 'l', ' '],
['l', 'l', 'l', ' '],
[' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' '],
],
[
['l', 'l', ' ', ' '],
[' ', 'l', ' ', ' '],
[' ', 'l', ' ', ' '],
[' ', ' ', ' ', ' '],
],
],
[
[
[' ', ' ', ' ', ' '],
['t', 't', 't', ' '],
[' ', 't', ' ', ' '],
[' ', ' ', ' ', ' '],
],
[
[' ', 't', ' ', ' '],
[' ', 't', 't', ' '],
[' ', 't', ' ', ' '],
[' ', ' ', ' ', ' '],
],
[
[' ', 't', ' ', ' '],
['t', 't', 't', ' '],
[' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' '],
],
[
[' ', 't', ' ', ' '],
['t', 't', ' ', ' '],
[' ', 't', ' ', ' '],
[' ', ' ', ' ', ' '],
],
],
[
[
[' ', ' ', ' ', ' '],
[' ', 's', 's', ' '],
['s', 's', ' ', ' '],
[' ', ' ', ' ', ' '],
],
[
['s', ' ', ' ', ' '],
['s', 's', ' ', ' '],
[' ', 's', ' ', ' '],
[' ', ' ', ' ', ' '],
],
],
[
[
[' ', ' ', ' ', ' '],
['z', 'z', ' ', ' '],
[' ', 'z', 'z', ' '],
[' ', ' ', ' ', ' '],
],
[
[' ', 'z', ' ', ' '],
['z', 'z', ' ', ' '],
['z', ' ', ' ', ' '],
[' ', ' ', ' ', ' '],
],
],
]
piece_type = 0
piece_rotation = 0
piece_x = 3
piece_y = 0
timer = 0
def update(dt):
global timer
global piece_y
timer += dt
if timer >= 0.5:
timer = 0
piece_y += 1
def on_key_down(key):
global piece_rotation
global piece_type
global piece_x
if key == keys.X:
piece_rotation += 1
if piece_rotation > len(piece_structures[piece_type]) - 1:
piece_rotation = 0
elif key == keys.Z:
piece_rotation -= 1
if piece_rotation < 0:
piece_rotation = len(piece_structures[piece_type]) - 1
elif key == keys.LEFT:
piece_x -= 1
elif key == keys.RIGHT:
piece_x += 1
elif key == keys.DOWN:
piece_type += 1
if piece_type > len(piece_structures) - 1:
piece_type = 0
piece_rotation = 0
elif key == keys.UP:
piece_type -= 1
if piece_type < 0:
piece_type = len(piece_structures) - 1
piece_rotation = 0
def draw():
screen.fill((255, 255, 255))
def draw_block(block, x, y):
colors = {
' ': (222, 222, 222),
'i': (120, 195, 239),
'j': (236, 231, 108),
'l': (124, 218, 193),
'o': (234, 177, 121),
's': (211, 136, 236),
't': (248, 147, 196),
'z': (169, 221, 118),
}
color = colors[block]
block_size = 20
block_draw_size = block_size - 1
screen.draw.filled_rect(
Rect(
x * block_size, y * block_size,
block_draw_size, block_draw_size
),
color=color
)
for y in range(grid_y_count):
for x in range(grid_x_count):
draw_block(inert[y][x], x, y)
for y in range(4):
for x in range(4):
block = piece_structures[piece_type][piece_rotation][y][x]
if block != ' ':
draw_block(block, x + piece_x, y + piece_y)