import java.awt.*; import java.awt.Graphics; import javax.swing.*; /** * Ein Klotz rutscht die schiefe Ebene hinunter * SCHUELERVERSION ZUR VERVOLLSTAENDIGUNG!!! * @docschroeder * @28.02.2013 */ public class Ebene_S extends JFrame //Ebene erbt von JFrame! { private double alpha; //Neigungswinkel der Ebene private int [] xEbene = new int [3]; //x-Koordinaten der Rampe private int [] yEbene = new int [3]; //y-Koordinaten der Rampe /** * @param alpha in Grad * für Neigungswinkel der Ebene * gegen die Horizontale * * Konstruktor der Klasse Ebene: */ public Ebene_S(double pAlpha) { super("Schiefe Ebene..."); //ruft den Konstruktor der Oberklasse JFrame auf alpha = pAlpha; //pAlpha wird beim Instanziieren übergeben setLayout(null); //Ohne Layout-Manager setDefaultCloseOperation(3); //Schließen und Terminieren setResizable(false); //Fixe Größe setAlwaysOnTop(true); //Vordergrund setBounds(0,0,800,800); ebeneBerechnen(); //Punkte für Rampe werden berechnet setVisible(true); } public void ebeneBerechnen() { int breite = 600; //Breite fix! //int hoehe = HIER FEHLT WAS!; // Hoehe dynamisch durch Winkel xEbene[0] = 100; xEbene[2] = xEbene[0]; yEbene[0] = getHeight()-10; yEbene[1] = yEbene[0]; xEbene[1] = xEbene[0] + breite; yEbene[2] = yEbene[0] - hoehe; } public void paint(Graphics g) { g.clearRect(0,0,getWidth(),getHeight()); g.setColor(new Color(0,0,0)); g.fillRect(0,0,getWidth(), getHeight()); g.setColor(new Color(255,255,255)); g.fillPolygon(xEbene, yEbene, 3); bewegeAuto(g); } public void bewegeAuto(Graphics g) { double x = (double) xEbene[2]; //Bezugspunkt für Objekt double y = (double) yEbene[2]; Color cb = new Color(0,0,0); //schwarz Color cw = new Color(180,20,20);//rot double zeit = 500.0; //Anfangs ganz langsam, dann immer schneller while (x < xEbene[1]) { try {Thread.sleep((int) zeit);} catch (InterruptedException e) {} maleAuto(x,y,g,cb); //Altes Auto wird schwarz=unsichtbar auf Hintergrund /*HIER FEHLT WAS! Die x- und y-Koordinaten müssen //nachgeführt werden, damit das Fahrzeug immer parallel läuft!*/ maleAuto(x,y,g,cw); //An neuer Position in cw zeichnen if (zeit>5) {zeit *= 0.90;}//immer kleiner = immer schneller } try {Thread.sleep(3000);} catch (InterruptedException e) {}; System.exit(0); } public void maleAuto(double x, double y,Graphics g, Color c) { /*double x1 = x; double x2 = HIER FEHLT WAS!; double x3 = HIER FEHLT WAS!; double x4 = HIER FEHLT WAS!; double y1 = y; double y2 = HIER FEHLT WAS!; double y3 = HIER FEHLT WAS!; double y4 = HIER FEHLT WAS!; */ int [] xwerte = {(int) x1, (int) x2, (int) x3, (int) x4}; int [] ywerte = {(int) y1, (int) y2, (int) y3, (int) y4}; g.setColor(c); g.fillPolygon(xwerte,ywerte,4); } }