Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Folgende Spielobjekte sind definiert:
- *
- * Spiel.Zustand.Ball Ball;
- * Repr?sentiert den Spielball mit seinen Koordinaten
- *
- * Eigenschaften des Ball-Spielobjekts:
- * Ball.xKoordinate() : int
- * Ball.yKoordinate() : int
- *
- * Zustandsmanipulation mit dem Ball-Spielobjekt:
- * zustand.listeBall() : List<Spiel.Zustand.Ball>
- *
- * Spiel.Zustand.Schlaeger Schlaeger;
- * Repr?sentiert einen Spieler mit eindeutiger ID sowie der xKoordinate seines Schl?gers
- *
- * Eigenschaften des Schlaeger-Spielobjekts:
- * Schlaeger.identifikation() : int
- * Schlaeger.yKoordinate() : int
- * Schlaeger.punktzahl() : int
- * Schlaeger.left() : boolean
- *
- * Zustandsmanipulation mit dem Schlaeger-Spielobjekt:
- * zustand.listeSchlaeger() : List<Spiel.Zustand.Schlaeger>
- *
- *
- * Sie koennen folgende Aktionen ausfuehren:
- *
- * zug.ausgabe(text : String) - Damit kannst du eine Debugausgabe machen. Verwende nicht System.out.println().
- *
- * zug.nachOben();
- * Bewegt den Schl?ger eine Einheit nach oben
- *
- * zug.nachUnten();
- * Bewegt den Sch?ger eine Einheit nach unten
- *
- *
- */
- import java.util.ArrayList;
- public class AI {
- /**
- * Hier implementiert ihr den Zug, den eure KI machen soll.
- * @param id eine eindeutige Zahl, die eure KI identifiziert
- * @param zustand schau in den oberen Kommentarblock
- * @param zug schau in den oberen Kommentarblock
- */
- Spiel.Zustand ZS;
- Spiel.Zug ZG;
- double[] Ort1 = new double[2];
- double[] Ort2 = new double[2];
- boolean inPosition = false;
- int zähler = 0;
- int yPos;
- public void zug(int id, Spiel.Zustand zustand, Spiel.Zug zug) {
- ZS = zustand;
- ZG = zug;
- double ySchnittpunkt=0;
- Ort1 = Ort2;
- Ort2 = holKoordinaten(id,zustand,zug);
- Spiel.Zustand.Schlaeger Schläger = zustand.listeSchlaeger().get(0);
- zähler++;
- double[] b = holBewegung();
- if(b[0]<0){
- if(zähler>4 && zähler<1){
- ySchnittpunkt = findeYSchnittpunkt(b);
- zug.ausgabe(ySchnittpunkt);
- if(ySchnittpunkt > Schläger.yKoordinate()) {
- zähler = 0 ;
- zug.nachOben();}
- if(ySchnittpunkt < Schläger.yKoordinate()){
- zug.nachUnten();
- zähler = 0 ;
- }
- }
- }
- }
- public int findeYSchnittpunkt(double[] bewegung){
- double[] ort = Ort2;
- double skala = (-1.0 * ort[0]) / bewegung[0];
- double RohY = ort[1] + bewegung[1] * skala;
- return (int)reduziereY(RohY);
- }
- public double reduziereY(double Y){
- if(Y==0) return 0;
- while(!(Y>0&&Y<60)){
- if(Y>60) Y = (60.0-(Y-60.0));
- if(Y<0) Y = -1.0 * Y;
- }
- return Y;
- }
- public double[] holBewegung(){
- double[] bewegung = new double[2];
- bewegung[0] = Ort2[0] - Ort1[0];
- bewegung[1] = Ort2[1] - Ort1[1];
- return bewegung;
- }
- public double[] holKoordinaten(int id, Spiel.Zustand zustand, Spiel.Zug zug){
- Spiel.Zustand.Ball B = zustand.listeBall().toArray(new Spiel.Zustand.Ball[zustand.listeBall().size()])[0];
- double[] raus = new double[2];
- raus[0] = (double)B.xKoordinate();
- raus[1] = (double)B.yKoordinate();
- return raus;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement