diff --git a/src/AI.cs b/src/AI.cs index a63f759..3ee7745 100644 --- a/src/AI.cs +++ b/src/AI.cs @@ -11,6 +11,7 @@ namespace WorldOfPeacecraft private Random r; private int decision; private Backend Backend; + private string sortby; public AI (Backend b) { @@ -18,35 +19,64 @@ namespace WorldOfPeacecraft timer = new Timer (5000.0); timer.Elapsed += new ElapsedEventHandler (this.OnTimedEvent); Backend = b; + b.Challenge += this.ProcessChallenge; timer.Start (); } private void OnTimedEvent(object source, ElapsedEventArgs e) { - think (); + Think ("random"); } - private void think() + private void Think(string sortby) { timer.Stop (); if (r.Next (0, 2) == 0) { - Console.WriteLine ("Challenging someone"); + Console.WriteLine ("Another is being challenged"); lock (Backend) { Dictionary playerlist; - Player player; - int x, y; + Player player = null; + int x, y, count; playerlist = Backend.getPlayerList (); - player = playerlist[2235]; + + switch (sortby) { + case "points": + //TODO + //Sortiere playerlist nach Anzahl der Punkte aufsteigend + break; + case "closest": + //TODO + //Sortiere playerlist nach Distanz + break; + case "random": + count = playerlist.Count; //Zähle Anzahl Spieler und wähle einen zufälligen + player = playerlist [r.Next (0, ++count)]; //'++' weil random ist sonst immer kaputt + break; + default: //Fall-Through in C# nicht erlaubt...!? + count = playerlist.Count; //Zähle Anzahl Spieler und wähle einen zufälligen + player = playerlist [r.Next (0, ++count)]; //'++' weil random ist sonst immer kaputt + break; + } + x = player.GetX (); y = player.GetY (); Backend.MoveTo (x, y); } } else { - Console.WriteLine ("Waiting for someone"); + Console.WriteLine ("Though art making time pass for another"); } timer.Start (); } + + private void ProcessChallenge(Challenge c){ + /* Console.WriteLine ("A challenge hath been proclaimed"); + IGame game = new Skirmish (); + IGame dragonfight = new GameStrategy (Decision.FIGHT, Decision.REST); + IGame staghunt = new GameStrategy (Decision.STAG, Decision.BUNNY); + game.getFirstMove (); + game.getNextMove (letzteEntscheidungDesGegners);*/ + } } }