
-----------------------------------
edkedned
Mon Jun 13, 2011 11:27 pm

who wants to be a millionaire help
-----------------------------------
Hello ,I need help with my who wants to be a millionaire game...I am trying to figure out how to change screens from after a question is answered correctly and the program keeps messing up..and if anyone could also suggest an idea on the easiest way to implement phone a friend in the game

// The "Millionaire" class.
import java.applet.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class Millionaire extends Applet implements ActionListener
{
    // Place instance variables here
    AudioClip background;
    Image menuPic, gameInt, game_overPic, correct;
    ImageIcon start_button, rules_button, fifty_fifty, phoneFriend, switchQ;
    byte screen = 0, question = 0;
    JButton start_game, instructions, cont_game;
    JButton clicked = null;
    JButton chA, chB, chC, chD;
    JButton fiftyF, sQ, paF;

    //counters
    byte question_count = 0;
    int amount_earning = 0;
    boolean right_answer = false;
    boolean wrong = false;

    public void init ()

    {
        //menuscreen picture
        menuPic = getImage (getCodeBase (), "images\\menu_screen.jpg");
        gameInt = getImage (getCodeBase (), "images\\game_interfaced.jpg");
        game_overPic = getImage (getCodeBase (), "images\\game_over.jpg");
        correct = getImage (getCodeBase (), "correct.gif");

        Color lightblue = new Color (160, 32, 240);


        start_button = new ImageIcon ("images\\start_button.jpg");
        rules_button = new ImageIcon ("images\\rules_button.jpg");

        background = getAudioClip (getCodeBase (), "audios\\question.wav");
        background.loop ();

        //fires layout manager
        setLayout (null);

        start_game = new JButton (start_button);
        instructions = new JButton (rules_button);

        start_game.addActionListener (this);
        instructions.addActionListener (this);

        start_game.setBounds (15, 721, 300, 80);
        instructions.setBounds (390, 730, 295, 68);

        add (start_game);
        add (instructions);

    } // init method


    public void life_line ()

    {
        fifty_fifty = new ImageIcon ("images\\50_button.jpg");
        phoneFriend = new ImageIcon ("images\\PhoneAFriend_button.jpg");
        switchQ = new ImageIcon ("images\\sQ_button.jpg");

        fiftyF = new JButton (fifty_fifty);
        sQ = new JButton (switchQ);
        paF = new JButton (phoneFriend);

        fiftyF.addActionListener (this);
        sQ.addActionListener (this);
        paF.addActionListener (this);

        fiftyF.setBounds (175, 15, 90, 50);
        sQ.setBounds (308, 15, 90, 50);
        paF.setBounds (35, 15, 90, 50);

        add (fiftyF);
        add (sQ);
        add (paF);
    }


    public void correct ()
    {
        screen = 5;
        cont_game = new JButton ("CONTINUE");

        cont_game.setBounds (480, 730, 340, 48);
        cont_game.setForeground (Color.white);
        cont_game.setBackground (Color.magenta);

        cont_game.addActionListener (this);
        add (cont_game);

        validate ();
        repaint ();
        removeAll ();
    }


    public void question_one ()
    {
        question = 1;
        question_count = 1;

        chA = new JButton ("Basketball");
        chB = new JButton ("Hockey");
        chC = new JButton ("Soccer");
        chD = new JButton ("Wrestling");

        chA.setBounds (20, 658, 340, 48);
        chB.setBounds (420, 658, 340, 48);
        chC.setBounds (20, 730, 340, 48);
        chD.setBounds (420, 730, 340, 48);

        chA.setForeground (Color.white);
        chA.setBackground (Color.black);

        chB.setForeground (Color.white);
        chB.setBackground (Color.black);

        chC.setForeground (Color.white);
        chC.setBackground (Color.black);

        chD.setForeground (Color.white);
        chD.setBackground (Color.black);

        chA.addActionListener (this);
        chB.addActionListener (this);
        chC.addActionListener (this);
        chD.addActionListener (this);

        add (chA);
        add (chB);
        add (chC);
        add (chD);

        validate ();
        repaint ();
    }


    public void question_two ()
    {
        screen = 1;
        question = 2;
        question_count = 2;

        chA = new JButton ("Ludge");
        chB = new JButton ("Triathlon");
        chC = new JButton ("RC Skiing");
        chD = new JButton ("Biathlon");

        chA.setBounds (20, 658, 340, 48);
        chB.setBounds (420, 658, 340, 48);
        chC.setBounds (20, 720, 340, 48);
        chD.setBounds (420, 720, 340, 48);

        chA.setForeground (Color.white);
        chA.setBackground (Color.black);

        chB.setForeground (Color.white);
        chB.setBackground (Color.black);

        chC.setForeground (Color.white);
        chC.setBackground (Color.black);

        chD.setForeground (Color.white);
        chD.setBackground (Color.black);

        chA.addActionListener (this);
        chB.addActionListener (this);
        chC.addActionListener (this);
        chD.addActionListener (this);

        add (chA);
        add (chB);
        add (chC);
        add (chD);

        validate ();
        repaint ();
    }


    public void phone_friend ()

    {
    }


    public void fifty_fifty (JButton test)
    {
        if (question == 1)
        {
            screen = 1;
            question = 1;
            question_count = 1;

            chB = new JButton ("Hockey");
            chC = new JButton ("Soccer");

            question_one ();

            chA.setEnabled (false);
            chB.setEnabled (false);

            repaint ();

        }


    }


    public void check_answer (JButton test)
    {
        if (question == 1)
        {
            if (test == chB)
            {
                right_answer = true;
                amount_earning = 100;

                try
                {
                    Thread.sleep (500);
                }
                catch (InterruptedException e)
                {
                }
                repaint ();


            }
            else
            {
                wrong = true;
                removeAll ();
                repaint ();
            }
        }

        if (question == 2)
        {
            if (test == chD)
            {
                right_answer = true;
                amount_earning = 200;

                try
                {
                    Thread.sleep (500);
                }
                catch (InterruptedException e)
                {
                }

                question = 3;

                removeAll ();
                repaint ();
            }
            else
            {
                screen = 3;
                removeAll ();
                repaint ();
            }
        }


    }


    public void actionPerformed (ActionEvent e)
    {
        JButton clicked = (JButton) e.getSource ();


        if (start_game == clicked)
        {
            background.play ();
            screen = 1;
            removeAll ();


            question_one ();
            question = 1;

        }
        else
        {
            check_answer (clicked);
            correct ();


            if (cont_game == clicked)
            {
                screen = 1;
            }

        }




    }




    //check_answer (clicked);




    public void paint (Graphics g)
    {

        Font f = new Font ("Cambria", Font.BOLD, 35);
        g.setFont (f);

        if (screen == 0)
        {
            //Intro Page .... Game start ....
            g.drawImage (menuPic, 0, 0, this);
            background.play ();
        }


        if (screen == 1)
        {
            //Game Interface
            g.drawImage (gameInt, 0, 0, this);
        }


        if (question == 1)
        {
            try
            {
                Thread.sleep (500);
            }
            catch (InterruptedException e)
            {
            }
            g.setColor (Color.white);
            g.drawString ("Which Sport Begins With A Face Off?", 45, 600);

            chA.repaint ();
            chB.repaint ();
            chC.repaint ();
            chD.repaint ();
        }


        if (question == 2)
        {

            f = new Font ("Cambria", Font.BOLD, 25);
            g.setFont (f);

            try
            {
                Thread.sleep (500);
            }
            catch (InterruptedException e)
            {
            }
            g.setColor (Color.white);
            g.drawString ("Cross country skiing and rifle shooting make up which sport? ", 45, 600);

            chA.repaint ();
            chB.repaint ();
            chC.repaint ();
            chD.repaint ();
        }


        if (question == 3)
        {

            f = new Font ("Cambria", Font.BOLD, 25);
            g.setFont (f);

            try
            {
                Thread.sleep (500);
            }
            catch (InterruptedException e)
            {
            }
            g.setColor (Color.white);
            g.drawString (" What company 's logo is called the 'swoosh'? ", 45, 600);

            chA.repaint ();
            chB.repaint ();
            chC.repaint ();
            chD.repaint ();
        }


        if (amount_earning == 100)
        {
            g.setColor (Color.red);
            g.drawRect (800, 730, 130, 50);
        }




        if (wrong == true)
        {
            g.drawImage (game_overPic, 0, 0, this);
        }

        if (screen == 5)
        {
            g.drawImage (correct, 0, 0, this);

            cont_game.repaint ();
        }
    }
} // paint method


// Millionaire class

-----------------------------------
Tony
Mon Jun 13, 2011 11:36 pm

RE:who wants to be a millionaire help
-----------------------------------
Before you get too far into this.. notice how your

public void question_one ()
and
public void question_two () 

are _almost_ the same? Abstract the common parts into a single function, and load whatever differences from arguments/arrays/data-file/whatever-you-want. This will also save you from having if (question == 1) else (question == 2) else (...) x20 madness. Basically it's a bit more complicated to set up, but at the end you end up writing 20 times less code.

-----------------------------------
edkedned
Tue Jun 14, 2011 9:39 am

RE:who wants to be a millionaire help
-----------------------------------
Oh ..ok..could you please explain to me how i would do that?

-----------------------------------
apython1992
Tue Jun 14, 2011 11:57 am

Re: RE:who wants to be a millionaire help
-----------------------------------
Abstract the common parts into a single function
You have two functions that do pretty much the same thing.  Can you tell what is common between the two functions?

-----------------------------------
edkedned
Tue Jun 14, 2011 12:48 pm

RE:who wants to be a millionaire help
-----------------------------------
The buttons and their locations

-----------------------------------
apython1992
Tue Jun 14, 2011 1:10 pm

RE:who wants to be a millionaire help
-----------------------------------
So write this into one function, and determine the colour and location of the buttons based on a parameter that is passed in.
