public Game(Cong cong, SpriteSheet header_ss, History h){
        
        // Load the spritesheets for the game objects and the scoreboard elements
        try{
            ss_cong_image = loader.loadImage("/sprite_sheet_cong.png");
            cong_ss = new SpriteSheet(ss_cong_image);
            ss_scoreboard_image = loader.loadImage("/sprite_sheet_scoreboard.png");
            scoreboard_ss = new SpriteSheet(ss_scoreboard_image);
        }
        catch(IOException e){}
        
        // Initialize the vars and objects
        this.cong = cong;
        this.h = h;
        this.header_ss = header_ss;
        gameWindow = new Rectangle(offset_x, offset_y, Cong.WIDTH * Cong.SCALE - 100, Cong.HEIGHT * Cong.SCALE - 145);
        initialPosX_p1 = (int)gameWindow.getX() + 5;
        initialPosY_p1 = ((int)gameWindow.getHeight() / 2) + (offset_y / 2);
        initialPosX_p2 = (int)gameWindow.getWidth() + 7 + (offset_x / 2);
        initialPosY_p2 = ((int)gameWindow.getHeight() / 2) + (offset_y / 2);
        p1 = new Player("Player 1", ATTACK, initialPosX_p1, initialPosY_p1, this, cong_ss);
        p2 = new Player("Player 2", DEFEND, initialPosX_p2, initialPosY_p2, this, cong_ss);
        b = new Ball(initialPosX_p1, gameWindow.getCenterY(), initialBall_velX, initialBall_velY, this, cong_ss);
        clock = new Clock((Cong.WIDTH * Cong.SCALE) / 2 - 30, 60);
        cong.addKeyListener(new KeyInput(this));
    }