コード例 #1
0
ファイル: Program.cs プロジェクト: szubster/warcaby
        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();
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: szubster/warcaby
        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();
        }
コード例 #3
0
ファイル: BoardsParser.cs プロジェクト: szubster/warcaby
        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;
        }