public override void SetField(int idx, char value) { if (IsEntryPointInTheSize(idx)) { VarField = VarField.Remove(idx, 1).Insert(idx, SitCodeHelper.PlayertoSitCode(value).ToString()); } }
// KI public void Learn() { #region Fields char player = '2'; int runden = Rundefrage(); int zug; string momsitcode = SitCodeHelper.GetEmpty(9); int[,] sit_codes = new int[(int)runden, 9]; int[,] zuege = new int[(int)runden, 9]; int[] wertungen = new int[(int)runden]; bool gewonnen = false; #endregion Console.WriteLine("Berechne Daten.."); for (int currround = 0; currround < runden; currround++) { for (int i = 0; i < 9; i++) { player = SitCodeHelper.PlayerChange(player); sit_codes[currround, i] = int.Parse(momsitcode); zug = SitCodeHelper.GetRandomZug(momsitcode, Length); zuege[currround, i] = zug; momsitcode = momsitcode.Remove(zug, 1).Insert(zug, player.ToString()); gewonnen = Logik.WinChecker.Pruefe(SitCodeHelper.ToPlayer(player), Fields.SitCode.GetInstance(momsitcode, Width, Height)); // Wertungen // Aufwerten if ((gewonnen) && (player != KIPlayer)) { wertungen[currround] = 1; } else if ((gewonnen) && (player == KIPlayer)) { wertungen[currround] = -1; } else if ((i == 8) && (!gewonnen)) { wertungen[currround] = 0; } // Ist Spiel Zu Ende? if ((gewonnen) || (i == 8)) { momsitcode = SitCodeHelper.GetEmpty(9); i = 9; player = 'X'; } } if (currround % 100 == 0) { Console.WriteLine("Spielrunde Nr." + currround); } } Console.WriteLine("Fertig mit dem Berechnen der Daten."); Console.WriteLine("Speichere Daten"); writerreader.Write(zuege, sit_codes, wertungen); Console.WriteLine("Fertig, Taste drücken zum Beenden"); Console.ReadLine(); }
public void Learn() { #region Fields int runden = Rundefrage(); int zug; string momsitcode = SitCodeHelper.GetEmpty(Length); int[,] sit_codes = new int[runden, Length]; int[,] zuege = new int[runden, Length]; int[] wertungen = new int[runden]; GameStates state = GameStates.Laufend; Game.Game game = new Game.Game(new Player('1'), new Player('2'), null, new Fields.SitCode(3, 3)); #endregion OnShowMessageEvent("Berechne Daten.."); for (int currround = 0; currround < runden; currround++) { for (int i = 0; i < 9; i++) { momsitcode = SitCodeHelper.StringToSitCode(game.Field.ToString()); sit_codes[currround, i] = int.Parse(momsitcode); zug = FieldHelper.GetRandomZug(game.Field); zuege[currround, i] = zug; game.Logik(Vector2i.FromIndex(zug, 3, 3)); state = FieldHelper.GetGameState(game.Field, game.Player); // Wertungen // Aufwerten if (state == GameStates.Gewonnen) { wertungen[currround] = 1; } else if (state == GameStates.Verloren) { wertungen[currround] = -1; } else if (state == GameStates.Unentschieden) { wertungen[currround] = 0; } // Ist Spiel Zu Ende? if (game.HasEnd()) { game.NewGame(); } } if (currround % 100 == 0) { OnShowMessageEvent("Spielrunde Nr. " + currround); } } OnShowMessageEvent("Fertig mit dem Berechnen der Daten."); OnShowMessageEvent("Speichere Daten"); writerReader.Write(zuege, sit_codes, wertungen); OnShowMessageEvent("Fertig, Taste drücken zum Beenden"); OnGetStringEvent(); }
public override char GetField(int idx) { if (IsEntryPointInTheSize(idx)) { return(SitCodeHelper.ToPlayer(VarField[idx])); } else { return('n'); } }
private int TestForLineComplettings(Fields.Field field, char player) { int ret = -1; for (int playerpos = 0; (playerpos < field.Length) && (ret == -1); playerpos++) { if (field.IsFieldEmpty(playerpos)) { field.SetField(playerpos, player); if ((Logik.WinChecker.Pruefe(SitCodeHelper.ToPlayer(player), field)) && (ret == -1)) { ret = playerpos; } field.SetField(playerpos, ' '); } } return(ret); }
private int TestForHumanBlock() { int block_zug = -1; for (int playerpos = 0; (playerpos < field.Length) && (block_zug == -1); playerpos++) { if (field.IsFieldEmpty(playerpos)) { field.SetField(playerpos, HumanPlayer); if ((Logik.WinChecker.Pruefe(SitCodeHelper.ToPlayer(HumanPlayer), field)) && (block_zug == -1)) { block_zug = playerpos; } field.SetField(playerpos, ' '); } } return(block_zug); }
public int Play(Fields.Field field) { string sitcode = SitCodeHelper.StringToSitCode(field.ToString()); List <int> fields = new List <int>(writerReader.Read(sitcode)); int zug = -1; do { zug = fields.GetHighestIndex(); if (field.IsFieldEmpty(zug)) { break; } else { fields.Remove(zug); } } while (fields.Count != 0); if (zug == -1) { zug = FieldHelper.GetRandomZug(field); } return(zug); }
public int Play(Fields.IField field, char spieler) { this.field = field; int win_zug = TestForOneWin(); int block_zug = TestForHumanBlock(); int set_zug = TestForBestPosition(); if (win_zug != -1) { return(win_zug); } else if (block_zug != -1) { return(block_zug); } else if (set_zug != -1) { return(set_zug); } else { return(SitCodeHelper.GetRandomZug(SitCodeHelper.StringToSitCode(field.ToString()), Length)); } }
public int Play(Fields.IField field, char spieler) { string sitcode = SitCodeHelper.StringToSitCode(FieldHelper.GetString(field)); List <int> Fields = new List <int>(writerreader.Read(sitcode)); int zug = -1; do { zug = Fields.ToArray().GetHighestIndex(); if (field.IsFieldEmpty(zug)) { break; } else { Fields.Remove(zug); } } while (true); if (zug == -1) { zug = SitCodeHelper.GetRandomZug(sitcode, Length); } return(zug); }
public override void Initialize() { VarField = SitCodeHelper.GetEmpty(Length); }
public int Play(Fields.IField field, char spieler) { string sitcode = SitCodeHelper.StringToSitCode(FieldHelper.GetString(field)); return(SitCodeHelper.GetRandomZug(sitcode, Length)); }