Advertisement
adolciaaa

MyszPong

Oct 16th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.41 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using Microsoft.Xna.Framework;
  5. using Microsoft.Xna.Framework.Audio;
  6. using Microsoft.Xna.Framework.Content;
  7. using Microsoft.Xna.Framework.GamerServices;
  8. using Microsoft.Xna.Framework.Graphics;
  9. using Microsoft.Xna.Framework.Input;
  10. using Microsoft.Xna.Framework.Media;
  11.  
  12. namespace MyszPong
  13. {
  14. public class Game1 : Microsoft.Xna.Framework.Game
  15. {
  16. GraphicsDeviceManager graphics;
  17. SpriteBatch spriteBatch;
  18. Texture2D paletka, pilka;
  19. Rectangle paletkaRec, pilkaRec;
  20. bool lotWgore = false,lotWprawo = false;
  21. double UpdateTime = 0;
  22. int odbiciePoziomo = 5,odbiciePionowo =5;
  23. GameTime gameTime;
  24. double odlegloscZLewej = 0, odlegloscZPrawej = 0, odlegloscOdSrodka =0 ;
  25. List<ElementDoRozbicia> ListaElementow;
  26. bool wlacz = true;
  27.  
  28. class ElementDoRozbicia
  29. {
  30. public static Texture2D obrazek{get;set;}
  31. public Rectangle polozenieRec{get;set;}
  32. public bool visible{get;set;}
  33.  
  34. public ElementDoRozbicia(Point Poloznie)
  35. {
  36. polozenieRec = new Rectangle(Poloznie.X, Poloznie.Y, 40, 20);
  37. visible = true;
  38. }
  39. }
  40.  
  41.  
  42. public Game1()
  43. {
  44. graphics = new GraphicsDeviceManager(this);
  45. Content.RootDirectory = "Content";
  46. Window.AllowUserResizing = true;
  47. graphics.PreferredBackBufferWidth = 640;
  48. graphics.PreferredBackBufferHeight = 480;
  49.  
  50. this.IsMouseVisible = true;
  51. paletkaRec = new Rectangle(320, 400,100, 20);
  52. pilkaRec = new Rectangle(320, 50, 20, 20);
  53. gameTime = new GameTime();
  54. ListaElementow = new List<ElementDoRozbicia>();
  55. for (int i = 0; i < 15; ++i)
  56. {
  57. ElementDoRozbicia e = new ElementDoRozbicia(new Point(10 + 40 * i, 100));
  58. ListaElementow.Add(e);
  59. }
  60. }
  61.  
  62. protected override void Initialize()
  63. {
  64. base.Initialize();
  65.  
  66. }
  67.  
  68. protected override void LoadContent()
  69. {
  70. spriteBatch = new SpriteBatch(GraphicsDevice);
  71. paletka = Content.Load<Texture2D>("b2");
  72. pilka = Content.Load<Texture2D>("pilka");
  73. ElementDoRozbicia.obrazek = Content.Load<Texture2D>("b2");
  74. }
  75.  
  76. protected override void UnloadContent()
  77. { }
  78.  
  79. public bool Kolizja(Rectangle r1, Rectangle r2)
  80. {
  81. //left top;
  82. Point leftTop = new Point(r1.X, r1.Y);
  83. if (leftTop.X > r2.X && leftTop.X < (r2.X + r2.Width))
  84. if (leftTop.Y > r2.Y && leftTop.Y < (r2.Y + r2.Width))
  85. return true;
  86.  
  87. //right top
  88. leftTop = new Point(r1.X + r1.Width, r1.Y);
  89. if (leftTop.X > r2.X && leftTop.X < (r2.X + r2.Width))
  90. if (leftTop.Y > r2.Y && leftTop.Y < (r2.Y + r2.Width))
  91. return true;
  92.  
  93. //left bootom
  94. leftTop = new Point(r1.X, r1.Y + r1.Height);
  95. if (leftTop.X > r2.X && leftTop.X < (r2.X + r2.Width))
  96. if (leftTop.Y > r2.Y && leftTop.Y < (r2.Y + r2.Width))
  97. return true;
  98.  
  99. //right bottom
  100. leftTop = new Point(r1.X + r1.Width, r1.Y + r1.Height);
  101. if (leftTop.X > r2.X && leftTop.X < (r2.X + r2.Width))
  102. if (leftTop.Y > r2.Y && leftTop.Y < (r2.Y + r2.Width))
  103. return true;
  104.  
  105. return false ;
  106. }
  107.  
  108. protected override void Update(GameTime gameTime)
  109. {
  110. if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
  111. this.Exit();
  112. if (Keyboard.GetState().IsKeyDown(Keys.Escape) == true)
  113. this.Exit();
  114.  
  115. MouseState Mstate = Mouse.GetState();
  116.  
  117. if (UpdateTime >0.01)
  118. {
  119. if (lotWgore)
  120. pilkaRec.Y -= odbiciePionowo;
  121. else
  122. pilkaRec.Y += odbiciePionowo;
  123. if (lotWprawo)
  124. pilkaRec.X += odbiciePoziomo;
  125. else
  126. pilkaRec.X -= odbiciePoziomo;
  127. UpdateTime = 0;
  128. }
  129.  
  130. if (pilkaRec.X <= 0)
  131. lotWprawo = true;
  132. else if (pilkaRec.X > graphics.PreferredBackBufferWidth-50)
  133. lotWprawo = false;
  134.  
  135. if (pilkaRec.Y <= 0)
  136. lotWgore = false;
  137.  
  138. if (Kolizja(pilkaRec,paletkaRec))
  139. {
  140. lotWgore = true;
  141. odlegloscOdSrodka = (Math.Pow(((paletkaRec.X+50) - pilkaRec.X), 2) + Math.Pow((paletkaRec.Y - pilkaRec.Y), 2));
  142. odlegloscOdSrodka = Math.Sqrt(odlegloscOdSrodka);
  143.  
  144. odlegloscZLewej = (Math.Pow((paletkaRec.X - pilkaRec.X), 2) + Math.Pow((paletkaRec.Y - pilkaRec.Y), 2));
  145. odlegloscZLewej = Math.Sqrt(odlegloscZLewej);
  146.  
  147. odlegloscZPrawej = (Math.Pow(((paletkaRec.X+100) - (pilkaRec.X)), 2) + Math.Pow((paletkaRec.Y - pilkaRec.Y), 2));
  148. odlegloscZPrawej = Math.Sqrt(odlegloscZPrawej);
  149.  
  150. odlegloscZPrawej -= 12;
  151.  
  152. if (odlegloscZPrawej < odlegloscZLewej && odlegloscZPrawej < odlegloscOdSrodka)
  153. {
  154. odbiciePoziomo = 5;
  155. odbiciePionowo = 5;
  156. lotWprawo = true;
  157. }
  158. else if (odlegloscZLewej < odlegloscZPrawej && odlegloscZLewej < odlegloscOdSrodka)
  159. {
  160. odbiciePoziomo = 5;
  161. odbiciePionowo = 5;
  162. lotWprawo = false;
  163. }
  164. else if (odlegloscOdSrodka < odlegloscZLewej && odlegloscOdSrodka < odlegloscZPrawej)
  165. {
  166. odbiciePoziomo = 2;
  167. odbiciePionowo = 8;
  168. }
  169. }
  170.  
  171. if (Mouse.GetState().X > 0 && Mouse.GetState().X + 100 < graphics.PreferredBackBufferWidth)
  172. wlacz = true;
  173. else
  174. wlacz = false;
  175.  
  176. if(wlacz)
  177. paletkaRec.X = Mouse.GetState().X;
  178.  
  179. base.Update(gameTime);
  180. }
  181.  
  182. protected override void Draw(GameTime gameTime)
  183. {
  184. spriteBatch.Begin();
  185. foreach (ElementDoRozbicia e in ListaElementow)
  186. {
  187.  
  188. if (pilkaRec.Intersects(e.polozenieRec) && e.visible)
  189. {
  190. if (lotWgore && lotWprawo)
  191. {
  192. double roznica1 = (e.polozenieRec.X) - (pilkaRec.X + 20);
  193. double roznica2 = (e.polozenieRec.Y) - pilkaRec.Y;
  194. roznica1 = Math.Pow(roznica1, 2);
  195. roznica2 = Math.Pow(roznica2, 2);
  196.  
  197. if (roznica1 < roznica2)
  198. {
  199. lotWprawo = false;
  200. e.visible = false;
  201. break;
  202. }
  203. else
  204. {
  205. lotWgore = false;
  206. e.visible = false;
  207. break;
  208. }
  209. }
  210. if (lotWgore && !lotWprawo)
  211. {
  212. double roznica1 = (e.polozenieRec.X + 40) - pilkaRec.X;
  213. double roznica2 = (e.polozenieRec.Y) - pilkaRec.Y;
  214.  
  215. roznica1 = Math.Pow(roznica1, 2);
  216. roznica2 = Math.Pow(roznica2, 2);
  217.  
  218. if (roznica1 < roznica2)
  219. {
  220. lotWprawo = true;
  221. e.visible = false;
  222. break;
  223. }
  224. else
  225. {
  226. lotWgore = false;
  227. e.visible = false;
  228. break;
  229. }
  230. }
  231. if (!lotWgore && lotWprawo)
  232. {
  233. double roznica1 = (e.polozenieRec.X) - (pilkaRec.X);
  234. double roznica2 = (e.polozenieRec.Y) - (pilkaRec.Y + 20);
  235.  
  236. roznica1 = Math.Pow(roznica1, 2);
  237. roznica2 = Math.Pow(roznica2, 2);
  238. if (roznica1 < roznica2)
  239. {
  240. lotWprawo = false;
  241. e.visible = false;
  242. break;
  243. }
  244. else
  245. {
  246. lotWgore = true;
  247. e.visible = false;
  248. break;
  249. }
  250. }
  251. if (!lotWgore && !lotWprawo)
  252. {
  253. double roznica1 = (e.polozenieRec.X+40) - (pilkaRec.X);
  254. double roznica2 = (e.polozenieRec.Y) - (pilkaRec.Y + 20);
  255. roznica1 = Math.Pow(roznica1, 2);
  256. roznica2 = Math.Pow(roznica2, 2);
  257. if (roznica1 < roznica2)
  258. {
  259. lotWprawo = true;
  260. e.visible = false;
  261. break;
  262. }
  263. else
  264. {
  265. lotWgore = true;
  266. e.visible = false;
  267. break;
  268. }
  269. }
  270.  
  271. }
  272. }
  273. UpdateTime += gameTime.ElapsedGameTime.TotalSeconds;
  274. foreach (ElementDoRozbicia e in ListaElementow)
  275. {
  276. if (e.visible)
  277. spriteBatch.Draw(ElementDoRozbicia.obrazek, e.polozenieRec, Color.White);
  278. }
  279.  
  280. spriteBatch.Draw(paletka, paletkaRec, Color.White);
  281. spriteBatch.Draw(pilka, pilkaRec, Color.White);
  282. spriteBatch.End();
  283. base.Draw(gameTime);
  284. }
  285. }
  286. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement