public static void MinmaxTest(IPlayer white, IPlayer black) { int wynik = 0, wht = 0, draw = 0, blc = 0, total = 0; int size = 100; Move m; for (int i = 0; i < size; i++) { // int now = DateTime.Now.Second; bool kto = true; Plansza p = new Plansza(); p.rozpoczecie(); wynik = 0; while ((wynik = p.GameEnded()) == 2) { if (kto) { m = white.MakeMove(p, 1); if (m == null) { wynik = 1; break; } } else { m = black.MakeMove(p, 2); if (m == null) { wynik = -1; break; } } p.ExecuteMove(m); kto = !kto; } switch (wynik) { case -1: wht++; break; case 0: draw++; break; case 1: blc++; break; default: break; } // Console.WriteLine(wynik + " \t" + (DateTime.Now.Second-now) + " sec."); total++; } Console.WriteLine(white.MyName() + ":\t" + wht);// + "," + Math.Round(((double)wht/(double)total * 100.0), 2)); Console.WriteLine("remis:\t" + draw); Console.WriteLine(black.MyName() + ":\t" + blc);// + "," + Math.Round(((double)blc / (double)total * 100.0), 2)); Console.WriteLine(); }
public static void TestFunction(int size, IPlayer white, IPlayer black) { StreamWriter sw = new StreamWriter("final_test.csv", true, System.Text.Encoding.UTF8); int wynik = 0, wht = 0, draw = 0, blc = 0, total = 0; Move m; for (int i = 0; i < size; i++) { // int now = DateTime.Now.Second; bool kto = true; Plansza p = new Plansza(); p.rozpoczecie(); wynik = 0; while ((wynik = p.GameEnded()) == 2) { if (kto) { m = white.MakeMove(p, 1); if (m == null) { wynik = 1; break; } } else { m = black.MakeMove(p, 2); if (m == null) { wynik = -1; break; } } p.ExecuteMove(m); kto = !kto; } switch (wynik) { case -1: wht++; break; case 0: draw++; break; case 1: blc++; break; default: break; } // Console.WriteLine(wynik + " \t" + (DateTime.Now.Second-now) + " sec."); total++; } sw.WriteLine(white.MyName() + "," + black.MyName() + "," + (double)wht / (double)total * 100.0 + "," + (double)draw / (double)total * 100.0 + "," + (double)blc / (double)total * 100.0 + "," + total); sw.Close(); }
public List<Plansza[]> Parse(int count, int krok, int rank) { bool stop = false; Plansza p = new Plansza(); int pp = 200; int kkrok = 0; int nrListy = 0; int pionki = 0; while (true) { string s = ReadFileByLine(); if (s == null) return plansze; while ( stop && !s.StartsWith("[Event")) { s = ReadFileByLine(); } stop = false; //if (plansze.Count > pp) { //Console.WriteLine("{0}", plansze.Count); //pp = pp + 500; } if (plansze.Count == count) break; if (s.StartsWith("[Event")) { kkrok++; p = new Plansza(); p.rozpoczecie(); } else if (s.StartsWith("[Result")) { s = s.Remove(0, 9); if (s.StartsWith("1")) p.wynik = 1; else p.wynik = -1; } else if (s.StartsWith("[WhiteElo")) { s = s.Remove(0, 11); s = s.Remove(3); //bylo 4 int r = int.Parse(s); if (r < rank) { stop = true;}// continue; } } else if (s.StartsWith("[BlackElo")) { s = s.Remove(0, 11); s = s.Remove(3); //bylo 4 int r = int.Parse(s); if (r < rank) { stop = true; }// continue; } } else if (!s.StartsWith("[")) { //if (stop) continue; plansze.Add(new Plansza[(int)((24 / krok) - 1)]); pionki = 24; StringBuilder sb = new StringBuilder(); string tmp;// = ReadFileByLine(); while ((tmp = ReadFileByLine()) != "") { sb.Append(tmp + " "); //s.Insert(s.Length, tmp); //while (!tmp.StartsWith(@"a-h")) // tmp = tmp.Remove(0, 1); //if (tmp. } if (sb.ToString().Contains("{*}")) { stop = true; continue; } Regex rgx = new Regex("[0-9][.] | [0-9][0-9][.]"); foreach (string str in rgx.Split(sb.ToString())) { string[] ss = str.Split(' '); //if (ss[0] == "") ss. //if (ss.Length != 4) continue; for (int m = 0; m < ss.Length; m++) { if (ss[m] == "") continue; if (ss[m][0] == '0' || ss[m][0] == '1') { stop = true; break; } int k = 0; while (k + 2 < ss[m].Length && (ss[m][k + 2] == 'x' || ss[m][k + 2] == '-')) { char sdf = ss[m][k + 0]; int no = getNoFromLetter(sdf); int no2 = int.Parse(ss[m].Substring(k + 1, 1)) - 1; //p.pole[no, no2] = 1; sdf = ss[m][k + 3]; int no3 = getNoFromLetter(sdf); int no4 = int.Parse(ss[m].Substring(k + 4, 1)) - 1; //if (m == 1) p.pole[no3, no4] = 3; //else p.pole[no3, no4] = 2; Move m1 = new Move(new Point(no, 7 - no2)); m1.Add(new Point(no3, 7 - no4)); p.ExecuteMove(m1); //break; if (p.iloscPionkow() == pionki - krok) { Plansza r = p.Clone(); plansze[nrListy][24/krok-pionki/krok] = r; pionki = p.iloscPionkow(); //kkrok = 0; } else if (p.iloscPionkow() < pionki - krok) { } k = k + 3; } //if (kkrok == krok) //{ // Plansza r = p.Clone(); // plansze[nrListy].Add(r); kkrok = 0; //} //return plansze; } if (stop) break; } if (stop) { nrListy++; continue; } } } //plansze.RemoveAt(plansze.Count - 1); return plansze; }