Advertisement
Guest User

Untitled

a guest
Dec 12th, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.45 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Threading;
  7.  
  8. namespace snake
  9. {
  10. class Program
  11. {
  12. static void Main(string[] args)
  13. {
  14. Console.ForegroundColor = ConsoleColor.Green;
  15. Console.WindowHeight = 16;
  16. Console.WindowWidth = 32;
  17. int screenH = Console.WindowHeight;
  18. int screenW = Console.WindowWidth;
  19. // laitetaan kooksi 32x16 ja alustetaan muuttujat korkeudelle ja leveydelle pelin toimintaa varten
  20. mode:
  21. Console.Clear();
  22. Console.WriteLine("Valitse pelimuoto:"); //valitaan seinällinen vai seinätön pelimuoto
  23. Console.WriteLine("1 = Seinät, 2 = Ei Seiniä");
  24. Console.SetCursorPosition(0, 3);
  25. Console.WriteLine("Nuolinäppäimet ohjaa matoa");
  26. Console.WriteLine("X keskeyttääksesi");
  27. string walls1 = Console.ReadLine();
  28. if (Int32.TryParse(walls1, out int walls2))
  29. {
  30. if (walls2 > 2)
  31. {
  32. goto mode;
  33. }
  34. goto speed;
  35. }
  36. else
  37. {
  38. goto mode;
  39. }
  40. speed:
  41. Console.Clear();
  42. Console.WriteLine("Valitse nopeus:"); //valitaan madon nopeus/vaikeusaste
  43. Console.WriteLine("1-3 (1 nopein)");
  44. string speed1 = Console.ReadLine();
  45. if (Int32.TryParse(speed1, out int speed2))
  46. {
  47. if (speed2 > 3)
  48. {
  49. goto speed;
  50. }
  51. goto peli;
  52. }
  53. else
  54. {
  55. goto speed;
  56. }
  57. peli:
  58. /* Console.WriteLine(walls2);
  59. Console.ReadKey(); //käytin debuggaamiseen */
  60. int score = 3; //score alkuun 3 niin mato alottaa lyhyellä pituudella
  61. int gameover = 0;
  62. double wormspeed = 0;
  63. Random randomnro = new Random();
  64. pixel worm = new pixel(); // randomnro määrittää pisteen sijainnin wormissa luodaan madolle pää pixeli toisessa classissa
  65. worm.x = screenW / 2;
  66. worm.y = screenH / 2;
  67. worm.color = ConsoleColor.Green; //madon väriksi vihree ja jaetaan leveys ja pituus 2 että saadaan mato aloittamaan keskeltä
  68. string movement = "UP"; // defaulttina liikkuu ylöspäin
  69. List<int> xtail = new List<int>();
  70. List<int> ytail = new List<int>(); //luodaan lista madon hännästä
  71. int pointx = randomnro.Next(2, screenW - 2);
  72. int pointy = randomnro.Next(2, screenH - 2); //pisteelle randomi paikka
  73. DateTime time = DateTime.Now;
  74. DateTime time2 = DateTime.Now; // käytetään aikaa "tickeinä"/myös pisteisiin aikaa
  75. switch (speed2)
  76. {
  77. case 1:
  78. wormspeed = 200;
  79. break;
  80. case 2:
  81. wormspeed = 350;
  82. break;
  83. case 3:
  84. wormspeed = 500;
  85. break;
  86. }
  87. string buttonpressed = "no";
  88. while (true)
  89. {
  90. Console.Clear();
  91. if (walls2 == 1)
  92. {
  93. Console.ForegroundColor = ConsoleColor.Blue;
  94. if (worm.x == screenW - 1 || worm.x == 0 || worm.y == screenH - 1 || worm.y == 0) // jos mato osuu seinään niin peli loppuu
  95. {
  96. gameover = 1;
  97. }
  98. for (int i = 0; i < screenW; i++)
  99. {
  100. Console.SetCursorPosition(i, 0);
  101. Console.Write("■");
  102. }
  103. for (int i = 0; i < screenW; i++)
  104. {
  105. Console.SetCursorPosition(i, screenH - 1);
  106. Console.Write("■");
  107. }
  108. for (int i = 0; i < screenH; i++)
  109. {
  110. Console.SetCursorPosition(0, i);
  111. Console.Write("■");
  112. }
  113. for (int i = 0; i < screenH; i++)
  114. {
  115. Console.SetCursorPosition(screenW - 1, i);
  116. Console.Write("■");
  117. } //piirretään seinät jos ne on valittu ja laitetaan reunoihin häviäminen
  118. }
  119. Console.ForegroundColor = ConsoleColor.Green;
  120. if (pointx == worm.x && pointy == worm.y)
  121. {
  122. score++;
  123. pointx = randomnro.Next(2, screenW - 2);
  124. pointy = randomnro.Next(2, screenH - 2);
  125. } //kun mato osuu pisteeseen lisää se yhden pisteen ja laittaa uuden pisteen koordinaatit randomiin paikkaa
  126. for (int i = 0; i < xtail.Count(); i++)
  127. {
  128. Console.SetCursorPosition(xtail[i], ytail[i]);
  129. Console.Write("■");
  130. if (xtail[i] == worm.x && ytail[i] == worm.y)
  131. {
  132. gameover = 1;
  133. }
  134. } //piirretään häntä taulukko järjestyksessä ja määritetään että jos syödään oma häntä peli loppuu
  135. if (gameover == 1)
  136. {
  137. break;
  138. } // peli loppuu niin menee loppuun tallentamaan pisteet
  139. if (walls2 == 2)
  140. {
  141. if (worm.x >= screenW - 1)
  142. {
  143. worm.x = 0;
  144. }
  145. else if(worm.x <= 0)
  146. {
  147. worm.x = screenW - 1;
  148. }
  149. else if (worm.y >= screenH - 1)
  150. {
  151. worm.y = 0;
  152. }
  153. else if (worm.y <= 0)
  154. {
  155. worm.y = screenH;
  156. } //mato menee toisellepuolelle kenttää jos ei ole seinä ja menee alueen yli
  157. }
  158. Console.SetCursorPosition(worm.x, worm.y);
  159. Console.ForegroundColor = worm.color; //piirtää madon
  160. Console.Write("■");
  161. Console.SetCursorPosition(pointx, pointy);
  162. Console.ForegroundColor = ConsoleColor.Red;
  163. Console.Write("■"); // piirretään piste
  164. time = DateTime.Now;
  165. buttonpressed = "no";
  166. while (true)
  167. {
  168. time2 = DateTime.Now;
  169. if (time2.Subtract(time).TotalMilliseconds > wormspeed) { break; } //pelin tickit
  170. if (Console.KeyAvailable)
  171. {
  172. ConsoleKeyInfo press = Console.ReadKey(true);
  173. if (press.Key.Equals(ConsoleKey.UpArrow) && movement != "DOWN" && buttonpressed == "no")
  174. {
  175. movement = "UP";
  176. buttonpressed = "yes";
  177. }
  178. if (press.Key.Equals(ConsoleKey.DownArrow) && movement != "UP" && buttonpressed == "no")
  179. {
  180. movement = "DOWN";
  181. buttonpressed = "yes";
  182. }
  183. if (press.Key.Equals(ConsoleKey.LeftArrow) && movement != "RIGHT" && buttonpressed == "no")
  184. {
  185. movement = "LEFT";
  186. buttonpressed = "yes";
  187. }
  188. if (press.Key.Equals(ConsoleKey.RightArrow) && movement != "LEFT" && buttonpressed == "no")
  189. {
  190. movement = "RIGHT";
  191. buttonpressed = "yes";
  192. } //Näillä katotaan suunta painnallukset, että ei lähdetä kääntymään 180astetta ja mihin päin lähdetään liikkumaan
  193. if (press.Key.Equals(ConsoleKey.X) && buttonpressed == "no")
  194. {
  195. gameover = 1;
  196. } //nappula lopettaakseen kesken
  197. }
  198. }
  199. xtail.Add(worm.x);
  200. ytail.Add(worm.y); //nämä lisää häntä tableen madon sijainnin tiedot
  201. switch (movement)
  202. {
  203. case "UP":
  204. worm.y = worm.y - 1;
  205. break;
  206. case "DOWN":
  207. worm.y = worm.y + 1;
  208. break;
  209. case "LEFT":
  210. worm.x = worm.x - 1;
  211. break;
  212. case "RIGHT":
  213. worm.x = worm.x + 1;
  214. break;
  215. } //nämä liikuttaa pixeliä kehotteessa äsken määritellyn suunnan perusteella
  216. if (xtail.Count() > score)
  217. {
  218. xtail.RemoveAt(0);
  219. ytail.RemoveAt(0);
  220. } //katkaistaan häntä piste määrään
  221. }
  222. if (walls2 == 1)
  223. {
  224. //jos seinillä
  225. score = score - 3;
  226. Console.Clear();
  227. Console.SetCursorPosition(0, 0);
  228. Console.WriteLine("Hävisit pelin");
  229. Console.WriteLine("Pisteitä: " + score);
  230. //Console.WriteLine("Highscore polussa '" + wallfile "'")
  231. Console.SetCursorPosition(0, 5);
  232. Console.WriteLine("Paina R yrittääksesi uudelleen");
  233. Console.WriteLine("Muita poistuaksesi");
  234. ConsoleKeyInfo press = Console.ReadKey(true);
  235. if (press.Key.Equals(ConsoleKey.R))
  236. {
  237. goto mode;
  238. }
  239. Console.ReadKey();
  240. }
  241. if (walls2 == 2)
  242. {
  243. //ei seinillä
  244. score = score - 3;
  245. Console.Clear();
  246. Console.SetCursorPosition(0, 0);
  247. Console.WriteLine("Hävisit pelin");
  248. Console.WriteLine("Pisteitä: " + score);
  249. //Console.WriteLine("Highscore polussa '" + nowallfile "'")
  250. Console.SetCursorPosition(0, 5);
  251. Console.WriteLine("Paina R yrittääksesi uudelleen");
  252. Console.WriteLine("Muita poistuaksesi");
  253. ConsoleKeyInfo press = Console.ReadKey(true);
  254. if (press.Key.Equals(ConsoleKey.R))
  255. {
  256. goto mode;
  257. }
  258. Console.ReadKey();
  259. }
  260. }
  261.  
  262. class pixel
  263. {
  264. public int x { get; set; }
  265. public int y { get; set; }
  266. public ConsoleColor color { get; set; }
  267. }
  268. }
  269. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement