Advertisement
CTMGame

Beta

Nov 23rd, 2014
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.31 KB | None | 0 0
  1. /**
  2. * Folgende Spielobjekte sind definiert:
  3. *
  4. * Spiel.Zustand.Ball Ball;
  5. * Repr?sentiert den Spielball mit seinen Koordinaten
  6. *
  7. * Eigenschaften des Ball-Spielobjekts:
  8. * Ball.xKoordinate() : int
  9. * Ball.yKoordinate() : int
  10. *
  11. * Zustandsmanipulation mit dem Ball-Spielobjekt:
  12. * zustand.listeBall() : List<Spiel.Zustand.Ball>
  13. *
  14. * Spiel.Zustand.Schlaeger Schlaeger;
  15. * Repr?sentiert einen Spieler mit eindeutiger ID sowie der xKoordinate seines Schl?gers
  16. *
  17. * Eigenschaften des Schlaeger-Spielobjekts:
  18. * Schlaeger.identifikation() : int
  19. * Schlaeger.yKoordinate() : int
  20. * Schlaeger.punktzahl() : int
  21. * Schlaeger.left() : boolean
  22. *
  23. * Zustandsmanipulation mit dem Schlaeger-Spielobjekt:
  24. * zustand.listeSchlaeger() : List<Spiel.Zustand.Schlaeger>
  25. *
  26. *
  27. * Sie koennen folgende Aktionen ausfuehren:
  28. *
  29. * zug.ausgabe(text : String) - Damit kannst du eine Debugausgabe machen. Verwende nicht System.out.println().
  30. *
  31. * zug.nachOben();
  32. * Bewegt den Schl?ger eine Einheit nach oben
  33. *
  34. * zug.nachUnten();
  35. * Bewegt den Sch?ger eine Einheit nach unten
  36. *
  37. *
  38. */
  39. import java.util.ArrayList;
  40. public class AI {
  41.  
  42. /**
  43. * Hier implementiert ihr den Zug, den eure KI machen soll.
  44. * @param id eine eindeutige Zahl, die eure KI identifiziert
  45. * @param zustand schau in den oberen Kommentarblock
  46. * @param zug schau in den oberen Kommentarblock
  47. */
  48.  
  49. Spiel.Zustand ZS;
  50. Spiel.Zug ZG;
  51. double[] Ort1 = new double[2];
  52. double[] Ort2 = new double[2];
  53. boolean inPosition = false;
  54. int zähler = 0;
  55. int yPos;
  56.  
  57.  
  58. public void zug(int id, Spiel.Zustand zustand, Spiel.Zug zug) {
  59. ZS = zustand;
  60. ZG = zug;
  61. double ySchnittpunkt=0;
  62. Ort1 = Ort2;
  63. Ort2 = holKoordinaten(id,zustand,zug);
  64. Spiel.Zustand.Schlaeger Schläger = zustand.listeSchlaeger().get(0);
  65. zähler++;
  66. double[] b = holBewegung();
  67. if(b[0]<0){
  68. if(zähler>4 && zähler<1){
  69. ySchnittpunkt = findeYSchnittpunkt(b);
  70. zug.ausgabe(ySchnittpunkt);
  71.  
  72. if(ySchnittpunkt > Schläger.yKoordinate()) {
  73. zähler = 0 ;
  74. zug.nachOben();}
  75. if(ySchnittpunkt < Schläger.yKoordinate()){
  76. zug.nachUnten();
  77. zähler = 0 ;
  78. }
  79. }
  80. }
  81. }
  82.  
  83. public int findeYSchnittpunkt(double[] bewegung){
  84. double[] ort = Ort2;
  85.  
  86. double skala = (-1.0 * ort[0]) / bewegung[0];
  87. double RohY = ort[1] + bewegung[1] * skala;
  88. return (int)reduziereY(RohY);
  89. }
  90.  
  91.  
  92. public double reduziereY(double Y){
  93. if(Y==0) return 0;
  94.  
  95. while(!(Y>0&&Y<60)){
  96. if(Y>60) Y = (60.0-(Y-60.0));
  97. if(Y<0) Y = -1.0 * Y;
  98. }
  99. return Y;
  100. }
  101.  
  102. public double[] holBewegung(){
  103. double[] bewegung = new double[2];
  104. bewegung[0] = Ort2[0] - Ort1[0];
  105. bewegung[1] = Ort2[1] - Ort1[1];
  106. return bewegung;
  107. }
  108.  
  109. public double[] holKoordinaten(int id, Spiel.Zustand zustand, Spiel.Zug zug){
  110. Spiel.Zustand.Ball B = zustand.listeBall().toArray(new Spiel.Zustand.Ball[zustand.listeBall().size()])[0];
  111. double[] raus = new double[2];
  112. raus[0] = (double)B.xKoordinate();
  113. raus[1] = (double)B.yKoordinate();
  114. return raus;
  115. }
  116. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement