예제 #1
0
파일: Test.cs 프로젝트: RudyMeijer/Chess
        private void TestMat1()
        {
            bord.Load(@"
            8 . . . . . . . . ;
            7 . . . . . .-p-K ;
            6 . . . . . . . . ;
            5 . .+D . . . . . ;
            4 . . . . . . . . ;
            3 . . . . . . . . ;
            2 . . . . . . . . ;
            1 . . . .+T . . . ;
              a b c d e f g h ");
            computer.maxPly = 5;
            //while(true)
            zet = computer.BedenkBesteZet(Kleur.WIT);
            string result = ShowZetHistory(zet);

            Debug.Assert(zet.ToString() == "Dh5", "zet ");
            //Debug.Assert(computer.bestEval == 1000, "bestEval ");
            //Debug.Assert(computer.bestEval == 91, "bestEval "); // V103 zet.mat
            //Debug.Assert(computer.count == 35643, "count <> "); // V102

            //Debug.Assert(computer.bestEval == 86, "bestEval "); // V103 (ply >1 && eval > 50) zet.mat -ply
            //Debug.Assert(computer.count == 81852, "count <> "); // V103 (ply >1 && eval > 50)
            //Debug.Assert(result == "Zetten: Dh5 Kg8 Te8 Kf8 Te8*Kf6", "result <> "); (ply >1 && eval > 50)
            //
            // if (zet.mat) return -eval
            //
            Debug.Assert(computer.bestEval == 50, "bestEval ");
            //Debug.Assert(computer.count == 85803, "count <> "); //V103
            Debug.Assert(computer.count == 85226, "count <> ");             //V104
            Debug.Assert(result == "Zetten: Dh5 Kg8 Te8 Kf8 Te8*Kf8", "result <> ");
        }
예제 #2
0
        //
        // Check
        //   Herstel: naarveld <> 0, vanveld = 0
        //
        private bool Check(Zet zet, bool herstel)
        {
            int vanStuk  = setStuk(zet.van.stuk);
            int naarStuk = setStuk(zet.naar.stuk);

            if (herstel)
            {
                if (veld[zet.van.x, zet.van.y] == 0 &&
                    veld[zet.naar.x, zet.naar.y] == vanStuk * ((zet.promotie)?(int)StukType.Dame:1) &&
                    vanStuk * naarStuk <= 0
                    )
                {
                    return(true);
                }
            }
            else
            {
                if (veld[zet.van.x, zet.van.y] == vanStuk &&
                    veld[zet.naar.x, zet.naar.y] == naarStuk &&
                    veld[zet.van.x, zet.van.y] > 0 == zet.van.stuk.kleur &&
                    vanStuk * naarStuk <= 0
                    )
                {
                    return(true);
                }
            }

            throw new ArgumentException();
        }
예제 #3
0
        //
        // Herstel zet op het bord.
        //
        public void Herstel(Zet zet)
        {
            //Check(zet, true);
            if (zet.naar == null)             // stuk naar doos
            {
                veld[zet.van.x, zet.van.y] = (int)StukType.geen;
                return;
            }
            veld[zet.van.x, zet.van.y]   = setStuk(zet.van.stuk);// ivm promotie veld[zet.naar.x, zet.naar.y];
            veld[zet.naar.x, zet.naar.y] = setStuk(zet.naar.stuk);

            if (zet.promotie)
            {
                Stuk dame = new Stuk(zet.van.stuk.kleur, StukType.Dame);
                evaluatie -= Stuk.Waarde(dame);
                evaluatie += zet.van.stuk.waarde;
            }
            if (zet.castling)             //V105
            {
                bool longCastling = zet.naar.x < 4;
                if (longCastling)
                {
                    veld[0, zet.van.y] = veld[3, zet.van.y];
                    veld[3, zet.van.y] = 0;
                }
                else
                {
                    veld[7, zet.van.y] = veld[5, zet.van.y];
                    veld[5, zet.van.y] = 0;
                }
                evaluatie -= (zet.van.stuk.kleur) ? 1 : -1;
            }
            evaluatie += zet.naar.stuk.waarde;
            //Check(zet,false);
        }
예제 #4
0
파일: Test.cs 프로젝트: RudyMeijer/Chess
        private void TestDefaultBord()
        {
            bord     = new Bord();
            computer = new Computer(bord, 5);
            zet      = computer.BedenkBesteZet(Kleur.WIT);
            Debug.Assert(zet.ToString() == "b3", "zet ");             // V103 Elapsed time: 156 ms
            Debug.Assert(computer.bestEval == 1, "besteval ");
            //Debug.Assert(computer.count == 28329, "count "); // Elapsed time: 1078 ms
            //Debug.Assert(computer.count == 27979, "count "); // V104
            Debug.Assert(computer.count == 27966, "count ");             // V105++
            computer.maxPly = 6;
            // V102 Elapsed time: 18734 ms
            // V103 Elapsed time: 1562 ms (Remove EvalueerAbsoluut)
            // V103 Beste zet: a3 eval: -1, count: 546771, Elapsed time: 1781 ms
            // V104 Beste zet: a3 eval: -1, count: 518719, Elapsed time: 1703 ms
            // V105 Beste zet: a3 eval: -1, count: 518719, Elapsed time: 1937 ms
            // V105 Beste zet: a3 eval: -1, count: 518719, Elapsed time: 1359 ms zonder Check() function

            //while(true)
            zet = computer.BedenkBesteZet(Kleur.WIT);
            Debug.Assert(zet.ToString() == "a3", "zet ");
            Debug.Assert(computer.bestEval == -1, "besteval <> -1");
            //Debug.Assert(computer.count == 546780, "count <>");
            //Debug.Assert(computer.count == 546771, "count <>"); // V103
            //Debug.Assert(computer.count == 518719, "count <>"); // V104
            Debug.Assert(computer.count == 483676, "count <>");             // V105++
        }
예제 #5
0
파일: Test.cs 프로젝트: RudyMeijer/Chess
        private void TestMatInZes()
        {
            bord.Load(@"
            8 .+L . . . .-P . ;
            7 . . . . . . .+P ;
            6+K .-p+P . . . . ;
            5 . . . . .+p . . ;
            4+T .-P . .-K . . ;
            3 . .+p .+T . .+p ;
            2 . . . .-L .+L . ;
            1 . .+D . . . . . ;
              a b c d e f g h ");
            computer.maxPly = 6;
            //cross-check probleem.
            //http://74.125.77.132/search?q=cache:VUBf58WhRAwJ:www.dewilligedame.nl/SCHAAKBOEKEN/Probleemboeken.htm+Mat+In+5+zetten&hl=en&ct=clnk&cd=10
            //V105 Beste zet: Le4 eval: 87, count: 27475336, Elapsed time: 76578 ms
            //V105 Beste zet: Le4 eval: 87, count: 27475336, Elapsed time: 50531 ms zonder Check() function.
            //V138 Beste zet: Le4 eval: 42, count: 27480455, Elapsed time: 117503 ms
            //V139 Beste zet: Le4 eval: 42, count: 27480455, Elapsed time: 119378 ms

            //while(true)
            zet = computer.BedenkBesteZet(Kleur.WIT);
            //string result = ShowZetHistory(zet);
            Debug.Assert(zet.ToString() == "Le4", "zet <> ");
            Debug.Assert(computer.bestEval == 42, "bestEval ");
            Debug.Assert(computer.count == 27480455, "count <> "); // V105
            //Debug.Assert(result == "Zetten: Le4 Pc4*Pd6 Ld3 Kf4*Te3 Dc1*Ke3", "result <> ");
        }
예제 #6
0
 private bool IsDiagonaal(Zet zet)
 {
     if (zet.van.x == zet.naar.x || zet.van.y == zet.naar.y)
     {
         return(false);                                                    // Horizontal
     }
     return(true);
 }
예제 #7
0
 private bool IsEen(Zet zet) //V141
 {
     if (Math.Abs(zet.van.x - zet.naar.x) == 1 ||
         Math.Abs(zet.van.y - zet.naar.y) == 1)
     {
         return(true);                                       // koning.
     }
     return(false);
 }
예제 #8
0
        private void Speler_Zet(object sender, Zet zet)
        {
            if (sender is string)
            {
                if (zet.van == null)
                {
                    bord.VoerUit(zet);                                  // vanuit doos.
                }
                else
                {
                    bord.Herstel(zet);                                  // Berg op in doos verwijder stuk van bord.
                }
            }
            else
            {
                //V140 if (zet.van.stuk.kleur == AanZet && !Mat) // Als speler aanzet is en niet mat staat.
                if (zet.van.stuk.kleur == AanZet) // Als speler aanzet is .
                {
                    bord.VoerUit(zet);
                    if (Schaak) //V136
                    {
                        if (zet.van.stuk.type == StukType.Koning)
                        {
                            MessageBox.Show("Je mag jezelf niet schaak zetten!");
                        }
                        else if (Mat)
                        {
                            MessageBox.Show("Einde oefening. Nog een keer?", "Het is MAT.");
                        }
                        else
                        {
                            MessageBox.Show(@"1) Probeer het stuk te slaan. 
2) Probeer er een stuk tussen te zetten. 
3) Of zet koning een stapje opzij.", "Je staat schaak!");
                        }
                        //MessageBox.Show("Je mag jezelf niet schaak zetten!");
                        bord.Herstel(zet);
                        speler.Herstel(zet);
                        clock.Toon(AanZet);
                    }
                    else
                    {
                        notation.Noteer(zet);                           //V111
                        AanZet = !AanZet;
                        if (mensTegenComputerToolStripMenuItem.Checked) //V142
                        {
                            ComputerZet();
                        }
                    }
                }
                else
                {
                    My.Status("{0} is aan zet.", AanZet?"Wit":"Zwart");
                    speler.Herstel(zet);
                }
            }
        }
예제 #9
0
 private bool IsDiagonaal1(Zet zet)
 {
     if (Math.Abs(zet.van.x - zet.naar.x) == 1 &&
         (zet.van.y - zet.naar.y) == ((zet.naar.stuk.kleur)?-1:1))
     {
         return(true);                                                          // V143
     }
     //Math.Abs(zet.van.y - zet.naar.y) == 1) return true; // Pion
     return(false);
 }
예제 #10
0
 public void Noteer(Zet zet)
 {
     while (stack.Count > stackPointer)
     {
         stack.RemoveAt(stackPointer);
     }
     ++stackPointer;
     stack.Add(zet);
     RemoveFromListview();
     add2ListView(zet);
     ShowZetCursor();
 }
예제 #11
0
        public Zet Forward()
        {
            Zet zet = null;;

            if (stackPointer < stack.Count)
            {
                stackPointer++;
                zet = stack[stackPointer - 1];
            }
            ShowZetCursor();
            return(zet);
        }
예제 #12
0
        public Zet Back()
        {
            Zet zet = null;;

            if (stackPointer > 0)
            {
                stackPointer--;
                zet = stack[stackPointer];
            }
            ShowZetCursor();
            return(zet);
        }
예제 #13
0
        static Point[][] DirectionTable = { PionZw, Pion, Paard, Loper, Toren, Dame, Koning }; // pas ook StukType aan!
        #endregion

        public bool IsZetAllowed(ref Zet zet)
        {
            foreach (Zet legalZet in DoeEenZet(zet.van))
            {
                if (zet.IsEquals(legalZet))
                {
                    zet = legalZet;                     // Add promotion and castling.
                    return(true);
                }
            }
            return(false);
        }
예제 #14
0
        private void btnForward_Click(object sender, EventArgs e) //V111
        {
            Zet zet = notation.Forward();

            if (zet != null)
            {
                bord.VoerUit(zet);
                speler.animate = false;                              //V145
                speler.VoerUit(zet);
                speler.animate = animationToolStripMenuItem.Checked; //V145
                AanZet         = !AanZet;
            }
        }
예제 #15
0
 private void btnBack_Click(object sender, EventArgs e)
 {
     for (int i = 0; i < 1; i++) //V127 //V142+
     {
         Zet zet = notation.Back();
         if (zet != null)
         {
             bord.Herstel(zet);
             speler.Herstel(zet);
             AanZet = !AanZet; //V109
         }
     }
 }
예제 #16
0
        public string ShowZetHistory(Zet zet)
        {
            if (zet == null)
            {
                return("geen zet meer");
            }
            int  savPly      = this.maxPly;
            int  savCount    = this.count;
            int  savBestEval = this.bestEval;
            bool kleur       = zet.van.stuk.kleur;

            Zet[]  zetten = new Zet[this.maxPly];
            string result = "Zetten: ";

            zetten[0] = zet.Clone();
            debug     = false;
            for (int i = 1; i <= savPly; i++)
            {
                bord.VoerUit(zet);
                if (zet.mat || i == savPly)
                {
                    break;
                }
                this.maxPly = savPly - i;
                kleur       = !kleur;
                zet         = this.BedenkBesteZet(kleur);
                if (zet == null)
                {
                    break;
                }
                zetten[i] = zet.Clone();
            }
            for (int i = 0; i < savPly; i++)
            {
                result += String.Format("{0} ", zetten[i]);
                if (zetten[savPly - i - 1] != null)
                {
                    bord.Herstel(zetten[savPly - i - 1]);
                }
            }
            //result += "eval: " + bestEval.ToString();
            result       += "eval: " + savBestEval.ToString(); //V125
            this.maxPly   = savPly;
            this.count    = savCount;
            this.bestEval = savBestEval;
            this.debug    = true;
            zet           = zetten[0];
            result        = result.Trim();
            Console.WriteLine(result);
            return(result);
        }
예제 #17
0
        private void add2ListView(Zet zet)
        {
            ListViewItem lvi;

            if (zet.van.stuk.kleur == Kleur.WIT)
            {
                lvi = new ListViewItem(ZetNummer.ToString());
                lv.Items.Add(lvi);
            }
            else
            {
                lvi = lv.Items[ZetNummer - 1];
            }
            lvi.SubItems.Add(zet.ToString());
            lv.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); //V113
        }
예제 #18
0
파일: Speler.cs 프로젝트: RudyMeijer/Chess
        private void ShowDot(Zet zet)
        {
            Point     van     = getBordLocation(zet.van.x, zet.van.y);
            Point     naar    = getBordLocation(zet.naar.x, zet.naar.y);
            OvalShape circle  = new OvalShape(shapeContainer);
            bool      isPiece = zet.naar.stuk.type != StukType.geen; //V138
            int       offset  = isPiece ? 0 : 12;
            int       r       = isPiece ? 26 : 2;

            circle.Location    = new Point(naar.X + offset, naar.Y + offset);
            circle.Name        = "DOT";
            circle.BorderColor = Color.Red;
            circle.Size        = new Size(r, r);
            circle.BringToFront();
            circle.Show();
        }
예제 #19
0
 public int VoerUit(Zet zet)
 {
     //Check(zet,false);
     //
     // Check for Mat.
     //
     zet.mat = zet.naar.stuk.type == StukType.Koning;
     //
     // Voer zet uit op het bord.
     //
     if (zet.van == null)             //Vanuit doos
     {
         veld[zet.naar.x, zet.naar.y] = setStuk(zet.naar.stuk);
     }
     else
     {
         veld[zet.naar.x, zet.naar.y] = veld[zet.van.x, zet.van.y];
         veld[zet.van.x, zet.van.y]   = (int)StukType.geen;
     }
     if (zet.promotie)
     {
         Stuk dame = new Stuk(zet.van.stuk.kleur, StukType.Dame);
         veld[zet.naar.x, zet.naar.y] = setStuk(dame);
         evaluatie += Stuk.Waarde(dame);
         evaluatie -= zet.van.stuk.waarde;
     }
     if (zet.castling)             //V105
     {
         bool longCastling = zet.naar.x < 4;
         if (longCastling)
         {
             veld[3, zet.van.y] = veld[0, zet.van.y];
             veld[0, zet.van.y] = 0;
         }
         else
         {
             veld[5, zet.van.y] = veld[7, zet.van.y];
             veld[7, zet.van.y] = 0;
         }
         evaluatie += (zet.van.stuk.kleur) ? 1 : -1;
     }
     //
     // Bepaal evaluatie.
     //
     evaluatie -= zet.naar.stuk.waarde;
     return(evaluatie); // absolute bordwaarde;
 }
예제 #20
0
파일: Test.cs 프로젝트: RudyMeijer/Chess
 private void TestPromotion()
 {
     bord.Load(@"
     8 . . . . . . . . ;
     7 . . .+p . . . . ;
     6 . . . . . . . . ;
     5 . . . . . . . . ;
     4 . . . . . . . . ;
     3 . . . . . . . . ;
     2 . . . . . . . . ;
     1 . . . . . . . . ;
       a b c d e f g h ");
     computer.maxPly = 1;
     zet             = computer.BedenkBesteZet(Kleur.WIT);
     Console.WriteLine("Zet: {0} eval: {1}", zet, computer.bestEval);
     Debug.Assert(computer.bestEval == 8, "evaluation <> 8");
     computer.maxPly = 2;
     zet             = computer.BedenkBesteZet(Kleur.WIT);
     Debug.Assert(computer.bestEval == 1000, "evaluation <> 1000");
 }
예제 #21
0
파일: Test.cs 프로젝트: RudyMeijer/Chess
 private void TestDameZet()
 {
     bord.Load(@"
     8 . . . . . . . . ;
     7 . . . . . . . . ;
     6 . . .-p . . . . ;
     5 . . . .+D . . . ;
     4 . . . . . . . . ;
     3 .+p . . . . . . ;
     2 . . . . . . . . ;
     1 . . . . . . . . ;
       a b c d e f g h ");
     computer.maxPly = 2;
     zet             = computer.BedenkBesteZet(Kleur.WIT);
     bord.VoerUit(zet);
     //bord.Show();
     bord.Herstel(zet);
     zet.Show(0, 0, computer.bestEval);
     Debug.Assert(computer.count == 4, "count <> 5.");
 }
예제 #22
0
파일: Test.cs 프로젝트: RudyMeijer/Chess
        private string ShowZetHistory(Zet zet)
        {
            int  savPly      = computer.maxPly;
            int  savCount    = computer.count;
            int  savBestEval = computer.bestEval;
            bool kleur       = zet.van.stuk.kleur;

            Zet[]  zetten = new Zet[computer.maxPly];
            string result = "Zetten: ";

            zetten[0] = zet.Clone();

            for (int i = 1; i <= savPly; i++)
            {
                bord.VoerUit(zet);
                //bord.Show();
                if (zet.mat || i == savPly)
                {
                    break;
                }
                computer.maxPly = savPly - i;
                kleur           = !kleur;
                zet             = computer.BedenkBesteZet(kleur);
                zetten[i]       = zet.Clone();
            }
            for (int i = 0; i < savPly; i++)
            {
                result += String.Format("{0} ", zetten[i]);
                if (zetten[savPly - i - 1] != null)
                {
                    bord.Herstel(zetten[savPly - i - 1]);
                }
            }
            computer.maxPly   = savPly;
            computer.count    = savCount;
            computer.bestEval = savBestEval;
            zet    = zetten[0];
            result = result.Trim();
            Console.WriteLine(result);
            return(result);
        }
예제 #23
0
파일: Test.cs 프로젝트: RudyMeijer/Chess
 private void TestCastling()
 {
     bord.Load(@"
     8-T . . .-K . .-T ;
     7-p . . . . . .-p ;
     6 . . . . . . . . ;
     5 . . . . . . . . ;
     4 . . . . . . . . ;
     3 . . . . . . . . ;
     2+p . . . . . .+p ;
     1+T . . .+K . .+T ;
       a b c d e f g h ");
     computer.maxPly = 1;
     //while(true)
     zet = computer.BedenkBesteZet(Kleur.WIT);
     Debug.Assert(computer.count == 16, "count <> ");
     Debug.Assert(computer.bestEval == 1, "bestEval <> ");
     //bord.PlaatsStuk(StukType.pion, Kleur.WIT, 2, 7);
     //zet = computer.BedenkBesteZet(Kleur.WIT);
     //Debug.Assert(computer.count == 6, "count <> ");
 }
예제 #24
0
파일: Test.cs 프로젝트: RudyMeijer/Chess
 private void TestAlphaBeta()
 {
     bord.Load(@"
     8 . . . . . . . . ;
     7 . . . . . . . . ;
     6-p . . . . . . . ;
     5 . . . . . . . . ;
     4 . .+D . . . . . ;
     3+p . . . . . . . ;
     2 . . . . . . . . ;
     1 . . . . . . . . ;
       a b c d e f g h ");
     computer.maxPly = 2;
     zet             = computer.BedenkBesteZet(Kleur.WIT);
     //bord.VoerUit(zet);
     //bord.Show();
     //bord.Herstel(zet);
     Console.WriteLine("Zet: {0} eval: {1}", zet, computer.bestEval);
     Debug.Assert(computer.count == 5, "count <> 5");
     //Debug.Assert(computer.count == 51, "count <> 51"); //AlphaBeta = 1001
 }
예제 #25
0
파일: Test.cs 프로젝트: RudyMeijer/Chess
 private void TestPionzet()
 {
     bord.Load(@"
     8 . . . . . . . . ;
     7 . . . . .-p . . ;
     6 . . . . . . . . ;
     5 . . . . . . . . ;
     4 . . . . . . . . ;
     3+p-p .-p+p+p . . ;
     2 . .+p .-p+p . . ;
     1 . . . . . . . . ;
       a b c d e f g h ");
     computer.maxPly = 1;
     zet             = computer.BedenkBesteZet(Kleur.WIT);
     Console.WriteLine("Zet: {0} eval: {1}", zet, computer.bestEval);
     //Debug.Assert(computer.count == 4, "count <>");
     Debug.Assert(computer.count == 7, "count <>"); // V104
     Debug.Assert(zet.ToString() == "c2*b3", "zet <>");
     zet = computer.BedenkBesteZet(Kleur.ZWART);
     Debug.Assert(computer.count == 7, "zwart count <>");
     Debug.Assert(zet.ToString() == "e1", "zet <>");
 }
예제 #26
0
파일: Test.cs 프로젝트: RudyMeijer/Chess
        private void TestMatToren()
        {
            bord.Load(@"
            8 . . . . . . . . ;
            7 . . . . . . .-K ;
            6 . . . . . . . . ;
            5 . . . . .+K . . ;
            4 . . . . . . . . ;
            3 . . . . . . . . ;
            2 . . . . . . . . ;
            1 . . . . . .+T . ;
              a b c d e f g h ");
            computer.maxPly = 7;
            //while (true)
            zet = computer.BedenkBesteZet(Kleur.WIT);
            string result = ShowZetHistory(zet);

            Debug.Assert(zet.ToString() == "Kf6", "zet ");
            Debug.Assert(computer.bestEval == 45, "bestEval ");
            Debug.Assert(computer.count == 434360, "count <> ");
            Debug.Assert(result == "Zetten: Kf6 Kh8 Tg7 Kh8*Tg7 Kf6*Kg7", "result <> ");
        }
예제 #27
0
        public Zet BedenkBesteZet(bool kleur)
        {
            if (debug)
            {
                Console.WriteLine("Bedenk beste zet voor {0} maxply: {1}", (kleur)?"Wit":"Zwart", maxPly);
            }
            count    = 0;
            stack    = new Zet[maxPly + 1];        // For test only
            besteZet = null;
            bestEval = 0;
            bord.ResetEvaluatie(); //V114
            long start = DateTime.Now.Ticks;

            BedenkBesteZet(kleur, 1000, 1); // 1001 = Doorzoek alle zetten op ply 1.
            long eind = DateTime.Now.Ticks;

            if (debug)
            {
                Console.WriteLine("Beste zet: {0} eval: {1}, count: {2}, Elapsed time: {3} ms", besteZet, bestEval, count, (eind - start) / 10000);
            }
            return(besteZet);
        }
예제 #28
0
파일: Speler.cs 프로젝트: RudyMeijer/Chess
        public void Herstel(Zet zet)
        {
            VerwijderShapeOpVanVeld(zet.van); //V135
            OvalShape shape = getShape(zet.naar);

            if (shape == null)
            {
                return;
            }
            // Herstel promotie.
            if (zet.promotie)
            {
                doos.BergOp(shape); // berg dame op
                shape = doos.HaalOp(zet.van.stuk);
            }
            shape.Location = getBordLocation(zet.van.x, zet.van.y); //npe bij terug in doos
            // Zet geslagen stuk terug.
            if (zet.naar.stuk.type != StukType.geen)
            {
                shape = doos.HaalOp(zet.naar.stuk);
                if (shape == null) //stuk staat al ergens op het bord.
                {
                }
                else
                {
                    shape.Location = getBordLocation(zet.naar.x, zet.naar.y);
                }
            }
            //Herstel castling.
            if (zet.castling)
            {
                Zet  toren        = new Zet();
                bool longCastling = zet.naar.x < 4;
                toren.van  = new Veld((longCastling) ? 0 : 7, zet.van.y);
                toren.naar = new Veld((longCastling) ? 3 : 5, zet.van.y);//V105++
                Herstel(toren);
            }
        }
예제 #29
0
파일: Speler.cs 프로젝트: RudyMeijer/Chess
        void shape_MouseDown(object sender, MouseEventArgs e)
        {
            selectedShape = null;
            if (!enabled)
            {
                return;
            }
            selectedShape = sender as OvalShape;
            Console.WriteLine("{2} shape_MouseDown {0} selectedShape {1}", selectedShape.Location, selectedShape.Name, spelerNummer);
            Point coor = getBordCoor(selectedShape.Location);

            zet = new Zet();
            if (coor == BUITENBORD)
            {
                zet.van = null;
            }
            else
            {
                zet.van = new Veld(coor);
                ShowDots(true);
            }
            dragMode = true;
        }
예제 #30
0
파일: Test.cs 프로젝트: RudyMeijer/Chess
        private void TestMat()
        {
            bord.Load(@"
            8 . . . . . .-p . ;
            7 . . . . . .-p-K ;
            6 . . . . . . . . ;
            5 . .+D . . . . . ;
            4 . . . . . . . . ;
            3 . . . . . . . . ;
            2 . . . . . . . . ;
            1 . . . .+T . . . ;
              a b c d e f g h ");
            computer.maxPly = 3;
            //while(true)
            zet = computer.BedenkBesteZet(Kleur.WIT);
            string result = ShowZetHistory(zet);

            Debug.Assert(zet.ToString() == "Dh5", "zet ");
            //Debug.Assert(computer.bestEval == 1000, "bestEval ");
            Debug.Assert(computer.bestEval == 70, "bestEval ");
            //Debug.Assert(computer.count == 1830, "count <> "); // V102
            Debug.Assert(computer.count == 1658, "count <> "); // V103 zet.mat
            //Debug.Assert(computer.count == 753, "count <> "); // V103 return mat
        }