Ergebnis 1 bis 5 von 5

[Java] Farbe eines Objektes ändern

  1. #1 Zitieren
    General Avatar von Kalaran
    Registriert seit
    Jan 2008
    Ort
    Osnabrück
    Beiträge
    3.104
    Hi Leute,
    in der Schule haben wir ein programm bekommen & sollten darauf ein kleines Projekt machen, bei dem wir etwas ändern & etwas neues aus dem programm machen.
    Nun gut, auf jeden Fall ist es etwas wie nen "Ufo-Rennen", war vorher nen "Auto-Rennen".
    Ich wollte noch einen Button einbauen, der einfach wie ein farbiges Rechteck aussieht, wo man draufklicken kann, damit das "Ufo" die Farbe ändert. Da komm ich aber nicht so ganz klar. Im ersten Teil wird ja die Farbe bestimmt, welche man im 2. Teil angeben kann. Da muss man doch dann irgendwie was neues einbauen, sodass beim klick auf den neuen button die farbe geändert wie. habt ihr vielleicht eine Idee ?

    Code:
    import java.awt.*;
    
    public class Auto
    {
        public int x;
        int y;
        Color farbe;
        public int geschw;
    
        Auto(int xpos, int ypos, Color color)
        {
            x = xpos;
            y = ypos;
            farbe = color;
        }
    
        public void gasGeben(int gas)
        {
            if (geschw<100)
                geschw = geschw + gas;
        }
    
        public void bremsen(int bremse)
        {
            if (geschw>0)
                geschw = geschw - bremse;
        }
    
        public void farbeaendern(Color farbe)
        {
            this.farbe=farbe;
        }
    
        public void zeichnen(Graphics g)
        {
            g.setColor(Color.black);
            g.drawOval(x+100,y+5,45,45);               // Zeichnen der Scheibe
            g.setColor(Color.black);
            g.fillOval(x+45,y+35,150,30);              // Zeichnen des Rumpfes
            g.setColor(farbe);
            g.drawOval(x+110,y+15,20,20);              // Kopf
            g.drawLine(x+110,y+35,x+100,y+20);         // Linker Arm
            g.drawLine(x+130,y+35,x+140,y+20);         // Rechter Arm
            g.drawOval(x+115,y+20,5,5);                // Linkes Auge
            g.drawOval(x+120,y+20,5,5);                // Rechtes Auge
            g.drawLine(x+115,y+30,x+125,y+30);         // Mund
            g.drawLine(x+115,y+30,x+115,y+28);         // Linker Mundwinkel
            g.drawLine(x+125,y+30,x+125,y+28);         // Rechter Mundwinkel
            // g.drawLine(x+110,y+15,x+20,x+20);       // (Laser des Ufo's - Noch nicht fertig)
    
        }
    }
    Und der 2. Teil :

    Code:
    import java.awt.*;
    import java.awt.event.*;
    import java.applet.*;
    
    public class AutoRennen extends Applet implements Runnable
    {
        Button button1 = new Button();
        Button button2 = new Button();
        Button button3 = new Button();
        Button button4 = new Button();
        Button button5 = new Button();            
    
        /** Neuen Thread für die Animation */
        Thread engine;
        boolean running;
    
        /** Die Autos instanzieren */
        Auto auto1 = new Auto(100,65,Color.green);
        Auto auto2 = new Auto(100,190,Color.blue);
    
        /** Das Applet konstruieren */
        public AutoRennen()
        {
        }
    
        /** Das Applet initialisieren */
        public void init()
        {
              /** Initialisierung der Komponenten */
              setLayout(null);
            button1.setLabel("Gas");
            button1.addMouseListener
                (new java.awt.event.MouseAdapter()
                    {
                        public void mouseClicked(MouseEvent e)
                        {
                                button1_mouseClicked(e);
                        }
                    }
                 );
    
            button2.setLabel("Bremse");
            button2.addMouseListener
                (new java.awt.event.MouseAdapter()
                    {
                        public void mouseClicked(MouseEvent e)
                        {
                            button2_mouseClicked(e);
                        }
                    }
                 );
            button3.setLabel("Gas");
            button3.addMouseListener
                (new java.awt.event.MouseAdapter()
                    {
                        public void mouseClicked(MouseEvent e)
                        {
                            button3_mouseClicked(e);
                        }
                    }
                 );
            button4.setLabel("Bremse");
            button4.addMouseListener
                (new java.awt.event.MouseAdapter()
                    {
                        public void mouseClicked(MouseEvent e)
                        {
                            button4_mouseClicked(e);
                        }
                    }
                 );
                 button5.setLabel("Farbe ändern");
               button5.addMouseListener
                (new java.awt.event.MouseAdapter()
                    {
                        public void mouseClicked(MouseEvent e)
                        {
                                button5_mouseClicked(e);
                        }
                    }
                 );
            add(button1);
                  button1.setBounds(42,270,60,20);
            add(button2);
                  button2.setBounds(112,270,60,20);
            add(button3);
            button3.setBounds(222,270,60,20);
            add(button4);
            button4.setBounds(292,270,60,20);
            add(button5);
            button5.setBounds(330,270,60,20);
    
            /** Den Thread instanzieren */
    
            if(engine==null)
                {
                    running=true;
                    engine=new Thread(this);
                    engine.start();
                }
        }
    
        /** Applet-Information holen */
        public String getAppletInfo()
        {
            return "Car-Racing";
        }
    
        /** Methodenaufruf bei Mouseclick */
        void button1_mouseClicked(MouseEvent e)
        {
            auto1.gasGeben(4);
        }
    
        void button2_mouseClicked(MouseEvent e)
        {
            auto1.bremsen(2);
        }
    
        void button3_mouseClicked(MouseEvent e)
        {
            auto2.gasGeben(10);
        }
    
        void button4_mouseClicked(MouseEvent e)
        {
            auto2.bremsen(10);
        }
        
            void button5_mouseClicked(MouseEvent e)
        {
    
    
        }
    
        /** Zeichnen des Applets */
        public void paint(Graphics g)
        {
              g.setColor(Color.white);
              g.fillRect(195,0,10,300);
              auto1.zeichnen(g);
              auto2.zeichnen(g);
              g.setColor(Color.white);
        }
    
        /** Die Animation starten */
        public void run()
        {
            while (running=true)
                {
                    /** Alle 50 Milisekunden den Appletinhalt neu zeichnen */
                    repaint();
    
                    /** Die Autos entlang der x-Achse bewegen */
                    auto1.x=auto1.x+auto1.geschw;
    
                    if(auto1.x > 500)
                        auto1.x = -150;
    
                    auto2.x = auto2.x+auto2.geschw;
    
                    if(auto2.x>500)
                        auto2.x=-150;
    
                    try {
                        engine.sleep(50);
                    }
                    catch(InterruptedException ie) {
                    }
                }
        }
    
        /** Animation stoppen und Thread löschen */
        public void stop()
        {
            if (engine!=null)
                {
                    running=false;
                    engine.stop();
                    engine=null;
                }
        }
    }
    Ich hoffe ihr könnt mir helfen
    Und wie programmiert man den Button so, dass er einfach ein farbiges Rechteck ist ?

    Danke schonmal im Voraus !
    Kalaran ist offline

  2. #2 Zitieren
    Mythos Avatar von Pyrokar
    Registriert seit
    May 2004
    Ort
    ..... hihihähähä hier gibt es Wände und wenn ich dagegen Lauf prall ich ab, wie ein Flummi..... hihihähähääähääääää
    Beiträge
    8.115
    Du kannst dem Button im Konstruktor ein Icon übergeben, siehe hier die Java-Dokumentation. Ich nehme mal an, dass dieses Icon dann auf dem Button angezeigt wird.
    [Bild: gg_schuetzen_ani.gif] | ~ DauJones ~ | ~ Klopfers-Web ~ | ~ German Bash ~ |
    Die meisten und schlimmsten Übel, die der Mensch dem Menschen zugefügt hat, entsprangen dem felsenfesten Glauben an die Richtigkeit falscher Überzeugungen.
    Bertrand Russell
    Religionskriege sind Konflikte zwischen erwachsenen Menschen, bei denen es darum geht, wer den cooleren, imaginaeren Freund hat. anonym
    Pyrokar ist offline

  3. #3 Zitieren
    General Avatar von Kalaran
    Registriert seit
    Jan 2008
    Ort
    Osnabrück
    Beiträge
    3.104
    Mh, irgendwie weiß ich nicht wie ich das richtig einfügen muss. Naja, als erstes brauche ich am Besten, dass man einfach nen Button hat & wenn man draufdrückt wird die Farbe des Objektes geändert.

    Und : Ja, ich bin noch nen ziemlicher Noob mit Java. Wir machen das auch noch nicht sehr lange. ^^
    Kalaran ist offline

  4. #4 Zitieren
    Mythos Avatar von Pyrokar
    Registriert seit
    May 2004
    Ort
    ..... hihihähähä hier gibt es Wände und wenn ich dagegen Lauf prall ich ab, wie ein Flummi..... hihihähähääähääääää
    Beiträge
    8.115
    Zitat Zitat von Kalaran Beitrag anzeigen
    Mh, irgendwie weiß ich nicht wie ich das richtig einfügen muss. Naja, als erstes brauche ich am Besten, dass man einfach nen Button hat & wenn man draufdrückt wird die Farbe des Objektes geändert.
    Das läuft analog zu den Buttons die du schon hast, nur dass du statt auto1.gasGeben() so etwas wie auto1.farbeWechseln() einbauen solltest - d.h. dein Auto braucht ne Methode, mit der es die Farbe ändern kann.

    Dass du noch nicht viel Java gemacht hast und dich vermutlich auch noch nicht lange mit Programmieren beschäftigst, merkt man - darum habe ich auch keine Kritik am Programmaufbau geäußert, sowas ist am Anfang unwichtig.
    [Bild: gg_schuetzen_ani.gif] | ~ DauJones ~ | ~ Klopfers-Web ~ | ~ German Bash ~ |
    Die meisten und schlimmsten Übel, die der Mensch dem Menschen zugefügt hat, entsprangen dem felsenfesten Glauben an die Richtigkeit falscher Überzeugungen.
    Bertrand Russell
    Religionskriege sind Konflikte zwischen erwachsenen Menschen, bei denen es darum geht, wer den cooleren, imaginaeren Freund hat. anonym
    Pyrokar ist offline

  5. #5 Zitieren
    General Avatar von Kalaran
    Registriert seit
    Jan 2008
    Ort
    Osnabrück
    Beiträge
    3.104
    Zitat Zitat von Pyrokar Beitrag anzeigen
    Das läuft analog zu den Buttons die du schon hast, nur dass du statt auto1.gasGeben() so etwas wie auto1.farbeWechseln() einbauen solltest - d.h. dein Auto braucht ne Methode, mit der es die Farbe ändern kann.

    Dass du noch nicht viel Java gemacht hast und dich vermutlich auch noch nicht lange mit Programmieren beschäftigst, merkt man - darum habe ich auch keine Kritik am Programmaufbau geäußert, sowas ist am Anfang unwichtig.
    Okay, ich probiers gleich mal aus.

    Also der gesamte Programmtext so ist auch nich von mir, den haben wir von unserem Lehrer bekommen. Den sollten wir so modifizieren, dass es etwas neues wird.
    Kalaran ist offline

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •