// 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(); } } } }
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(); } }
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(); }