/*---------------------------------------------------------------------------- * Klasse: BahnVerwalter.java * Beschreibung: Er enthält und verwaltet alle Bahnen * Autor: Jack Meyer * Datum: Dezember, 1997 * --------------------------------------------------------------------------- */ import java.awt.*; import java.util.Vector; public class BahnVerwalter { /* * Speicher Array für alle Bahen */ Bahn itsBahnen[]; /* * maximale Anzahl aller Bahen (Konstante) */ final int maxBahnen = 18; /* * index, welche Bahn gerade angewählt ist */ int currentBahnIndex; /* * ein Ball zum Spielen */ Ball itsBall; /* * Konstruktor, leere Bahnen */ BahnVerwalter () { itsBahnen = new Bahn[maxBahnen]; currentBahnIndex = 0; itsBall = new Ball(this); }; /* * neue Bahn hinzufügen */ void addNewBahn (int bahnNummer, String aStringParameter) { itsBahnen[bahnNummer-1] = new Bahn (aStringParameter); }; /* * eine bestimmte Bahn anwählen */ void selectBahn (int bahnNummer) { if ((bahnNummer >0) & (bahnNummer <= maxBahnen)) currentBahnIndex = bahnNummer-1; }; /* * die nächste Bahn anwählen */ void selectNextBahn () { // Zähler für neue Bahn int counter = currentBahnIndex; // suche nächste gute Bahn do { // zähle weiter counter ++; // test über BahnArray hinaus ? if (counter >=maxBahnen) { // wenn ja behalte letzte gute Bahn counter = currentBahnIndex; break; }; // Schalufe solange bis gute Bahn gefunden } while (itsBahnen[counter] == null); // diese nehmen wir currentBahnIndex = counter; }; /* * die vorige Bahn anwählen */ void selectPrevBahn () { // Zähler für neue Bahn int counter = currentBahnIndex; // suche nächste gute Bahn do { // zähle weiter counter --; // test über BahnArray hinaus ? if (counter <0) { // wenn ja behalte letzte gute Bahn counter = currentBahnIndex; break; }; // Schalufe solange bis gute Bahn gefunden } while (itsBahnen[counter] == null); // diese nehmen wir currentBahnIndex = counter; }; /* * die aktuell angewählte Bahn zurücksetzen */ void resetCurrentBahn () { currentBahn().resetBall(itsBall); /* korrektur des Balls um Verschiebung PlayField */ /* später irgendwie besser lösen !!!! */ Point ballPos; ballPos = itsBall.getPos(); ballPos.x += 150; ballPos.y += 15; itsBall.setPos(ballPos); itsBall.setDirection(0.0); itsBall.setSpeed(0.0); }; /* * liefert die angwählte Bahn zurück */ Bahn currentBahn () { return itsBahnen[currentBahnIndex]; }; /* * liefert den angwählten BahnIndex zurück */ int currentBahnIndex () { return currentBahnIndex +1; }; /* * test ob mindestens eine Bahn Exception hat */ boolean eineBahnHatException () { for (int i =0; i