Advertisement
Guest User

Untitled

a guest
Oct 18th, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.28 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Security.Cryptography.X509Certificates;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows.Forms;
  11. using System.Windows.Forms.VisualStyles;
  12.  
  13. namespace Reversi_spel
  14. {
  15. public partial class Form1 : Form
  16. {
  17. private int vierkant = 50,
  18. x = 6,
  19. y = 6,
  20. BeginX = 100,
  21. BeginY = 100,
  22. SizeX = 500,
  23. SizeY = 500,
  24. Beurt = 1,
  25. Spanel = 300,
  26. WaardeHelp = 1;
  27.  
  28. private int[,] veld;
  29.  
  30.  
  31. public Form1()
  32. {
  33. DoubleBuffered = true;
  34. InitializeComponent();
  35. this.ClientSize = new Size(SizeX, SizeY);
  36. MaakArray();
  37. Paint += LegStenen;
  38. panel1.MouseDown += AanBeurt;
  39. label1.Text = "Aantal Stenen Blauw: " + AantalBlauweStenen();
  40. label2.Text = "Aantal Stenen Rood: " + AantalRodeStenen();
  41. if (x > y)
  42. {
  43. vierkant = Spanel / x;
  44. }
  45. else vierkant = Spanel / y;
  46. }
  47.  
  48. public partial class Gamebord : Form1
  49. {
  50. public void Gamebord()
  51. {
  52. BeginX = (SizeX - panel1.Width) / 2;
  53. BeginY = (SizeY - panel1.Height) / 2 + SizeY / 10;
  54. Paint += panel1_Paint;
  55. }
  56.  
  57. private void
  58. panel1_Paint(object sender,
  59. PaintEventArgs e) // tekent het Reversi Bord, en zorgt voor de beginwaardes in de array
  60. {
  61. this.panel1.Location = new System.Drawing.Point(BeginX, BeginY);
  62. this.panel1.Size = new System.Drawing.Size(Spanel + 1, Spanel + 1);
  63.  
  64. Graphics gr = e.Graphics;
  65. for (int t = 0; t < y; t++)
  66. {
  67. for (int n = 0; n < x; n++)
  68. {
  69. gr.DrawRectangle(Pens.Black, n * vierkant, t * vierkant, vierkant, vierkant);
  70. }
  71. }
  72. }
  73.  
  74.  
  75. public void MaakArray()
  76. {
  77. veld = new int[x, y];
  78. for (int t = 0; t < y; t++)
  79. {
  80. for (int n = 0; n < x; n++)
  81. {
  82. veld[n, t] = 0;
  83. }
  84. }
  85.  
  86. veld[x / 2 - 1, y / 2 - 1] = 1;
  87. veld[x / 2, y / 2] = 1;
  88. veld[x / 2, y / 2 - 1] = -1;
  89. veld[x / 2 - 1, y / 2] = -1;
  90. }
  91. }
  92.  
  93. private void DisplayAanzet()
  94. {
  95. if (Beurt == 1)
  96. label3.Text = "Blauw is aan zet";
  97. else
  98. label3.Text = "Rood is aan zet";
  99. }
  100.  
  101. private string AantalBlauweStenen()
  102. {
  103. int res = 0;
  104. for (int t = 0; t < x; t++)
  105. for (int u = 0; u < y; u++)
  106. if (veld[t, u] == 1)
  107. res++;
  108. string sres = res.ToString();
  109. return sres;
  110. }
  111.  
  112. private string AantalRodeStenen()
  113. {
  114. int res = 0;
  115. for (int t = 0; t < x; t++)
  116. for (int u = 0; u < y; u++)
  117. if (veld[t, u] == -1)
  118. res++;
  119. string sres = res.ToString();
  120. return sres;
  121. }
  122.  
  123. //private string Winst()
  124. //{
  125.  
  126. // label3.Text = "Blauw wint";
  127. //}
  128.  
  129. private bool Check(int VierkantX, int VierkantY, int Beurt)
  130. {
  131. bool geldig = false;
  132. int Xcheck, Ycheck;
  133.  
  134. if (VierkantX >= 0 && VierkantX < vierkant * x && VierkantY >= 0 && VierkantY < vierkant * y &&
  135. veld[VierkantX, VierkantY] == 0) // of je in het veld hebt geklikt & of het leeg is
  136. {
  137. for (Ycheck = -1; Ycheck < 2; Ycheck++)
  138. {
  139. if (VierkantY + Ycheck >= 0 && VierkantY + Ycheck < y)
  140. {
  141. for (Xcheck = -1; Xcheck < 2; Xcheck++)
  142. {
  143. if (VierkantX + Xcheck >= 0 && VierkantX + Xcheck < x &&
  144. veld[VierkantX + Xcheck, VierkantY + Ycheck] == Beurt * -1)
  145. // kijken of je je steen naast een steen van de tegenstander legt
  146. {
  147. for (int t = 2; t <= x - 1 && t <= y - 1; t++)
  148. {
  149. if (VierkantX + Xcheck * t >= 0 && VierkantX + Xcheck * t < x &&
  150. VierkantY + Ycheck * t >= 0 && VierkantY + Ycheck * t < y)
  151. {
  152. if (veld[VierkantX + Xcheck, VierkantY + Ycheck] == 0 ||
  153. veld[VierkantX + Xcheck * t, VierkantY + Ycheck * t] == 0)
  154. break;
  155.  
  156. if (VierkantX + Xcheck * t >= 0 && VierkantX + Xcheck * t < x &&
  157. VierkantY + Ycheck * t >= 0 && VierkantY + Ycheck * t < y &&
  158. veld[VierkantX + Xcheck * t, VierkantY + Ycheck * t] == Beurt)
  159. {
  160. geldig = true;
  161. return geldig;
  162. }
  163. }
  164. }
  165. }
  166. }
  167. }
  168. }
  169. }
  170.  
  171. return geldig;
  172. }
  173.  
  174. // kijkt of de speler op een leeg vak heeft geklikt waar die een andere steen kan insluiten
  175. private bool GeldigKlik(MouseEventArgs mea)
  176. {
  177. bool geldig = false;
  178. int VierkantX, VierkantY;
  179. VierkantX = mea.X / vierkant;
  180. VierkantY = mea.Y / vierkant;
  181.  
  182. if (Check(VierkantX, VierkantY, Beurt))
  183. geldig = GeldigKlik2(VierkantX, VierkantY);
  184.  
  185. return geldig;
  186. }
  187.  
  188. // maakt GeldigKlik wat compacter + draait de stenen om die worden ingesloten
  189. // & kijken of het veld daarna van de speler is die aan de beurt is
  190. private bool GeldigKlik2(int VierkantX, int VierkantY)
  191. {
  192. bool geldig = false;
  193. int Xcheck, Ycheck, aantal = 0;
  194. for (Ycheck = -1; Ycheck < 2; Ycheck++)
  195. {
  196. for (Xcheck = -1; Xcheck < 2; Xcheck++)
  197. {
  198. for (int t = 2; t <= x - 1 && t <= y - 1; t++)
  199. {
  200. if (VierkantX + Xcheck * t >= 0 && VierkantX + Xcheck * t < x &&
  201. VierkantY + Ycheck * t >= 0 && VierkantY + Ycheck * t < y)
  202. {
  203. if (veld[VierkantX + Xcheck, VierkantY + Ycheck] == 0 ||
  204. veld[VierkantX + Xcheck * t, VierkantY + Ycheck * t] == 0)
  205. break;
  206.  
  207. if (veld[VierkantX + Xcheck * t, VierkantY + Ycheck * t] == Beurt &&
  208. (Xcheck != 0 || Ycheck != 0))
  209. {
  210. // vanaf dit gedeelte zorgt dat de stenen worden omgedraait
  211. if ((VierkantX + Xcheck * t) > VierkantX)
  212. aantal = (VierkantX + Xcheck * t) - VierkantX - 1;
  213. else if ((VierkantX + Xcheck * t) < VierkantX)
  214. aantal = VierkantX - (VierkantX + Xcheck * t) - 1;
  215. else if ((VierkantY + Ycheck * t) > VierkantY)
  216. aantal = (VierkantY + Ycheck * t) - VierkantY - 1;
  217. else if ((VierkantY + Ycheck * t) < VierkantY)
  218. aantal = VierkantY - (VierkantY + Ycheck * t) - 1;
  219.  
  220. for (; aantal > 0; aantal--)
  221. veld[VierkantX + Xcheck * aantal, VierkantY + Ycheck * aantal] = Beurt;
  222. //tot hier
  223.  
  224. geldig = true;
  225. break;
  226. }
  227. }
  228. }
  229. }
  230. }
  231.  
  232. return geldig;
  233. }
  234.  
  235. // Kijkt wie er aan de beurt is, en zorgt vervolgens dat zijn waarde op de juiste plek in de array komt
  236. private void AanBeurt(object o, MouseEventArgs mea) //Werkt nog niet
  237. {
  238. int VierkantX, VierkantY;
  239. VierkantX = mea.X / vierkant;
  240. VierkantY = mea.Y / vierkant;
  241.  
  242. if (GeldigKlik(mea))
  243. {
  244. if (Beurt == 1) // Blauw aan de beurt
  245. {
  246. veld[VierkantX, VierkantY] = 1;
  247. label3.Text = "Rood is aan zet";
  248. label1.Text = "Aantal stenen Blauw: " + AantalBlauweStenen();
  249. label2.Text = "Aantal stenen Rood: " + AantalRodeStenen();
  250. }
  251. else // Rood aan de beurt
  252. {
  253. veld[VierkantX, VierkantY] = -1;
  254. label3.Text = "Blauw is aan zet";
  255. label1.Text = "Aantal stenen Blauw: " + AantalBlauweStenen();
  256. label2.Text = "Aantal stenen Rood: " + AantalRodeStenen();
  257. }
  258.  
  259. Invalidate();
  260. Beurt *= -1; // Wisselt de beurt om
  261. }
  262. }
  263.  
  264. private void HelpOptie(PaintEventArgs pea)
  265. {
  266. int VierkantX, VierkantY;
  267. Pen pen = new Pen(Brushes.DimGray);
  268.  
  269. for (VierkantY = 0; VierkantY < y; VierkantY++)
  270. for (VierkantX = 0; VierkantX < x; VierkantX++)
  271. if (Check(VierkantX, VierkantY, Beurt))
  272. {
  273. pea.Graphics.DrawEllipse(pen, VierkantX * vierkant + vierkant / 4 + BeginX,
  274. VierkantY * vierkant + vierkant / 4 + BeginY, vierkant / 2, vierkant / 2);
  275. }
  276. }
  277.  
  278. private void button2_Click_1(object sender, EventArgs e)
  279. {
  280. int a, b;
  281. MouseEventArgs mea = (MouseEventArgs) e;
  282. a = mea.X;
  283. b = mea.Y;
  284.  
  285. WaardeHelp *= -1;
  286. Invalidate();
  287. }
  288.  
  289. // Zou de stenen moeten neerleggen/tekenen
  290. private void LegStenen(object o, PaintEventArgs pea)
  291. {
  292. int diameter;
  293. BeginX = (SizeX - panel1.Width) / 2;
  294. BeginY = (SizeY - panel1.Height) / 2 + SizeY / 10;
  295. diameter = vierkant - vierkant / 20;
  296. Graphics g = pea.Graphics;
  297.  
  298. // Waar de steen komt te liggen (als de waarde 0 is)
  299. for (int t = 0; t < y; t++)
  300. for (int n = 0; n < x; n++)
  301. {
  302. if (veld[n, t] == 1)
  303. g.FillEllipse(Brushes.DodgerBlue, n * vierkant + vierkant / 40 + BeginX,
  304. t * vierkant + vierkant / 40 + BeginY, diameter, diameter);
  305.  
  306. else if (veld[n, t] == -1)
  307. g.FillEllipse(Brushes.OrangeRed, n * vierkant + vierkant / 40 + BeginX,
  308. t * vierkant + vierkant / 40 + BeginY, diameter, diameter);
  309. }
  310.  
  311. if (WaardeHelp == -1)
  312. HelpOptie(pea);
  313. }
  314.  
  315. private static bool MogelijkBlauw()
  316. {
  317. int VierkantX, VierkantY;
  318.  
  319. for (VierkantY = 0; VierkantY < y; VierkantY++)
  320. for (VierkantX = 0; VierkantX < x; VierkantX++)
  321. if (Check(VierkantX, VierkantY, 1))
  322. return true;
  323.  
  324. return false
  325. }
  326.  
  327. private void button1_Click(object sender, EventArgs e)
  328. {
  329. for (int t = 0; t < x; t++)
  330. for (int u = 0; u < y; u++)
  331. if (veld[t, u] == -1 || veld[t, u] == 1)
  332. veld[t, u] = veld[t, u] = 0;
  333.  
  334. veld[x / 2 - 1, y / 2 - 1] = 1;
  335. veld[x / 2, y / 2] = 1;
  336. veld[x / 2, y / 2 - 1] = -1;
  337. veld[x / 2 - 1, y / 2] = -1;
  338.  
  339. label1.Text = "Aantal stenen Blauw: 2";
  340. label2.Text = "Aantal stenen Rood: 2";
  341. label3.Text = "Blauw is aan zet";
  342. Beurt = 1;
  343.  
  344. this.Invalidate();
  345. }
  346. }
  347. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement