Exemplo n.º 1
0
        // Sköter det som ska hända när spelaren gjort ett drag
        private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            if (spelarePåDrag != null && spelarePåDrag.EgenTyp == Spelare.Typ.Människa)
            {
                // x och y-koordinaterna för fältet som klickades
                int x = e.X / fältstorlek;
                int y = (e.Y - menuStrip1.Size.Height) / fältstorlek;         // Menyraden tar upp plats i yled

                // Kollar att spelaren tryckte på ett fält innanför spelplanen och att fältet är tomt
                if (x >= 0 && x < Bräde.sida && y >= 0 && y < Bräde.sida && Bräde.ställning[x, y] == 0)
                {
                    Bräde.ställning[x, y] = spelarePåDrag.Teckenvärde;
                    Refresh();

                    Bräde.Fält drag = new Bräde.Fält(x, y);
                    Bräde.uppdateraMöjligaDrag(drag);
                    Bräde.gjordaDrag.Add(drag);

                    if (Bräde.ÄrVinstdrag(drag, spelarePåDrag.Teckenvärde))
                    {
                        // Om motståndaren är en människa
                        if ((spelarePåDrag == spelareEtt ? spelareTvå : spelareEtt).EgenTyp == Spelare.Typ.Människa)
                        {
                            MessageBox.Show("Vinst.");
                        }
                        else
                        {
                            MessageBox.Show("Fuskare.");
                        }
                    }
                    // Om spelplanen är fylld
                    else if (Bräde.gjordaDrag.Count == Bräde.antalFält)
                    {
                        MessageBox.Show("WTF?");
                    }
                    else
                    {
                        SkötParti();
                    }
                }
            }
        }
Exemplo n.º 2
0
        private void startKnapp_Click(object sender, EventArgs e)
        {
            spelareEtt      = new Spelare(spelareEttsArgument);
            spelareTvå      = new Spelare(spelareTvåsArgument);
            Bräde.ställning = new int[Bräde.sida, Bräde.sida];
            Bräde.gjordaDrag.Clear();
            spelarePåDrag = spelareEtt;
            Bräde.möjligaDrag.Clear();

            // Lägger till mittfältet i möjliga drag så att motorn börjar där
            Bräde.möjligaDrag.Add(new Bräde.Fält(Bräde.sida / 2, Bräde.sida / 2));

            Refresh();

            if (spelareEtt.EgenTyp != Spelare.Typ.Människa)
            {
                Bräde.ställning[Bräde.sida / 2, Bräde.sida / 2] = spelareEtt.Teckenvärde;
                Bräde.gjordaDrag.Add(new Bräde.Fält(Bräde.sida / 2, Bräde.sida / 2));
                RitaSenasteMotorDrag(new Bräde.Fält(Bräde.sida / 2, Bräde.sida / 2));
                Bräde.uppdateraMöjligaDrag(new Bräde.Fält(Bräde.sida / 2, Bräde.sida / 2));
                SkötParti();
            }
        }
Exemplo n.º 3
0
        private void SkötParti()
        {
            bytSpelarePådDrag();

            while (spelarePåDrag.EgenTyp != Spelare.Typ.Människa)
            {
                Bräde.Fält nästaDrag = spelarePåDrag.användAI.BestämDrag();
                Bräde.ställning[nästaDrag.X, nästaDrag.Y] = spelarePåDrag.Teckenvärde;
                Bräde.gjordaDrag.Add(nästaDrag);
                RitaSenasteMotorDrag(nästaDrag);
                Bräde.uppdateraMöjligaDrag(nästaDrag);

                if (Bräde.ÄrVinstdrag(nästaDrag, spelarePåDrag.Teckenvärde))
                {
                    bytSpelarePådDrag();
                    // Om motorn vann över en människa
                    if (spelarePåDrag.EgenTyp == Spelare.Typ.Människa)
                    {
                        MessageBox.Show("Du blev ägd av en maskin.");
                    }

                    break;
                }
                // Om spelplanen är fylldd
                else if (Bräde.gjordaDrag.Count == Bräde.antalFält)
                {
                    MessageBox.Show("WTF?");
                    break;
                }
                else
                {
                    bytSpelarePådDrag();
                }
            }

            Refresh();
        }