From b4f38253d7cbc2843d0b6af765733cf1a309c262 Mon Sep 17 00:00:00 2001 From: BellCodeEditor <bellcode_dev@bell.ai> Date: Sat, 30 Nov 2024 20:04:09 +0800 Subject: [PATCH] save project --- my_Tetris.py | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------ 1 file changed, 62 insertions(+), 54 deletions(-) diff --git a/my_Tetris.py b/my_Tetris.py index 6fd8ece..e5d0233 100644 --- a/my_Tetris.py +++ b/my_Tetris.py @@ -10,6 +10,7 @@ grid_num_height = 25 # 纵向格子数量 FPS = 30 # 帧率 count = 0 states = False +gameover = False # 创建窗口 screen = pygame.display.set_mode((460, 500)) @@ -66,6 +67,13 @@ while True: if event.type == locals.QUIT: exit() if event.type == locals.KEYDOWN: + if gameover==True: + gameover = False + score = 0 + num_list = [] + for i in range(25): + num_list.append([0] * 15) + if event.key == locals.K_LEFT: # 向左 center[1] = center[1] - 1 # 左移1列 if check(center) == False: @@ -91,62 +99,62 @@ while True: index = old_index current_shape = shape[index] - if states == False: - states = True - center = [2, 8] # 第2行第8列 - shape = random.choice(shape_list) - index = random.randint(0, len(shape)-1) # 随机形状索引 - current_shape = shape[index] - color = random.choice(cube_colors) # 随机选取一种颜色 - count += 1 - if count % FPS == 0: # 降落速度的算式 - center[0] = center[0] + 1 - if check(center) == False: - center[0] = center[0] - 1 - states = False - for cube in current_pos: - num_list[cube[0] - 1][cube[1] - 1] = color - # 将背景图画上去 - screen.blit(background, (0, 0)) - # 计算出所有小方块的行、列位置 - current_pos = [] - for cube in current_shape: - pos = (cube[0] + center[0], cube[1] + center[1]) - current_pos.append(pos) - # 取出所有小方块的行、列位置,计算坐标,绘制俄罗斯方块 - for cube in current_pos: - pygame.draw.rect(screen, color, - (cube[1] * 20-20, cube[0] * 20-20, 20, 20), 0) - pygame.draw.rect(screen, (255, 255, 255), - (cube[1] * 20-20, cube[0] * 20-20, 20, 20), 1) - - for i,row in zip(range(1,26),num_list): - for j, colors2 in zip(range(1,16),row): - if colors2 != 0: - pygame.draw.rect(screen, colors2, - (j * 20-20, i * 20-20, 20, 20), 0) - pygame.draw.rect(screen, (255, 255, 255), - (j * 20-20, i * 20-20, 20, 20), 1) + if gameover == False: + if states == False: + states = True + center = [2, 8] # 第2行第8列 + shape = random.choice(shape_list) + index = random.randint(0, len(shape)-1) # 随机形状索引 + current_shape = shape[index] + color = random.choice(cube_colors) # 随机选取一种颜色 + count += 1 + if count % FPS == 0: # 降落速度的算式 + center[0] = center[0] + 1 + if check(center) == False: + center[0] = center[0] - 1 + states = False + for cube in current_pos: + num_list[cube[0] - 1][cube[1] - 1] = color + # 将背景图画上去 + screen.blit(background, (0, 0)) + # 计算出所有小方块的行、列位置 + current_pos = [] + for cube in current_shape: + pos = (cube[0] + center[0], cube[1] + center[1]) + current_pos.append(pos) + # 取出所有小方块的行、列位置,计算坐标,绘制俄罗斯方块 + for cube in current_pos: + pygame.draw.rect(screen, color, + (cube[1] * 20-20, cube[0] * 20-20, 20, 20), 0) + pygame.draw.rect(screen, (255, 255, 255), + (cube[1] * 20-20, cube[0] * 20-20, 20, 20), 1) - num_list2 = [] - for i in range(25): - num_list2.append([0] * 15) - row_index = 24 - for i in range(24, -1, -1): - is_full = True - for j in range(grid_num_width): - if num_list[i][j] == 0: - is_full == False - if is_full == False: - num_list2[row_index] = num_list[i] - row_index -= 1 - else: - score += 1 - num_list = num_list2 + for i,row in zip(range(1,26),num_list): + for j, colors2 in zip(range(1,16),row): + if colors2 != 0: + pygame.draw.rect(screen, colors2,(j * 20-20, i * 20-20, 20, 20), 0) + pygame.draw.rect(screen, (255, 255, 255), (j * 20-20, i * 20-20, 20, 20), 1) - # 得分 - text_surface = font.render(str(score), True, (0, 0, 0)) - screen.blit(text_surface, (350,70)) + num_list2 = [] + for i in range(25): + num_list2.append([0] * 15) + row_index = 24 + for i in range(24, -1, -1): + is_full = True + for j in range(grid_num_width): + if num_list[i][j] == 0: + is_full == False + if is_full == False: + num_list2[row_index] = num_list[i] + row_index -= 1 + else: + score += 1 + num_list = num_list2 + if num_list[1][7] != 0: + gameover = True + # 得分 + text_surface = font.render(str(score), True, (0, 0, 0)) + screen.blit(text_surface, (350,70)) # 刷新画面 pygame.display.update() clock.tick(FPS) -- libgit2 0.25.0