private void initGame()
    {
        // start game
        g.start();

        // construct panels
        topPanel = new JPanel();
        scorePanel = new JPanel();
        timerPanel = new JPanel();
        middlePanel = new JPanel();
        leftStPanel = new JPanel();
        centerStPanel = new JPanel();
        rightStPanel = new JPanel();
        bottomPanel = new JPanel();

        // Add top panel
        this.add(topPanel);
        topPanel.setLayout(new BoxLayout(topPanel, BoxLayout.LINE_AXIS));

        // add score panel to top panel
        topPanel.add(scorePanel);
        scoreLabel = new JLabel("Score : 0");
        scoreLabel.setFont(new Font("sans-serif", Font.PLAIN, 35));
        scorePanel.add(scoreLabel);

        // add timerLabel to topPanel
        if (g.isTimerOn())
        {
            topPanel.add(timerPanel);
            timerLabel = new JLabel("Seconds left: " + Game.secondsRemainingStart);
            timerLabel.setFont(new Font("sans-serif", Font.BOLD, 30));
            timerPanel.add(timerLabel);
        }

        // Statement Panel
        this.add(middlePanel);
        middlePanel.setLayout(new BoxLayout(middlePanel, BoxLayout.LINE_AXIS));
        middlePanel.add(leftStPanel);
        middlePanel.add(centerStPanel);
        middlePanel.add(rightStPanel);

        // Statement Label
        statementLabel = new JLabel("100 * 100");
        statementLabel.setFont(new Font("sans-serif", Font.PLAIN, 50));
        leftStPanel.add(statementLabel);

        // Equal sign label
        JLabel equalSign = new JLabel(" = ");
        equalSign.setFont(new Font("sans-serif", Font.PLAIN, 50));
        centerStPanel.add(equalSign);

        // Answer field label
        answerField = new JTextField(5);
        answerField.setFont(new Font("sans-serif", Font.PLAIN, 50));
        rightStPanel.add(answerField);
        answerField.requestFocusInWindow();

        // Bottom panel
        this.add(bottomPanel);
        resetButton = new JButton("End Game");
        bottomPanel.add(resetButton);
        resetButton.setVisible(false);
        // reset button onClick
        resetButton.addActionListener(new ActionListener()
        {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                getContentPane().removeAll();
                g.restart();
                initPreGameMenu();
            }
        });
        // answer button onEnter, answer button is not visible
        acceptButton = new JButton("ANSWER");
        bottomPanel.add(acceptButton);
        acceptButton.setVisible(false);
        acceptButton.addActionListener(new ActionListener()
        {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                int answer;
                try
                {
                    answer = Integer.parseInt(answerField.getText());
                }
                catch (NumberFormatException ex)
                {
                    scoreLabel.setText("Enter number");
                    return;
                }
                finally
                {
                    answerField.setText("");
                }

                if(g.answer(answer))
                    repaintForm();
                else
                {
                    newScore(g.getAz().getPoints());
                    setIncorrectAnswerMSG();
                }
            }
        });
        this.getRootPane().setDefaultButton(acceptButton);

        this.pack();
        this.setSize(this.getWidth() + 100, this.getHeight());
        this.setInTheMiddle();

        repaintForm();
    }