diff --git a/inf3.csproj b/inf3.csproj
index 197dcf2..9dc1848 100644
--- a/inf3.csproj
+++ b/inf3.csproj
@@ -57,10 +57,13 @@
+
+
+
diff --git a/src/EnumDecision.cs b/src/EnumDecision.cs
index 1d71fcd..e4783cd 100644
--- a/src/EnumDecision.cs
+++ b/src/EnumDecision.cs
@@ -2,9 +2,9 @@
namespace WorldOfPeacecraft
{
- public enum Decision
- {
- DRAGON, STAGHUNT, SKIRMISH
- }
+ public enum Decision
+ {
+ FIGHT, REST, STAG, BUNNY, SWORD, ALCHEMY, MAGIC
+ }
}
diff --git a/src/GameStrategy.cs b/src/GameStrategy.cs
index 842915d..5507dec 100644
--- a/src/GameStrategy.cs
+++ b/src/GameStrategy.cs
@@ -3,40 +3,44 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
-namespace inf3.src
+namespace WorldOfPeacecraft
{
- class GameStrategy
+ class GameStrategy : IGame
{
- // 0 = defect, 1 = cooperate
- int opponentLastMove;
- bool opDefected = false;
+ Decision cooperate;
+ Decision defect;
int counter = 0;
- public GameStrategy(int opLM)
+ public GameStrategy(Decision cooperate, Decision defect)
{
- opponentLastMove = opLM;
+ this.cooperate = cooperate;
+ this.defect = defect;
+
}
- public int nextMove()
+ public Decision getFirstMove()
{
- if (opponentLastMove != 0)
+ return cooperate;
+ }
+
+ public Decision nextMove(Decision opLM)
+ {
+ if (opLM == cooperate && counter == 0)
{
- return opponentLastMove;
+ return cooperate;
}
else
{
- opDefected = true;
counter++;
if (counter < 10)
{
- return 0;
+ return defect;
}
else
{
counter = 0;
- opDefected = false;
- return 0;
+ return defect;
}
}
diff --git a/src/IGame.cs b/src/IGame.cs
new file mode 100644
index 0000000..3c84cd3
--- /dev/null
+++ b/src/IGame.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace WorldOfPeacecraft
+{
+ public interface IGame
+ {
+ Decision getFirstMove();
+ Decision getNextMove(Decision opLM);
+ }
+}
diff --git a/src/Parser.cs b/src/Parser.cs
index cda8da3..cc63d68 100644
--- a/src/Parser.cs
+++ b/src/Parser.cs
@@ -26,10 +26,17 @@ namespace WorldOfPeacecraft
public const string ValueY = "y";
public const string ValueCol = "col";
public const string ValueRow = "row";
- public const string EValueDragon = "DRAGON";
- public const string EValueStagunt = "STAGHUNT";
- public const string EValueSkirmish = "SKIRMISH";
+ public const string EValueFight = "FIGHT";
+ public const string EValueRest = "REST";
+ public const string EValueStag = "STAG";
+ public const string EValueBunny = "BUNNY";
+ public const string EValueSword = "SWORD";
+ public const string EValueMagic = "MAGIC";
+ public const string EValueAlchemy = "ALCHEMY";
public const string EValueWalkable = "WALKABLE";
+ public const string EValueSkirmish = "SKIRMISH";
+ public const string EValueStaghunt = "STAGHUNT";
+ public const string EValueDragon = "DRAGON";
public const string EValueWall = "WALL";
public const string EValueForest = "FOREST";
public const string EValueWater = "WATER";
@@ -239,7 +246,7 @@ namespace WorldOfPeacecraft
Result r = new Result(round, running, delay);
}
- private void ProcessOpponent(Block oppBlock)
+ private void ProcessOpponent (Block oppBlock)
{
int id = oppBlock.GetIntValue (ValueId);
int points = oppBlock.GetIntValue (ValuePoints);
@@ -247,14 +254,31 @@ namespace WorldOfPeacecraft
LinkedList unnamedValue = oppBlock.GetUnnamedValues ();
string stringValue = unnamedValue.First.Value;
Decision d;
- if (stringValue == EValueDragon)
- d = Decision.DRAGON;
- else if (stringValue == EValueStagunt)
- d = Decision.STAGHUNT;
- else if (stringValue == EValueSkirmish)
- d = Decision.SKIRMISH;
- else
+ switch (stringValue) {
+ case EValueAlchemy:
+ d = Decision.ALCHEMY;
+ break;
+ case EValueBunny:
+ d = Decision.BUNNY;
+ break;
+ case EValueFight:
+ d = Decision.FIGHT;
+ break;
+ case EValueMagic:
+ d = Decision.MAGIC;
+ break;
+ case EValueRest:
+ d = Decision.REST;
+ break;
+ case EValueStag:
+ d = Decision.STAG;
+ break;
+ case EValueSword:
+ d = Decision.SWORD;
+ break;
+ default:
throw new ParsingException("Wrong param"); // TODO Better message
+ }
Opponent o = new Opponent (id, points, total, d);
}
@@ -275,7 +299,7 @@ namespace WorldOfPeacecraft
case EValueDragon:
type = "Dragon";
break;
- case EValueStagunt:
+ case EValueStaghunt:
type = "Staghunt";
break;
case EValueSkirmish:
diff --git a/src/Skirmish.cs b/src/Skirmish.cs
new file mode 100644
index 0000000..901b323
--- /dev/null
+++ b/src/Skirmish.cs
@@ -0,0 +1,41 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace WorldOfPeacecraft
+{
+ class Skirmish : IGame
+ {
+ Random random = new Random();
+
+ public Skirmish()
+ {
+ }
+
+ public Decision getFirstMove()
+ {
+ return getNextMove();
+ }
+
+ public Decision getNextMove()
+ {
+ int randomNumber = random.Next(0, 2);
+ Decision bla;
+ switch (randomNumber)
+ {
+ case 0:
+ bla = Decision.SWORD;
+ break;
+ case 1:
+ bla = Decision.MAGIC;
+ break;
+ case 2:
+ default:
+ bla = Decision.ALCHEMY;
+ break;
+ }
+ return bla;
+ }
+ }
+}