def main(): pygame.init() #初始化 #创建屏幕对象 screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) pygame.display.set_caption("俄罗斯方块") pygame.key.set_repeat(10, 100) #按下按键超过10ms触发下一次按键 bg_color = BG_COLOR #建立方块对象 #piece = Piece('J',screen) random.seed(int(time.time())) #产生不同的随机序列 #定义一个二维数组,且全部初始化为'_' #game_wall = GameWall(screen) # random.choice(range)在范围内随机选取一个作为返回值 #piece = Piece(random.choice(PIECE_TYPES), screen,game_wall) game_state = GameState(screen) game_resource = GameResource() #pygame.event.get():从事件队列中取出所有事件对象, #得到待处理事件列表 while True: #当前方块触底 if game_state.piece and game_state.piece.is_on_botton: #将当前方块标记为wall game_state.wall.add_to_wall(game_state.piece) game_state.add_score(game_state.wall.eliminate_lines()) #生成新的方块在游戏区域最上 #piece = Piece(random.choice(PIECE_TYPES),screen,game_state.wall) game_state.piece = Piece(random.choice(PIECE_TYPES), screen, game_state.wall) #监视键盘和鼠标事件 check_events(game_state.piece) #填充屏幕背景颜色 screen.fill(bg_color) #绘制游戏区域 GameDisplay.draw_game_area(screen, game_state, game_resource) #绘制小方块 #draw_cell(screen,GAME_AREA_LEFT+GAME_AREA_WIDTH//2,GAME_AREA_TOP) if game_state.piece: game_state.piece.paint() #让最近绘制的屏幕可见 pygame.display.flip()
def main(): # 必须:初始化 pygame.init() # 窗口对象,设置分辨率 screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) pygame.display.set_caption("俄罗斯方块") bg_color = BG_COLOR # 激活持续按键功能 pygame.key.set_repeat(100, 100) '''垒墙''' game_state = GameState(screen) # 该对象类里已经包装了 方块对象和墙体对象 game_resource = GameResource() game_resource.play_bg_music() # 主循环 while True: # 墙体、分数、方块控制 if not game_state.stopped and game_state.piece.is_on_botton: game_state.wall.add_to_wall(game_state.piece) game_state.add_score(game_state.wall.eliminate_line()) game_state.wall.print() # game_state.piece = Piece(random.choice(PIECES_TYPE), screen, game_state.wall) game_state.touch_bottom() # 事件监听 game_state.state = game_state.paused | game_state.stopped check_events(game_state, game_resource) " # 设置屏幕背景色" screen.blit(game_resource.load_bg_img(), (0, 0)) # 设置画板背景色 """# !!! 绘制要在背景画布后面,绘制都是在 SCREEN.FILL 后执行 !!!""" GameDisplay.draw_game_area(screen, game_state, game_resource) if game_state.piece: game_state.piece.paint() """一般不变绘制""" # draw_game_area(screen) # draw_game_area_grid(screen) pygame.display.flip() # 刷新屏幕