AI vorbereitet für verschiedene Challenge-Kriterien. (Sucht sich einen Spieler aus)
This commit is contained in:
44
src/AI.cs
44
src/AI.cs
@@ -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);*/
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user