/*---------------------------------------------------------------------------- * Klasse: Fairway.java * Beschreibung: Laufbahn auf der der Ball rollt * Autor: Jack Meyer * Datum: November, 1997 * --------------------------------------------------------------------------- */ import java.awt.*; class Fairway extends Hindernis { /** * Display Farbe der Laufbahn, Klassenkonstante! */ static final Color colorFairway = new Color (102,153,102); /** * Reibungswiderstand, Betrag um den Geschwidigkeit abnimmt */ final double myFriction = 0.5; /** * Konstruktor der Laufbahn */ Fairway (int x, int y, int w, int h) { super (x, y, w, h); }; /** * String Konstruktor der Laufbahn */ Fairway (String aStringParameter) throws ParsingException, NumberFormatException, StringIndexOutOfBoundsException { this (0,0,0,0); double[] dArgs = Parser.ParseStringToDouble(aStringParameter); /* testen ob genau 4 Parameter vorhanden */ if (dArgs.length != 4) throw new ParsingException ("Fairway muss genau 4 Parameter (X1,Y1, X2, Y2) haben"); /* Parameter neu setzten */ this.setPos ((int)dArgs[0], (int)dArgs[1]); this.setSize ((int)dArgs[2], (int)dArgs[3]); }; /** * Zeichenmethode für die Laufbahn */ void draw (Graphics g, int posX, int posY) { g.setColor(colorFairway); g.fillRect(posX+position.x, posY+position.y, size.x, size.y); }; /** * Bewegung des Balls: Test ob Kollision */ void collisionDetection (Ball aBall, int posX, int posY) { // System.out.println("Collision Detection in Fairway, Ball: ("+aBall.getPosX()+","+aBall.getPosY()+"), Faiway: ("+(posX+this.position.x)+","+(posY+this.position.y)+","+(posX+this.position.x+size.x)+","+(posY+this.position.y+size.y)+")"); // test ob auf Grundboden, für Geschwindigkeit if ((aBall.getPosX() >= Math.min((posX+this.position.x),(posX+this.position.x+this.size.x))) & (aBall.getPosX() <= Math.max((posX+this.position.x),(posX+this.position.x+this.size.x))) & (aBall.getPosY() >= Math.min((posY+this.position.y),(posY+this.position.y+this.size.y))) & (aBall.getPosY() <= Math.max((posY+this.position.y),(posY+this.position.y+this.size.y))) ) { // reduziere Geschwindigkeit // System.out.println("Collision Detected in Fairway, Reduce speed"); aBall.setSpeed (aBall.getSpeed() - myFriction); }; }; };