Advertisement
Guest User

Untitled

a guest
Jan 18th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.12 KB | None | 0 0
  1. using System;
  2. using System.IO;
  3. using System.Drawing;
  4. using System.Windows.Forms;
  5.  
  6. partial class MainForm : Form
  7. {
  8. int[,] Plocha = {
  9. {2, 0, 0, 0, 0, 0, 0, 2},
  10. {0, 0, 0, 0, 0, 0, 0, 0},
  11. {0, 0, 0, 1, 1, 0, 0, 0},
  12. {0, 0, 1, 2, 2, 1, 0, 0},
  13. {0, 0, 1, 2, 2, 1, 0, 0},
  14. {0, 0, 0, 1, 1, 0, 0, 0},
  15. {0, 0, 0, 0, 0, 0, 0, 0},
  16. {2, 0, 0, 0, 0, 0, 0, 2}};
  17.  
  18. void MainFormLoad(object sender, EventArgs e)
  19. {
  20. // toto si nevsimaj je to zbytocne :D
  21. }
  22.  
  23. void MainFormPaint(object sender, PaintEventArgs e) // toto si nevsimaj len sa tu vykresluje na zaciatku ihrisko
  24. {
  25. Graphics g = e.Graphics;
  26. for (int r = 0; r < 8; r++)
  27. {
  28. for (int s = 0; s < 8; s++)
  29. {
  30.  
  31. if (Plocha[r,s] == 1)
  32. {
  33. g.FillEllipse(Brushes.Yellow,r * 45+5,s * 45+5, 35, 35);
  34. }
  35.  
  36. else if (Plocha[r,s] == 2)
  37. {
  38. g.FillRectangle(Brushes.Red,r * 45,s * 45, 45, 45);
  39. }
  40.  
  41. else if (Plocha[r,s] == 3)
  42. {
  43. g.FillRectangle(Brushes.Red,r * 45,s * 45, 45, 45);
  44. g.FillEllipse(Brushes.Yellow,r * 45+5,s * 45+5, 35, 35);
  45. }
  46.  
  47. g.DrawRectangle(Pens.Black,r * 45,s * 45, 45, 45);
  48. }
  49. }
  50. }
  51.  
  52. int PocetMimo()
  53. {
  54. int pocet = 0;
  55. for (int r = 0; r < 8; r++)
  56. {
  57. for (int s = 0; s < 8; s++)
  58. {
  59. if (Plocha[r,s] == 1)
  60. {
  61. pocet = pocet + 1;
  62. }
  63. }
  64. }
  65. return pocet;
  66. }
  67.  
  68. void Horz(int r, int od, int kam)
  69. {
  70. int volne = 1; // na zaciatku nastavujem na 1 co znamena ze mam volnu cestu na policko kam chcem ist
  71.  
  72. if (od < kam) // pokial je od mensie ako kam tak kontrolujem policka v rozsahu -> od+1 az kam (vratane kam lebo aj tam niekto moze stat)
  73. {
  74. for (int s = od + 1;s<=kam;s++)
  75. {
  76. if (Plocha[r,s] == 1 || Plocha[r,s] == 3)
  77. {
  78. volne = 0; // pokial nejake policko na ceste -> od+1 az kam nie je volne tak sa premenna volne nastavi na nulu a neskor nedovoli urobit tah
  79. }
  80. }
  81. }
  82.  
  83. else if (od > kam) // pokial je kam mensie ako od tak POZOR! kontrolujem policka v rozsahu -> kam az od-1
  84. {
  85. for (int s = kam;s<od;s++)
  86. {
  87. if (Plocha[r,s] == 1 || Plocha[r,s] == 3)
  88. {
  89. volne = 0; // podobne ako vyssie nastavim na nulu ak je nieco v ceste
  90. }
  91. }
  92. }
  93.  
  94. if (volne == 1) // ak nic nebolo v ceste, mozem vykonat tah :)
  95. {
  96. Plocha[r,od] = Plocha[r,od]-1;
  97. Plocha[r,kam] = Plocha[r,kam]+1;
  98. }
  99. }
  100.  
  101.  
  102.  
  103. void Vert(int s, int od, int kam) // presne ta ista logika ako v Horz akurat ze vo for cykle mam miesto premennej s, premennu r ale inak totozna metoda
  104. {
  105. int volne = 1;
  106.  
  107. if (od < kam)
  108. {
  109. for (int r = od + 1;r<=kam;r++)
  110. {
  111. if (Plocha[r,s] == 1 || Plocha[r,s] == 3)
  112. {
  113. volne = 0;
  114. }
  115. }
  116. }
  117.  
  118. else if (od > kam)
  119. {
  120. for (int r = kam;r<od;r++)
  121. {
  122. if (Plocha[r,s] == 1 || Plocha[r,s] == 3)
  123. {
  124. volne = 0;
  125. }
  126. }
  127. }
  128.  
  129. if (volne == 1) // ak sa moze pohnut
  130. {
  131. Plocha[od,s] = Plocha[od,s]-1;
  132. Plocha[kam,s] = Plocha[kam,s]+1;
  133. }
  134. }
  135.  
  136. int ozn = 0; // hovori o tom, ci je uz oznacene nejake policko
  137. int oznr; // index oznaceneho riadku z ktoreho sa chcem pohnut
  138. int ozns; // index oznaceneho stlpca z ktoreho sa chcem pohnut
  139.  
  140. void MainFormMouseClick(object sender, MouseEventArgs e)
  141. {
  142. Graphics g = CreateGraphics();
  143. if (ozn == 0) //ak nemam oznacene policko tak tu ho oznacim
  144. {
  145. int s = e.Y/45;
  146. int r = e.X/45;
  147. if (r>=0 && s>=0 && r<9 && s<9) {
  148. g.DrawRectangle(Pens.Blue,r*45-1,s*45-1,46,46);
  149. }
  150. oznr = r;
  151. ozns = s;
  152. }
  153.  
  154. else // ak mam uz oznacene policko tak tu vyberam ci je to horizontalny alebo vertikalny krok
  155. {
  156. int s = e.Y/45;
  157. int r = e.X/45;
  158.  
  159. if (r>=0 && s>=0 && r<9 && s<9)
  160. {
  161. if (oznr == r && ozns == s)
  162. {
  163. //nerob nic ak klikas na to iste policko ako je oznacene
  164. }
  165. else if (oznr == r)
  166. {
  167. Horz(r,ozns,s);
  168. }
  169. else if (ozns == s)
  170. {
  171. Vert(s,oznr,r);
  172. }
  173. }
  174. oznr = -1;
  175. ozns = -1;
  176. Invalidate();
  177.  
  178. if(PocetMimo()==0)
  179. {
  180. MessageBox.Show("Vyhral si!");
  181. }
  182. }
  183.  
  184. if(ozn==0) ozn = ozn+1;
  185. else ozn = ozn-1;
  186.  
  187. }
  188.  
  189.  
  190.  
  191.  
  192.  
  193. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement