AI vorbereitet für verschiedene Challenge-Kriterien. (Sucht sich einen Spieler aus)

This commit is contained in:
Wafa Sadri
2014-06-05 16:09:20 +02:00
parent 9cea019b4f
commit 3b9e279f6f

View File

@@ -11,6 +11,7 @@ namespace WorldOfPeacecraft
private Random r; private Random r;
private int decision; private int decision;
private Backend Backend; private Backend Backend;
private string sortby;
public AI (Backend b) public AI (Backend b)
{ {
@@ -18,35 +19,64 @@ namespace WorldOfPeacecraft
timer = new Timer (5000.0); timer = new Timer (5000.0);
timer.Elapsed += new ElapsedEventHandler (this.OnTimedEvent); timer.Elapsed += new ElapsedEventHandler (this.OnTimedEvent);
Backend = b; Backend = b;
b.Challenge += this.ProcessChallenge;
timer.Start (); timer.Start ();
} }
private void OnTimedEvent(object source, ElapsedEventArgs e) private void OnTimedEvent(object source, ElapsedEventArgs e)
{ {
think (); Think ("random");
} }
private void think() private void Think(string sortby)
{ {
timer.Stop (); timer.Stop ();
if (r.Next (0, 2) == 0) { if (r.Next (0, 2) == 0) {
Console.WriteLine ("Challenging someone"); Console.WriteLine ("Another is being challenged");
lock (Backend) { lock (Backend) {
Dictionary <int, Player> playerlist; Dictionary <int, Player> playerlist;
Player player; Player player = null;
int x, y; int x, y, count;
playerlist = Backend.getPlayerList (); 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 (); x = player.GetX ();
y = player.GetY (); y = player.GetY ();
Backend.MoveTo (x, y); Backend.MoveTo (x, y);
} }
} else { } else {
Console.WriteLine ("Waiting for someone"); Console.WriteLine ("Though art making time pass for another");
} }
timer.Start (); 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);*/
}
} }
} }