package afvink3;_x000D_
_x000D_
/**_x000D_
 * Race class_x000D_
 * Class Race maakt gebruik van de class Paard_x000D_
 *_x000D_
 * @author Martijn van der Bruggen_x000D_
 * @version alpha - aanroep van cruciale methodes ontbreekt_x000D_
 * (c) 2009 Hogeschool van Arnhem en Nijmegen_x000D_
 *_x000D_
 * Note: deze code is bewust niet op alle punten generiek_x000D_
 * dit om nog onbekende constructies te vermijden._x000D_
 *_x000D_
 * Updates_x000D_
 * 2010: verduidelijking van opdrachten in de code MvdB_x000D_
 * 2011: verbetering leesbaarheid code MvdB_x000D_
 * 2012: verbetering layout code en aanpassing commentaar MvdB_x000D_
 * 2013: commentaar aangepast aan nieuwe opdracht MvdB_x000D_
 *_x000D_
 *************************************************_x000D_
 * Afvinkopdracht: werken met methodes en objecten_x000D_
 *************************************************_x000D_
 * Opdrachten zitten verwerkt in de code_x000D_
 * 1) Declaratie constante_x000D_
 * 2) Declaratie van Paard (niet instantiering)_x000D_
 * 3) Declareer een button_x000D_
 * 4) Zet breedte en hoogte van het frame_x000D_
 * 5) Teken een finish streep_x000D_
 * 6) Creatie van 4 paarden_x000D_
 * 7) Pauzeer_x000D_
 * 8) Teken 4 paarden_x000D_
 * 9) Plaats tekst op de button_x000D_
 * 10) Start de race, methode aanroep_x000D_
 *_x000D_
 *_x000D_
 */_x000D_
import java.awt.*;_x000D_
import java.awt.event.*;_x000D_
import javax.swing.*;_x000D_
_x000D_
public class Race extends JFrame implements ActionListener {_x000D_
_x000D_
    /** declaratie van variabelen */_x000D_
    int var = 250; /*var van 250_x000D_
    /* (2) Declareer hier h1, h2, h3, h4 van het type Paard_x000D_
     *  Deze paarden instantieer je later in het programma_x000D_
     */_x000D_
    Image foto = Toolkit.getDefaultToolkit().getImage("C:\\Users\\aloys\\Desktop\\opdrachten\\jaar 2\\Afvink 3 jaar 2\\Mylittlepony.GIF");_x000D_
    Image newimage = foto.getScaledInstance(40, 40, Image.SCALE_DEFAULT);_x000D_
_x000D_
    Paard h1 = new Paard("Pinkie Pie", newimage);_x000D_
    Paard h2 = new Paard("Twilight Sparkle", newimage);_x000D_
    Paard h3 = new Paard("Fluttershy", newimage);_x000D_
    Paard h4 = new Paard("Rainbow Dash", newimage);_x000D_
    Paard h5 = new Paard("Applejack", newimage);_x000D_
_x000D_
    /* (3) Declareer een button met de naam button van het type JButton */_x000D_
    private JButton button;_x000D_
    private JPanel panel;_x000D_
_x000D_
    /** Applicatie - main functie voor runnen applicatie */_x000D_
    public static void main(String[] args) {_x000D_
        Race frame = new Race();_x000D_
        /* (4) Geef het frame een breedte van 400 en hoogte van 140 */_x000D_
        frame.setSize(800, 400);_x000D_
_x000D_
        frame.createGUI();_x000D_
        frame.setVisible(true);_x000D_
    }_x000D_
_x000D_
    /** Loop de race_x000D_
     */_x000D_
    private void startRace(Graphics g) {_x000D_
        panel.setBackground(Color.white);_x000D_
        /** Tekenen van de finish streep */_x000D_
        /* (5) Geef de finish streep een rode kleur */_x000D_
        int lengte = 250;_x000D_
        Graphics paper = panel.getGraphics();_x000D_
_x000D_
        g.setColor(Color.RED);_x000D_
        g.fillRect(lengte, 0, 3, 350);_x000D_
        /**(6) Creatie van 4 paarden_x000D_
         * Dit is een instantiering van de 4 paard objecten_x000D_
         * Bij de instantiering geef je de paarden een naam en een kleur mee_x000D_
         * Kijk in de class Paard hoe je de paarden_x000D_
         * kunt initialiseren._x000D_
         */_x000D_
        /** Loop tot een paard over de finish is*/_x000D_
        while (h1.getAfstand() < lengte_x000D_
                && h2.getAfstand() < lengte_x000D_
                && h3.getAfstand() < lengte_x000D_
                && h4.getAfstand() < lengte_x000D_
                && h5.getAfstand() < lengte) {_x000D_
            h1.run();_x000D_
            h2.run();_x000D_
            h3.run();_x000D_
            h4.run();_x000D_
            h5.run();_x000D_
_x000D_
            /* (7) Voeg hier een aanroep van de methode pauzeer toe zodanig_x000D_
             * dat er 1 seconde pauze is. De methode pauzeer is onderdeel_x000D_
             * van deze class_x000D_
             */_x000D_
            pauzeer(300);_x000D_
            /* (8) Voeg hier code in om 4 paarden te tekenen die rennen_x000D_
             * Dus een call van de methode tekenPaard_x000D_
             */_x000D_
            tekenPaard( paper, h1);_x000D_
            tekenPaard( paper, h2);_x000D_
            tekenPaard( paper, h3);_x000D_
            tekenPaard( paper, h4);_x000D_
            tekenPaard( paper, h5);_x000D_
        }_x000D_
        /** Kijk welk paard gewonnen heeft_x000D_
         */_x000D_
        if (h1.getAfstand() > lengte) {_x000D_
            JOptionPane.showMessageDialog(null, h1.getNaam() + " gewonnen!");_x000D_
        }_x000D_
        if (h2.getAfstand() > lengte) {_x000D_
            JOptionPane.showMessageDialog(null, h2.getNaam() + " gewonnen!");_x000D_
        }_x000D_
        if (h3.getAfstand() > lengte) {_x000D_
            JOptionPane.showMessageDialog(null, h3.getNaam() + " gewonnen!");_x000D_
        }_x000D_
        if (h4.getAfstand() > lengte) {_x000D_
            JOptionPane.showMessageDialog(null, h4.getNaam() + " gewonnen!");_x000D_
        }_x000D_
        if (h5.getAfstand() > lengte) {_x000D_
            JOptionPane.showMessageDialog(null, h5.getNaam() + " gewonnen!");_x000D_
        }_x000D_
_x000D_
    }_x000D_
_x000D_
    /** Creatie van de GUI*/_x000D_
    private void createGUI() {_x000D_
        setDefaultCloseOperation(EXIT_ON_CLOSE);_x000D_
        Container window = getContentPane();_x000D_
        window.setLayout(new FlowLayout());_x000D_
        panel = new JPanel();_x000D_
        panel.setPreferredSize(new Dimension(600, 250));_x000D_
        panel.setBackground(Color.white);_x000D_
        window.add(panel);_x000D_
        /* (9) Zet hier de tekst Run! op de button */_x000D_
        button = new JButton("RUN!");_x000D_
        window.add(button);_x000D_
        button.addActionListener(this);_x000D_
    }_x000D_
_x000D_
    /** Teken het paard */_x000D_
    private void tekenPaard(Graphics g, Paard h) {_x000D_
        g.setColor(Color.white);_x000D_
        g.fillRect(0, 40 * h.getPaardNummer(), h.getAfstand(), 44);_x000D_
        Image img = h.getimage();_x000D_
        g.drawImage(img, h.getAfstand(), 40*h.getPaardNummer(), this);_x000D_
    }_x000D_
_x000D_
    /** Actie indien de button geklikt is*/_x000D_
    public void actionPerformed(ActionEvent event) {_x000D_
        Graphics paper = panel.getGraphics();_x000D_
        /* (10) Roep hier de methode startrace aan met de juiste parameterisering */_x000D_
        startRace (paper);_x000D_
    }_x000D_
_x000D_
    /** Pauzeer gedurende x millisecondes*/_x000D_
    public void pauzeer(int msec) {_x000D_
        try {_x000D_
            Thread.sleep(msec);_x000D_
        } catch (InterruptedException e) {_x000D_
            System.out.println("Pauze interruptie");_x000D_
        }_x000D_
    }_x000D_
_x000D_
_x000D_
}_x000D_

/* (5) Geef de finish streep een rode kleur */
package afvink3;_x000D_
_x000D_
/**_x000D_
 * Race class_x000D_
 * Class Race maakt gebruik van de class Paard_x000D_
 *_x000D_
 * @author Martijn van der Bruggen_x000D_
 * @version alpha - aanroep van cruciale methodes ontbreekt_x000D_
 * (c) 2009 Hogeschool van Arnhem en Nijmegen_x000D_
 *_x000D_
 * Note: deze code is bewust niet op alle punten generiek_x000D_
 * dit om nog onbekende constructies te vermijden._x000D_
 *_x000D_
 * Updates_x000D_
 * 2010: verduidelijking van opdrachten in de code MvdB_x000D_
 * 2011: verbetering leesbaarheid code MvdB_x000D_
 * 2012: verbetering layout code en aanpassing commentaar MvdB_x000D_
 * 2013: commentaar aangepast aan nieuwe opdracht MvdB_x000D_
 *_x000D_
 *************************************************_x000D_
 * Afvinkopdracht: werken met methodes en objecten_x000D_
 *************************************************_x000D_
 * Opdrachten zitten verwerkt in de code_x000D_
 * 1) Declaratie constante_x000D_
 * 2) Declaratie van Paard (niet instantiering)_x000D_
 * 3) Declareer een button_x000D_
 * 4) Zet breedte en hoogte van het frame_x000D_
 * 5) Teken een finish streep_x000D_
 * 6) Creatie van 4 paarden_x000D_
 * 7) Pauzeer_x000D_
 * 8) Teken 4 paarden_x000D_
 * 9) Plaats tekst op de button_x000D_
 * 10) Start de race, methode aanroep_x000D_
 *_x000D_
 *_x000D_
 */_x000D_
import java.awt.*;_x000D_
import java.awt.event.*;_x000D_
import javax.swing.*;_x000D_
_x000D_
public class Race extends JFrame implements ActionListener {_x000D_
_x000D_
    /** declaratie van variabelen */_x000D_
    int var = 250; /*var van 250_x000D_
    /* (2) Declareer hier h1, h2, h3, h4 van het type Paard_x000D_
     *  Deze paarden instantieer je later in het programma_x000D_
     */_x000D_
    Image foto = Toolkit.getDefaultToolkit().getImage("C:\\Users\\aloys\\Desktop\\opdrachten\\jaar 2\\Afvink 3 jaar 2\\Mylittlepony.GIF");_x000D_
    Image newimage = foto.getScaledInstance(40, 40, Image.SCALE_DEFAULT);_x000D_
_x000D_
    Paard h1 = new Paard("Pinkie Pie", newimage);_x000D_
    Paard h2 = new Paard("Twilight Sparkle", newimage);_x000D_
    Paard h3 = new Paard("Fluttershy", newimage);_x000D_
    Paard h4 = new Paard("Rainbow Dash", newimage);_x000D_
    Paard h5 = new Paard("Applejack", newimage);_x000D_
_x000D_
    /* (3) Declareer een button met de naam button van het type JButton */_x000D_
    private JButton button;_x000D_
    private JPanel panel;_x000D_
_x000D_
    /** Applicatie - main functie voor runnen applicatie */_x000D_
    public static void main(String[] args) {_x000D_
        Race frame = new Race();_x000D_
        /* (4) Geef het frame een breedte van 400 en hoogte van 140 */_x000D_
        frame.setSize(800, 400);_x000D_
_x000D_
        frame.createGUI();_x000D_
        frame.setVisible(true);_x000D_
    }_x000D_
_x000D_
    /** Loop de race_x000D_
     */_x000D_
    private void startRace(Graphics g) {_x000D_
        panel.setBackground(Color.white);_x000D_
        /** Tekenen van de finish streep */_x000D_
        /* (5) Geef de<SUF>*/_x000D_
        int lengte = 250;_x000D_
        Graphics paper = panel.getGraphics();_x000D_
_x000D_
        g.setColor(Color.RED);_x000D_
        g.fillRect(lengte, 0, 3, 350);_x000D_
        /**(6) Creatie van 4 paarden_x000D_
         * Dit is een instantiering van de 4 paard objecten_x000D_
         * Bij de instantiering geef je de paarden een naam en een kleur mee_x000D_
         * Kijk in de class Paard hoe je de paarden_x000D_
         * kunt initialiseren._x000D_
         */_x000D_
        /** Loop tot een paard over de finish is*/_x000D_
        while (h1.getAfstand() < lengte_x000D_
                && h2.getAfstand() < lengte_x000D_
                && h3.getAfstand() < lengte_x000D_
                && h4.getAfstand() < lengte_x000D_
                && h5.getAfstand() < lengte) {_x000D_
            h1.run();_x000D_
            h2.run();_x000D_
            h3.run();_x000D_
            h4.run();_x000D_
            h5.run();_x000D_
_x000D_
            /* (7) Voeg hier een aanroep van de methode pauzeer toe zodanig_x000D_
             * dat er 1 seconde pauze is. De methode pauzeer is onderdeel_x000D_
             * van deze class_x000D_
             */_x000D_
            pauzeer(300);_x000D_
            /* (8) Voeg hier code in om 4 paarden te tekenen die rennen_x000D_
             * Dus een call van de methode tekenPaard_x000D_
             */_x000D_
            tekenPaard( paper, h1);_x000D_
            tekenPaard( paper, h2);_x000D_
            tekenPaard( paper, h3);_x000D_
            tekenPaard( paper, h4);_x000D_
            tekenPaard( paper, h5);_x000D_
        }_x000D_
        /** Kijk welk paard gewonnen heeft_x000D_
         */_x000D_
        if (h1.getAfstand() > lengte) {_x000D_
            JOptionPane.showMessageDialog(null, h1.getNaam() + " gewonnen!");_x000D_
        }_x000D_
        if (h2.getAfstand() > lengte) {_x000D_
            JOptionPane.showMessageDialog(null, h2.getNaam() + " gewonnen!");_x000D_
        }_x000D_
        if (h3.getAfstand() > lengte) {_x000D_
            JOptionPane.showMessageDialog(null, h3.getNaam() + " gewonnen!");_x000D_
        }_x000D_
        if (h4.getAfstand() > lengte) {_x000D_
            JOptionPane.showMessageDialog(null, h4.getNaam() + " gewonnen!");_x000D_
        }_x000D_
        if (h5.getAfstand() > lengte) {_x000D_
            JOptionPane.showMessageDialog(null, h5.getNaam() + " gewonnen!");_x000D_
        }_x000D_
_x000D_
    }_x000D_
_x000D_
    /** Creatie van de GUI*/_x000D_
    private void createGUI() {_x000D_
        setDefaultCloseOperation(EXIT_ON_CLOSE);_x000D_
        Container window = getContentPane();_x000D_
        window.setLayout(new FlowLayout());_x000D_
        panel = new JPanel();_x000D_
        panel.setPreferredSize(new Dimension(600, 250));_x000D_
        panel.setBackground(Color.white);_x000D_
        window.add(panel);_x000D_
        /* (9) Zet hier de tekst Run! op de button */_x000D_
        button = new JButton("RUN!");_x000D_
        window.add(button);_x000D_
        button.addActionListener(this);_x000D_
    }_x000D_
_x000D_
    /** Teken het paard */_x000D_
    private void tekenPaard(Graphics g, Paard h) {_x000D_
        g.setColor(Color.white);_x000D_
        g.fillRect(0, 40 * h.getPaardNummer(), h.getAfstand(), 44);_x000D_
        Image img = h.getimage();_x000D_
        g.drawImage(img, h.getAfstand(), 40*h.getPaardNummer(), this);_x000D_
    }_x000D_
_x000D_
    /** Actie indien de button geklikt is*/_x000D_
    public void actionPerformed(ActionEvent event) {_x000D_
        Graphics paper = panel.getGraphics();_x000D_
        /* (10) Roep hier de methode startrace aan met de juiste parameterisering */_x000D_
        startRace (paper);_x000D_
    }_x000D_
_x000D_
    /** Pauzeer gedurende x millisecondes*/_x000D_
    public void pauzeer(int msec) {_x000D_
        try {_x000D_
            Thread.sleep(msec);_x000D_
        } catch (InterruptedException e) {_x000D_
            System.out.println("Pauze interruptie");_x000D_
        }_x000D_
    }_x000D_
_x000D_
_x000D_
}_x000D_
