Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2020
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.34 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.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10.  
  11. namespace loginform
  12. {
  13. public partial class SnakeGame : Form
  14. {
  15. private List<Circle> Snake = new List<Circle>();
  16. private Circle food = new Circle();
  17. public SnakeGame()
  18. {
  19. InitializeComponent();
  20. new Settings();
  21. gameTimer.Interval = 1000 / Settings.Speed;
  22. gameTimer.Tick += updateSreen;
  23. gameTimer.Start();
  24. startGame();
  25. }
  26. private void updateSreen(object sender, EventArgs e)
  27. {
  28. if (Settings.GameOver == true)
  29. { if (Input.KeyPress(Keys.Enter))
  30. {
  31. Settings.Score=0;
  32.  
  33. startGame();
  34. ;
  35. ;
  36. }
  37. }
  38. else
  39. {
  40. if (Input.KeyPress(Keys.Right) && Settings.direction != Directions.Left)
  41. { Settings.direction = Directions.Right; }
  42. else if (Input.KeyPress(Keys.Left) && Settings.direction != Directions.Right)
  43. { Settings.direction = Directions.Left; }
  44. else if (Input.KeyPress(Keys.Up) && Settings.direction != Directions.Up)
  45. { Settings.direction = Directions.Up; }
  46. else if (Input.KeyPress(Keys.Down) && Settings.direction != Directions.Up)
  47. { Settings.direction = Directions.Down; }
  48. movePlayer();
  49. }
  50. pbCanvas.Invalidate();
  51.  
  52.  
  53. }
  54. private void movePlayer()
  55. {
  56. for (int i = Snake.Count-1; i<=0; i--)
  57. {
  58. if (i == 0)
  59. {
  60. switch (Settings.direction)
  61. {
  62. case Directions.Right:
  63. {
  64. Snake[i].X++;
  65. break;
  66. }
  67. case Directions.Left:
  68. {
  69. Snake[i].X--;
  70. break;
  71. }
  72. case Directions.Up:
  73. {
  74. Snake[i].Y--;
  75. break;
  76. }
  77. case Directions.Down:
  78. {
  79. Snake[i].Y++;
  80. break;
  81. }
  82. }
  83. int maxXpos = pbCanvas.Size.Width / Settings.Width;
  84. int maxYpos = pbCanvas.Size.Height / Settings.Height;
  85. if (
  86. Snake[i].X < 0 || Snake[i].Y < 0 || Snake[i].X > maxXpos || Snake[i].Y > maxYpos)
  87. { die(); }
  88. for (int j = 1; j < Snake.Count; j++)
  89. { if (Snake[i].X == Snake[j].X && Snake[i].Y == Snake[j].Y)
  90. die(); }
  91.  
  92.  
  93.  
  94.  
  95. if (Snake[0].X == food.X && Snake[0].Y == food.Y)
  96. eat(); }
  97. else
  98. {
  99. //Snake[i].X = Snake[Snake.Count-1].X;
  100. //Snake[i].Y = Snake[Snake.Count-1].Y;
  101. }
  102. }
  103. }
  104. private void keyisdown(object sender, KeyEventArgs e)
  105. {
  106. Input.changeState(e.KeyCode, true);
  107. }
  108. private void keyisup(object sender, KeyEventArgs e)
  109. {
  110. Input.changeState(e.KeyCode, false);
  111.  
  112. }
  113. public void eat()
  114. {
  115. Circle body = new Circle
  116. {
  117. X = Snake[Snake.Count-1].X,
  118. Y = Snake[Snake.Count-1].Y
  119.  
  120. };
  121. Snake.Add(body);
  122. Settings.Score += Settings.Points;
  123. label3.Text = Settings.Score.ToString();
  124. generateFood();
  125. }
  126. private void updateGraphics(object sender, PaintEventArgs e)
  127. {
  128. Graphics canvas = e.Graphics;
  129. if (Settings.GameOver == false)
  130. { Brush snakeColour;
  131. for (int i = 0; i < Snake.Count; i++)
  132. { if (i == 0)
  133. { snakeColour = Brushes.Black; }
  134. else
  135. {
  136. snakeColour = Brushes.Green;
  137. }
  138. canvas.FillEllipse(snakeColour, new Rectangle(
  139. Snake[i].X * Settings.Width,
  140. Snake[i].Y * Settings.Height,
  141. Settings.Width, Settings.Height));
  142. canvas.FillEllipse(Brushes.Red, new Rectangle(
  143. food.X * Settings.Width,
  144. food.Y * Settings.Height,
  145. Settings.Width, Settings.Height));
  146. }
  147. }
  148. else
  149. {
  150. string gameOver = "Game Over \n" + "Final Score is " + Settings.Score + "\n Press enter to restart";
  151. label4.Text = gameOver;
  152. label4.Visible = true;
  153. }
  154. }
  155. private void SnakeGame_Load(object sender, EventArgs e)
  156. {
  157.  
  158. }
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165. private void startGame()
  166. {
  167. label4.Visible = false;
  168. new Settings();
  169. Snake.Clear();
  170. Circle head = new Circle { X = 10, Y = 5 };
  171. Snake.Add(head);
  172.  
  173. label3.Text = Settings.Score.ToString();
  174. generateFood();
  175. }
  176. private void generateFood()
  177. {
  178. int maxXpos = pbCanvas.Size.Width / Settings.Width;
  179. int maxYpos = pbCanvas.Size.Height / Settings.Height;
  180. Random rnd = new Random();
  181. food = new Circle { X = rnd.Next(0, maxXpos), Y = rnd.Next(0, maxYpos) };
  182. }
  183.  
  184. private void die()
  185. {
  186. Settings.GameOver = true;
  187. }
  188.  
  189.  
  190. }
  191. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement