Auf Thema antworten

Aso hätt mir eigentlich auch selber aufallen müssen, ein Aufruf von repaint reicht in dem fall ja.


Dankeschön, aber du hast meine Frage noch nicht richtig beantwortet und ich habe die Antwort auf dieses Problem auch so noch nicht gefunden. Ich wollte statt dem Applet die Klasse Spiel aufrufen, auf der dann meine Schlange sich bewegt. Ungefär so nur dass hier nur das Spielfeld aufgerufen wird:


[code=Java]package PaketSnake;


import java.awt.*;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;



//Damit das Applet einen Thread versteht, wird das Interface Runnable API: java.lang.Runnable implementiert.

public class Schlange extends Spiel implements Runnable

{

    //Definiert die Anfangswerte, beginnt links oben

    int px = 0;

    int py = 50;

    Thread wiederhole;// Objektname aufgabenbezogen

   

    private boolean left = false;

    private boolean right = true;

    private boolean up = false;

    private boolean down = false;


    public void keyPressed (KeyEvent e)

    {

        int key = e.getKeyCode();


    if (key==KeyEvent.VK_LEFT)

     {

        left = true;

        right = false;

        up = false;

        down = false;

       

     }

 

    if (key==KeyEvent.VK_RIGHT)

     {

        right = true;

        left= false;

        up = false;

        down = false;

     }

    if (key==KeyEvent.VK_UP)

     {

        up = true;

        right = false;

        left= false;

        down = false;

     }


    if (key==KeyEvent.VK_DOWN)

     {

        down = true;

        right = false;

        left= false;

        up = false;

     }

   

    }

   


     public void start()

     {//Thread erzeugen und starten

            wiederhole = new Thread(this);

            wiederhole.start();

           

        }

    

     //Innerhalb der run() Methode teile ich in einer Dauerschleife mit was zu wiederholen ist.

        public void run(){//wiederhole

           

            while(true)

            {

                if (right)

                {

                    px++;//Wert aendern

                    try{ wiederhole.sleep(60);}//pausieren

                    catch(InterruptedException e){}

                }

               

                if (left)

                {

                    px--;

                    try{ wiederhole.sleep(60);}//pausieren

                    catch(InterruptedException e){}   

                }

               

                if (up)

                {

                    py--;

                    try{ wiederhole.sleep(60);}//pausieren

                    catch(InterruptedException e){}   

                }

               

                if (down)

                {

                    py++;

                    try{ wiederhole.sleep(60);}//pausieren

                    catch(InterruptedException e){}   

                }

               

                repaint();//neu zeichnen

               

            }

        }


        public void paint(Graphics g)//zuerst Eigenschaft dann Objekt

        {

            /**

             * Bilder sind vom Typ Image. Der Dateiname des Bildes (GIF oder JPG) wird aus der Klasse Toolkit dem Image Objekt mit der Methode:

                Toolkit.getDefaultToolkit().getImage (DateinameDesBildes) ¸bergeben.

                Anschlieflend kann es als Graphics-Objekt mit der Methode: drawImage(nameImageObjekt,x,y,null) gezeichnet werden.

             */

           

            if (right)

            {

            // Objekt holen

                    Image rhead = Toolkit.getDefaultToolkit().getImage("SnakeBody/snake_head_r_2.png");

                    Image rbody = Toolkit.getDefaultToolkit().getImage("SnakeBody/snake_body_r_.png");

                    //Image rcurve = getImage(getCodeBase(),"SnakeBody/snake_curve_tr.jpg");

                    Image rtail = Toolkit.getDefaultToolkit().getImage("SnakeBody/snake_tail_r.png");

            

            // Objekt ausgeben

                    g.drawImage(rhead,px,py,this);

                    g.drawImage(rbody,px-10,py,this);

                    g.drawImage(rbody,px-20,py,this);

                    g.drawImage(rbody,px-30,py,this);

                    g.drawImage(rbody,px-40,py,this);

                    g.drawImage(rtail,px-50,py,this);

            }  

           

            if (left)

            {

                Image lhead = Toolkit.getDefaultToolkit().getImage("SnakeBody/snake_head_l.png");

                Image lbody = Toolkit.getDefaultToolkit().getImage("SnakeBody/snake_body_l.png");

                Image ltail = Toolkit.getDefaultToolkit().getImage("SnakeBody/snake_tail_l.png");

               

                g.drawImage(lhead,px,py,this);

                g.drawImage(lbody,px+10,py,this);

                g.drawImage(lbody,px+20,py,this);

                g.drawImage(lbody,px+30,py,this);

                g.drawImage(lbody,px+40,py,this);

                g.drawImage(ltail,px+50,py,this);

                  

            }

           

            if (up)

            {

                Image uhead = Toolkit.getDefaultToolkit().getImage("SnakeBody/snake_head_u.png");

                Image ubody = Toolkit.getDefaultToolkit().getImage("SnakeBody/snake_body_u.png");

                Image utail = Toolkit.getDefaultToolkit().getImage("SnakeBody/snake_tail_u.png");

               

                g.drawImage(uhead,px,py,this);

                g.drawImage(ubody,px,py+10,this);

                g.drawImage(ubody,px,py+20,this);

                g.drawImage(ubody,px,py+30,this);

                g.drawImage(ubody,px,py+40,this);

                g.drawImage(utail,px,py+50,this);

               

            }

           

            if (down)

            {

                Image dhead = Toolkit.getDefaultToolkit().getImage("SnakeBody/snake_head_d.png");

                Image dbody = Toolkit.getDefaultToolkit().getImage("SnakeBody/snake_body_d.png");

                Image dtail = Toolkit.getDefaultToolkit().getImage("SnakeBody/snake_tail_d.png");

        

        // Objekt ausgeben

                g.drawImage(dhead,px,py,this);

                g.drawImage(dbody,px,py-10,this);

                g.drawImage(dbody,px,py-20,this);

                g.drawImage(dbody,px,py-30,this);

                g.drawImage(dbody,px,py-40,this);

                g.drawImage(dtail,px,py-50,this);

            }

               

                   

        }

          

}[/code]


Hier noch mal die Klasse Spiel

[code=Java]package paketSnake;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JLabel;

import javax.swing.JPanel;


import javax.swing.WindowConstants;

import javax.swing.SwingUtilities;

import java.awt.Graphics; // Enth‰lt Methoden zum zeichnen geometrischer Figuren

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;


/**

* This code was edited or generated using CloudGarden's Jigloo

* SWT/Swing GUI Builder, which is free for non-commercial

* use. If Jigloo is being used commercially (ie, by a corporation,

* company or business for any purpose whatever) then you

* should purchase a license for each developer using Jigloo.

* Please visit [url=http://www.cloudgarden.com]Cloud Garden (Java Resources)[/url] for details.

* Use of Jigloo implies acceptance of these licensing terms.

* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR

* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED

* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.

*/

public class Spiel extends javax.swing.JFrame {

    private JPanel pLeiste;

    private JLabel lbHintergrund;

    private JLabel lbScore;

    private JButton btHautmenue;

   



    /**

    * Auto-generated main method to display this JFrame

    */

    public static void main(String[] args) {

        SwingUtilities.invokeLater(new Runnable() {

            public void run() {

                Spiel inst = new Spiel();

                inst.setLocationRelativeTo(null);

                inst.setVisible(true);

               

            }

           

           

        });

    }

   

    public Spiel() {

        super();

        initGUI();

    }

   

    private void initGUI() {

        try {

            setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

            getContentPane().setLayout(null);

            {

                pLeiste = new JPanel();

                getContentPane().add(pLeiste);

                pLeiste.setBounds(0, 262, 452, 25);

                pLeiste.setLayout(null);

                {

                    btHautmenue = new JButton();

                    pLeiste.add(btHautmenue);

                    btHautmenue.setText("Hauptmenü");

                    btHautmenue.setBounds(349, 0, 98, 22);

                    btHautmenue.setFont(new java.awt.Font("Arial",0,11));

                    btHautmenue.addActionListener(new ActionListener() {

                        public void actionPerformed(ActionEvent evt) {

                            btHautmenueActionPerformed(evt);

                           

                            Hauptmenue menueFenster = new Hauptmenue();

                            menueFenster.setVisible(true);

                           

                            Spiel.this.dispose();

                        }

                    });


                }

                {

                    lbScore = new JLabel();

                    pLeiste.add(lbScore);

                    lbScore.setText("Score:");

                    lbScore.setBounds(6, 3, 49, 15);

                    lbScore.setFont(new java.awt.Font("Arial",0,11));

                }

            }

            {

                lbHintergrund = new JLabel();

                getContentPane().add(lbHintergrund);

                lbHintergrund.setIcon(new ImageIcon(getClass().getClassLoader().getResource("Bilder/Alabaster_sand.jpg")));

                lbHintergrund.setBounds(0, 0, 464, 259);

               

               

               

            }

           

            pack();

            setSize(460, 314);

            setTitle("Snake");

        } catch (Exception e) {

            //add your error handling code here

            e.printStackTrace();

        }

    }

   

    private void btHautmenueActionPerformed(ActionEvent evt) {

        System.out.println("btHautmenue.actionPerformed, event="+evt);

        //TODO add your code for btHautmenue.actionPerformed

    }


}

[/code]



Oben