Example #1
0
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()
Example #2
0
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()  # 刷新屏幕