Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Security.Cryptography.X509Certificates;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using System.Windows.Forms.VisualStyles;
- namespace Reversi_spel
- {
- public partial class Form1 : Form
- {
- private int vierkant = 50,
- x = 6,
- y = 6,
- BeginX = 100,
- BeginY = 100,
- SizeX = 500,
- SizeY = 500,
- Beurt = 1,
- Spanel = 300,
- WaardeHelp = 1;
- private int[,] veld;
- public Form1()
- {
- DoubleBuffered = true;
- InitializeComponent();
- this.ClientSize = new Size(SizeX, SizeY);
- MaakArray();
- Paint += LegStenen;
- panel1.MouseDown += AanBeurt;
- label1.Text = "Aantal Stenen Blauw: " + AantalBlauweStenen();
- label2.Text = "Aantal Stenen Rood: " + AantalRodeStenen();
- if (x > y)
- {
- vierkant = Spanel / x;
- }
- else vierkant = Spanel / y;
- }
- public partial class Gamebord : Form1
- {
- public void Gamebord()
- {
- BeginX = (SizeX - panel1.Width) / 2;
- BeginY = (SizeY - panel1.Height) / 2 + SizeY / 10;
- Paint += panel1_Paint;
- }
- private void
- panel1_Paint(object sender,
- PaintEventArgs e) // tekent het Reversi Bord, en zorgt voor de beginwaardes in de array
- {
- this.panel1.Location = new System.Drawing.Point(BeginX, BeginY);
- this.panel1.Size = new System.Drawing.Size(Spanel + 1, Spanel + 1);
- Graphics gr = e.Graphics;
- for (int t = 0; t < y; t++)
- {
- for (int n = 0; n < x; n++)
- {
- gr.DrawRectangle(Pens.Black, n * vierkant, t * vierkant, vierkant, vierkant);
- }
- }
- }
- public void MaakArray()
- {
- veld = new int[x, y];
- for (int t = 0; t < y; t++)
- {
- for (int n = 0; n < x; n++)
- {
- veld[n, t] = 0;
- }
- }
- veld[x / 2 - 1, y / 2 - 1] = 1;
- veld[x / 2, y / 2] = 1;
- veld[x / 2, y / 2 - 1] = -1;
- veld[x / 2 - 1, y / 2] = -1;
- }
- }
- private void DisplayAanzet()
- {
- if (Beurt == 1)
- label3.Text = "Blauw is aan zet";
- else
- label3.Text = "Rood is aan zet";
- }
- private string AantalBlauweStenen()
- {
- int res = 0;
- for (int t = 0; t < x; t++)
- for (int u = 0; u < y; u++)
- if (veld[t, u] == 1)
- res++;
- string sres = res.ToString();
- return sres;
- }
- private string AantalRodeStenen()
- {
- int res = 0;
- for (int t = 0; t < x; t++)
- for (int u = 0; u < y; u++)
- if (veld[t, u] == -1)
- res++;
- string sres = res.ToString();
- return sres;
- }
- //private string Winst()
- //{
- // label3.Text = "Blauw wint";
- //}
- private bool Check(int VierkantX, int VierkantY, int Beurt)
- {
- bool geldig = false;
- int Xcheck, Ycheck;
- if (VierkantX >= 0 && VierkantX < vierkant * x && VierkantY >= 0 && VierkantY < vierkant * y &&
- veld[VierkantX, VierkantY] == 0) // of je in het veld hebt geklikt & of het leeg is
- {
- for (Ycheck = -1; Ycheck < 2; Ycheck++)
- {
- if (VierkantY + Ycheck >= 0 && VierkantY + Ycheck < y)
- {
- for (Xcheck = -1; Xcheck < 2; Xcheck++)
- {
- if (VierkantX + Xcheck >= 0 && VierkantX + Xcheck < x &&
- veld[VierkantX + Xcheck, VierkantY + Ycheck] == Beurt * -1)
- // kijken of je je steen naast een steen van de tegenstander legt
- {
- for (int t = 2; t <= x - 1 && t <= y - 1; t++)
- {
- if (VierkantX + Xcheck * t >= 0 && VierkantX + Xcheck * t < x &&
- VierkantY + Ycheck * t >= 0 && VierkantY + Ycheck * t < y)
- {
- if (veld[VierkantX + Xcheck, VierkantY + Ycheck] == 0 ||
- veld[VierkantX + Xcheck * t, VierkantY + Ycheck * t] == 0)
- break;
- if (VierkantX + Xcheck * t >= 0 && VierkantX + Xcheck * t < x &&
- VierkantY + Ycheck * t >= 0 && VierkantY + Ycheck * t < y &&
- veld[VierkantX + Xcheck * t, VierkantY + Ycheck * t] == Beurt)
- {
- geldig = true;
- return geldig;
- }
- }
- }
- }
- }
- }
- }
- }
- return geldig;
- }
- // kijkt of de speler op een leeg vak heeft geklikt waar die een andere steen kan insluiten
- private bool GeldigKlik(MouseEventArgs mea)
- {
- bool geldig = false;
- int VierkantX, VierkantY;
- VierkantX = mea.X / vierkant;
- VierkantY = mea.Y / vierkant;
- if (Check(VierkantX, VierkantY, Beurt))
- geldig = GeldigKlik2(VierkantX, VierkantY);
- return geldig;
- }
- // maakt GeldigKlik wat compacter + draait de stenen om die worden ingesloten
- // & kijken of het veld daarna van de speler is die aan de beurt is
- private bool GeldigKlik2(int VierkantX, int VierkantY)
- {
- bool geldig = false;
- int Xcheck, Ycheck, aantal = 0;
- for (Ycheck = -1; Ycheck < 2; Ycheck++)
- {
- for (Xcheck = -1; Xcheck < 2; Xcheck++)
- {
- for (int t = 2; t <= x - 1 && t <= y - 1; t++)
- {
- if (VierkantX + Xcheck * t >= 0 && VierkantX + Xcheck * t < x &&
- VierkantY + Ycheck * t >= 0 && VierkantY + Ycheck * t < y)
- {
- if (veld[VierkantX + Xcheck, VierkantY + Ycheck] == 0 ||
- veld[VierkantX + Xcheck * t, VierkantY + Ycheck * t] == 0)
- break;
- if (veld[VierkantX + Xcheck * t, VierkantY + Ycheck * t] == Beurt &&
- (Xcheck != 0 || Ycheck != 0))
- {
- // vanaf dit gedeelte zorgt dat de stenen worden omgedraait
- if ((VierkantX + Xcheck * t) > VierkantX)
- aantal = (VierkantX + Xcheck * t) - VierkantX - 1;
- else if ((VierkantX + Xcheck * t) < VierkantX)
- aantal = VierkantX - (VierkantX + Xcheck * t) - 1;
- else if ((VierkantY + Ycheck * t) > VierkantY)
- aantal = (VierkantY + Ycheck * t) - VierkantY - 1;
- else if ((VierkantY + Ycheck * t) < VierkantY)
- aantal = VierkantY - (VierkantY + Ycheck * t) - 1;
- for (; aantal > 0; aantal--)
- veld[VierkantX + Xcheck * aantal, VierkantY + Ycheck * aantal] = Beurt;
- //tot hier
- geldig = true;
- break;
- }
- }
- }
- }
- }
- return geldig;
- }
- // Kijkt wie er aan de beurt is, en zorgt vervolgens dat zijn waarde op de juiste plek in de array komt
- private void AanBeurt(object o, MouseEventArgs mea) //Werkt nog niet
- {
- int VierkantX, VierkantY;
- VierkantX = mea.X / vierkant;
- VierkantY = mea.Y / vierkant;
- if (GeldigKlik(mea))
- {
- if (Beurt == 1) // Blauw aan de beurt
- {
- veld[VierkantX, VierkantY] = 1;
- label3.Text = "Rood is aan zet";
- label1.Text = "Aantal stenen Blauw: " + AantalBlauweStenen();
- label2.Text = "Aantal stenen Rood: " + AantalRodeStenen();
- }
- else // Rood aan de beurt
- {
- veld[VierkantX, VierkantY] = -1;
- label3.Text = "Blauw is aan zet";
- label1.Text = "Aantal stenen Blauw: " + AantalBlauweStenen();
- label2.Text = "Aantal stenen Rood: " + AantalRodeStenen();
- }
- Invalidate();
- Beurt *= -1; // Wisselt de beurt om
- }
- }
- private void HelpOptie(PaintEventArgs pea)
- {
- int VierkantX, VierkantY;
- Pen pen = new Pen(Brushes.DimGray);
- for (VierkantY = 0; VierkantY < y; VierkantY++)
- for (VierkantX = 0; VierkantX < x; VierkantX++)
- if (Check(VierkantX, VierkantY, Beurt))
- {
- pea.Graphics.DrawEllipse(pen, VierkantX * vierkant + vierkant / 4 + BeginX,
- VierkantY * vierkant + vierkant / 4 + BeginY, vierkant / 2, vierkant / 2);
- }
- }
- private void button2_Click_1(object sender, EventArgs e)
- {
- int a, b;
- MouseEventArgs mea = (MouseEventArgs) e;
- a = mea.X;
- b = mea.Y;
- WaardeHelp *= -1;
- Invalidate();
- }
- // Zou de stenen moeten neerleggen/tekenen
- private void LegStenen(object o, PaintEventArgs pea)
- {
- int diameter;
- BeginX = (SizeX - panel1.Width) / 2;
- BeginY = (SizeY - panel1.Height) / 2 + SizeY / 10;
- diameter = vierkant - vierkant / 20;
- Graphics g = pea.Graphics;
- // Waar de steen komt te liggen (als de waarde 0 is)
- for (int t = 0; t < y; t++)
- for (int n = 0; n < x; n++)
- {
- if (veld[n, t] == 1)
- g.FillEllipse(Brushes.DodgerBlue, n * vierkant + vierkant / 40 + BeginX,
- t * vierkant + vierkant / 40 + BeginY, diameter, diameter);
- else if (veld[n, t] == -1)
- g.FillEllipse(Brushes.OrangeRed, n * vierkant + vierkant / 40 + BeginX,
- t * vierkant + vierkant / 40 + BeginY, diameter, diameter);
- }
- if (WaardeHelp == -1)
- HelpOptie(pea);
- }
- private static bool MogelijkBlauw()
- {
- int VierkantX, VierkantY;
- for (VierkantY = 0; VierkantY < y; VierkantY++)
- for (VierkantX = 0; VierkantX < x; VierkantX++)
- if (Check(VierkantX, VierkantY, 1))
- return true;
- return false
- }
- private void button1_Click(object sender, EventArgs e)
- {
- for (int t = 0; t < x; t++)
- for (int u = 0; u < y; u++)
- if (veld[t, u] == -1 || veld[t, u] == 1)
- veld[t, u] = veld[t, u] = 0;
- veld[x / 2 - 1, y / 2 - 1] = 1;
- veld[x / 2, y / 2] = 1;
- veld[x / 2, y / 2 - 1] = -1;
- veld[x / 2 - 1, y / 2] = -1;
- label1.Text = "Aantal stenen Blauw: 2";
- label2.Text = "Aantal stenen Rood: 2";
- label3.Text = "Blauw is aan zet";
- Beurt = 1;
- this.Invalidate();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement