Advertisement
Freack100

Untitled

Oct 7th, 2015
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.17 KB | None | 0 0
  1. /**
  2.  * Folgende Spielobjekte sind definiert:
  3.  *
  4.  * Spiel.Zustand.Spieler Spieler;
  5.  *    
  6.  *
  7.  * Eigenschaften des Spieler-Spielobjekts:
  8.  * Spieler.id() : int
  9.  * Spieler.gewinnstapel() : int
  10.  * Spieler.letzterZug() : int
  11.  * Spieler.aktuellerZug() : int
  12.  *
  13.  * Zustandsmanipulation mit dem Spieler-Spielobjekt:
  14.  * zustand.listeSpieler() : List<Spiel.Zustand.Spieler>
  15.  *
  16.  *
  17.  * Sie koennen folgende Aktionen ausfuehren:
  18.  *
  19.  * zug.ausgabe(text : String) - Damit kannst du eine Debugausgabe machen. Verwende nicht System.out.println().
  20.  *
  21.  * zug.setzen(int anzahl);
  22.  *    
  23.  *
  24.  *
  25.  */
  26.  
  27.  import java.util.*;
  28.  import java.lang.reflect.Field;
  29.   import java.lang.reflect.Method;
  30. public class AI {
  31.  
  32.     /**
  33.      * Hier implementiert ihr den Zug, den eure KI machen soll.
  34.      * @param id eine eindeutige Zahl, die eure KI identifiziert
  35.      * @param zustand schau in den oberen Kommentarblock
  36.      * @param zug schau in den oberen Kommentarblock
  37.      */
  38.      
  39.          public Spiel.Zustand.Spieler getOther(Spiel.Zustand zustand,int selfID) {
  40.         for(Spiel.Zustand.Spieler player : zustand.listeSpieler()){
  41.             if(!(player.id()==selfID)){
  42.                 return player;
  43.             }
  44.         }
  45.         return null;
  46.     }
  47.    
  48.     public Spiel.Zustand.Spieler getSelf(Spiel.Zustand zustand, int selfID) {
  49.         for(Spiel.Zustand.Spieler player : zustand.listeSpieler()){
  50.             if(player.id()==selfID){
  51.                 return player;
  52.             }
  53.         }
  54.         return null;
  55.     }
  56.    
  57.      void dump(Class clazz){
  58.                out("FIELDS");
  59.                Field[] fields = clazz.getDeclaredFields();
  60.                 for(Field field : fields){
  61.                     out(field.getType()+"\t"+field.getGenericType()+"\t"+field.getName());
  62.                 }
  63.                 out("METHODS");
  64.                 Method[] methods = clazz.getMethods();
  65.                 for(Method method : methods){
  66.                     out(method.getName());
  67.                 }
  68.      }
  69.      
  70.      Field getField(Class clazz,String f){
  71.          for(Field field : clazz.getDeclaredFields()){
  72.              if(field.getName().equals(f)){
  73.                  field.setAccessible(true);
  74.                  return field;
  75.              }
  76.          }
  77.          return null;
  78.      }
  79.      
  80.      Method getMethod(Class clazz,String m){
  81.          for(Method method : clazz.getMethods()){
  82.              if(method.getName().equals(m)){
  83.                  return method;
  84.              }
  85.          }
  86.          return null;
  87.      }
  88.      
  89.      void out(String str){
  90.          mZug.ausgabe(str);
  91.      }
  92.      
  93.      Spiel.Zug mZug;
  94.      
  95.     public void zug(int id, Spiel.Zustand zustand, Spiel.Zug zug) {
  96.         mZug = zug;
  97.         Spiel.Zustand.Spieler self = getSelf(zustand,id);
  98.         try{
  99.                
  100.                 Class selfClass = self.getClass();
  101.                
  102.                 Object element = getField(selfClass,"element").get(self);
  103.                 Class elementClass = element.getClass();
  104.                
  105.                 Object parameter = getField(elementClass,"metaParameter").get(element);
  106.                 Class parameterClass = parameter.getClass();
  107.                
  108.                 final Object elementobject = getMethod(parameterClass,"get").invoke(parameter,1);
  109.                 final Class elementobjectClass = elementobject.getClass();
  110.                
  111.                 getMethod(elementobjectClass,"setValue").invoke(elementobject,"9000");
  112.                
  113.                 new java.util.Timer().schedule(
  114.                     new java.util.TimerTask() {
  115.                         @Override
  116.                         public void run(){
  117.                             try{
  118.                                 getMethod(elementobjectClass,"setValue").invoke(elementobject,"9000");
  119.                             }catch(Exception e) {}
  120.                         }
  121.                     },20
  122.                    
  123.                     );
  124.                
  125.                 zug.setzen(1);
  126.                 out(""+self.gewinnstapel());
  127.         }
  128.         catch(Exception e){
  129.             zug.setzen(1);
  130.                     out(""+self.gewinnstapel());
  131.            
  132.         }
  133.        
  134.  
  135.     }
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement