void setUp() {
        //<editor-fold defaultstate="collapsed" desc="JFrame setup">
        setFont(new Font("Bitstream Vera Sans Mono", 0, 20));
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(800, 600);
        setLocationRelativeTo(null);
        currentGame = new Game(this);
        //</editor-fold>
        //<editor-fold defaultstate="collapsed" desc="Image Setup">
        try {
            try {
                if (currentGame.player.getItems().get(0).item.getSprite() == null) {
                    currentWeapon = ImageIO.read(getClass().getResource("/com/RoguePanda/ZAG/Images/noWeapon.png"));
                } else {
                    currentWeapon = currentGame.player.getItems().get(0).item.getSprite();
                }
            } catch (Exception ex) {
                currentWeapon = ImageIO.read(getClass().getResource("/com/RoguePanda/ZAG/Images/noWeapon.png"));
            }
            hudf = getToolkit().getImage(getClass().getResource("/com/RoguePanda/ZAG/Images/HUDFront.png"));
            hudb = getToolkit().getImage(getClass().getResource("/com/RoguePanda/ZAG/Images/HUDBack.png"));
            spaceFiller = getToolkit().getImage(getClass().getResource("/com/RoguePanda/ZAG/Images/spaceFiller.png"));
            pi = getToolkit().getImage(getClass().getResource("/com/RoguePanda/ZAG/Images/simpleplayer.png"));
            test = getToolkit().getImage(getClass().getResource("/com/RoguePanda/ZAG/Images/longtest.png")).getScaledInstance(1600, 390, Image.SCALE_FAST);
            logo = new ImageIcon(ImageIO.read(getClass().getResource("/com/RoguePanda/ZAG/Images/logo.png")));
            menuBG = getToolkit().getImage(getClass().getResource("/com/RoguePanda/ZAG/Images/menubackground.png")).getScaledInstance(800, 600, Image.SCALE_FAST);
            gameBG = getToolkit().getImage(getClass().getResource("/com/RoguePanda/ZAG/Images/gamebackground.png")).getScaledInstance(800, 540, Image.SCALE_FAST);
            optionsBG = getToolkit().getImage(getClass().getResource("/com/RoguePanda/ZAG/Images/optionsbackground.png")).getScaledInstance(800, 600, Image.SCALE_FAST);
        } catch (IOException ex) {
            Logger.getLogger(CardGUI.class.getName()).log(Level.SEVERE, null, ex);
        } catch (NullPointerException er) {
            Logger.getLogger(CardGUI.class.getName()).log(Level.SEVERE, null, er);
        }
        //</editor-fold>
        //<editor-fold defaultstate="collapsed" desc="Define Variables">
        leftKey = 'a';
        rightKey = 'd';
        jumpKey = ' ';
        dropKey = 'q';
        enterKey = 'w';
        phazeKey = 's';
        pauseKey = 'p';
        inventoryKey = 'e';
        frame = new JPanel();
        frame.setLayout(new CardLayout());
        menuDisplay = new JPanel();
        gameDisplay = new JScrollPane();
        gameHUD = new JPanel();
        pauseMenu = new JPanel();
        optionsDisplay = new JPanel();
        mainDisplay = new JPanel();
        hudfp = new JLabel(new ImageIcon(hudf));
        hudbp = new JLabel(new ImageIcon(hudb));
        menuCard = new JPanel();
        gameCard = new JPanel();
        optionsCard = new JPanel();
        debugText = new JLabel();
        pauseText = new JLabel("<html><font size=+3>Paused</font><html>");
        gameCanvas = new GameCanvas(this);
        playerSprite = new JLabel(new ImageIcon(pi));
        testl = new JLabel(new ImageIcon(test));
        menuBack = new JLabel(new ImageIcon(menuBG));
        gameBack = new JLabel(new ImageIcon(gameBG));
        gameBackDisplay = new JScrollPane();
        optionsBack = new JLabel(new ImageIcon(optionsBG));
        spaceFillerl = new JLabel(new ImageIcon(spaceFiller));
        healthBar = new JProgressBar(0, currentGame.player.maxHealth);
        menubuttons = new JLabel[4];
        menubuttons[0] = new JLabel(logo);
        menubuttons[1] = new JLabel("Adventure");
        menubuttons[2] = new JLabel("Options");
        menubuttons[3] = new JLabel("Exit");
        optionsbuttons = new JLabel[6];
        optionsbuttons[0] = new JLabel(logo);
        optionsbuttons[1] = new JLabel("Left Key: a");
        optionsbuttons[2] = new JLabel("Right Key: d");
        optionsbuttons[3] = new JLabel("Drop Key: q");
        optionsbuttons[4] = new JLabel("Jump Key: space");
        optionsbuttons[5] = new JLabel("Back");
        gamebuttons = new JLabel[2];
        gamebuttons[0] = new JLabel(new ImageIcon(currentWeapon));
        gamebuttons[1] = new JLabel();
        transparent = new Color(0, 0, 0, 0);
        hungerBar = new JProgressBar(0, 100);
        thirstBar = new JProgressBar(0, 100);
        gameDisplayHolder = new JPanel();
        htStats = new JPanel();
        GridBagConstraints c = new GridBagConstraints();
        GridBagConstraints d;
        inventorygui = new InventoryGUI(this);

        //</editor-fold>
        //<editor-fold defaultstate="collapsed" desc="Layout Setup">
        menuCard.setLayout(new GridBagLayout());
        gameCard.setLayout(new AbsoluteLayout());
        optionsCard.setLayout(new GridBagLayout());
        mainDisplay.setLayout(new GridBagLayout());
        gameHUD.setLayout(new AbsoluteLayout());
        optionsDisplay.setLayout(new GridBagLayout());
        gameDisplayHolder.setLayout(null);
        htStats.setLayout(new BorderLayout());
        pauseMenu.setBackground(transparent);
        pauseText.setBackground(transparent);
        gameCanvas.setBackground(transparent);
        menuDisplay.setBackground(transparent);
        gameDisplay.setBackground(transparent);
        gameBackDisplay.setBackground(transparent);
        gameHUD.setBackground(transparent);
        mainDisplay.setBackground(transparent);
        optionsDisplay.setBackground(transparent);
        testl.setBackground(transparent);
        gameDisplayHolder.setBackground(transparent);
        htStats.setBackground(transparent);
        healthBar.setBackground(Color.black);
        healthBar.setForeground(Color.red);
        debugText.setForeground(Color.white);
        hungerBar.setForeground(new Color(200, 0, 0, 200));
        thirstBar.setForeground(new Color(0, 0, 200, 200));

        gameDisplay.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        gameDisplay.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
        gameBackDisplay.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        gameBackDisplay.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);

        gameDisplay.setSize(800, 600);
        gameBackDisplay.setSize(800, 600);
        gameDisplayHolder.setSize(currentGame.currentLevel.size);
        gameDisplayHolder.setPreferredSize(currentGame.currentLevel.size);
        gameCanvas.setSize(currentGame.currentLevel.size);
        playerSprite.setBounds(0, 0, -1, -1);
        spaceFillerl.setBounds(0, 0, currentGame.currentLevel.size.width, currentGame.currentLevel.size.height);
        gameDisplay.setBorder(null);
        gameBackDisplay.setBorder(null);

        c.fill = GridBagConstraints.HORIZONTAL;
        c.weightx = 0.0;
        c.gridwidth = 3;
        c.gridx = 0;
        c.gridy = 0;
        d = c;
        healthBar.setValue((int) currentGame.player.health);
        hungerBar.setValue(100);
        thirstBar.setValue(100);
        healthBar.setString("Health");
        hungerBar.setString("Hunger");
        thirstBar.setString("Thirst");
        healthBar.setStringPainted(true);
        hungerBar.setStringPainted(true);
        thirstBar.setStringPainted(true);
        for (int i = 1; i < 5; i++) {
            final JLabel la = optionsbuttons[i];
            final int ne = i;
            la.addMouseListener(new MouseListener() {
                @Override
                public void mouseClicked(MouseEvent me) {
                    la.setForeground(Color.GREEN);
                    changeKey = ne;
                }

                @Override
                public void mousePressed(MouseEvent me) {
                }

                @Override
                public void mouseReleased(MouseEvent me) {
                }

                @Override
                public void mouseEntered(MouseEvent me) {
                }

                @Override
                public void mouseExited(MouseEvent me) {
                }
            });
        }
        //</editor-fold>
        //<editor-fold defaultstate="collapsed" desc="Button Setup">
        for (int i = 0; i < menubuttons.length; i++) {
            menubuttons[i].setFont(getFont());
            menubuttons[i].setForeground(Color.black);
            final int j = i;
            menubuttons[i].addMouseListener(new MouseListener() {
                @Override
                public void mouseClicked(MouseEvent me) {
                    mainMenuAction(j);
                }

                @Override
                public void mousePressed(MouseEvent me) {
                }

                @Override
                public void mouseReleased(MouseEvent me) {
                }

                @Override
                public void mouseEntered(MouseEvent me) {
                    colorChange(me, 1);
                }

                @Override
                public void mouseExited(MouseEvent me) {
                    colorChange(me, 2);
                }
            });
            c.gridy = i + 1;
            menuDisplay.add(menubuttons[i], c);
        }
        for (int i = 0; i < optionsbuttons.length; i++) {
            optionsbuttons[i].setFont(getFont());
            optionsbuttons[i].setForeground(Color.black);
            final int j = i;
            optionsbuttons[i].addMouseListener(new MouseListener() {
                @Override
                public void mouseClicked(MouseEvent me) {
                    optionsMenuAction(j);
                }

                @Override
                public void mousePressed(MouseEvent me) {
                }

                @Override
                public void mouseReleased(MouseEvent me) {
                }

                @Override
                public void mouseEntered(MouseEvent me) {
                    colorChange(me, 1);
                }

                @Override
                public void mouseExited(MouseEvent me) {
                    colorChange(me, 2);
                }
            });
            c.gridy = i + 1;
            optionsDisplay.add(optionsbuttons[i], c);
        }
        for (int i = 0; i < gamebuttons.length; i++) {
            gamebuttons[i].setFont(getFont());
            final int j = i;
            gamebuttons[i].addMouseListener(new MouseListener() {
                @Override
                public void mouseClicked(MouseEvent me) {
                    optionsMenuAction(j);
                }

                @Override
                public void mousePressed(MouseEvent me) {
                }

                @Override
                public void mouseReleased(MouseEvent me) {
                }

                @Override
                public void mouseEntered(MouseEvent me) {
                    colorChange(me, 1);
                }

                @Override
                public void mouseExited(MouseEvent me) {
                    colorChange(me, 2);
                }
            });
        }
        //</editor-fold>
        //<editor-fold defaultstate="collapsed" desc="Add Components">
        htStats.add(hungerBar, BorderLayout.PAGE_START);
        htStats.add(thirstBar, BorderLayout.PAGE_END);
        gameHUD.add(hudfp, new AbsoluteConstraints(2, 494, -1, -1));
        gameHUD.add(debugText, new AbsoluteConstraints(0, 0, -1, -1));
        gameHUD.add(gamebuttons[0], new AbsoluteConstraints(2, 494, -1, -1));
        //gameHUD.add(ammoBox, new AbsoluteConstraints(68, 504, -1, -1));
        gameHUD.add(healthBar, new AbsoluteConstraints(150, 504, 482, 42));
        gameHUD.add(htStats, new AbsoluteConstraints(634, 504, -1, -1));
        gameHUD.add(hudbp, new AbsoluteConstraints(2, 494, -1, -1));
        gameDisplayHolder.add(gameCanvas);
        gameDisplayHolder.add(spaceFillerl);
        gameDisplay.setViewportView(gameDisplayHolder);
        gameBackDisplay.setViewportView(gameBack);
        pauseMenu.add(pauseText);
        menuCard.add(menuDisplay, d);
        menuCard.add(menuBack, d);
        optionsCard.add(optionsDisplay, d);
        optionsCard.add(optionsBack, d);
        gameCard.add(gameHUD, new AbsoluteConstraints(0, 0, 800, 600));
        gameCard.add(gameDisplay, new AbsoluteConstraints(0, 0, 800, 600));
        gameCard.add(gameBack, new AbsoluteConstraints(0, -35, 800, 600));
        frame.add(menuCard, "Menu");
        frame.add(gameCard, "Game");
        frame.add(optionsCard, "Options");
        add(frame);
        //</editor-fold>
        setUpListeners(this);
    }