Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using Microsoft.Xna.Framework;
- using Microsoft.Xna.Framework.Audio;
- using Microsoft.Xna.Framework.Content;
- using Microsoft.Xna.Framework.GamerServices;
- using Microsoft.Xna.Framework.Graphics;
- using Microsoft.Xna.Framework.Input;
- using Microsoft.Xna.Framework.Media;
- namespace MyszPong
- {
- public class Game1 : Microsoft.Xna.Framework.Game
- {
- GraphicsDeviceManager graphics;
- SpriteBatch spriteBatch;
- Texture2D paletka, pilka;
- Rectangle paletkaRec, pilkaRec;
- bool lotWgore = false,lotWprawo = false;
- double UpdateTime = 0;
- int odbiciePoziomo = 5,odbiciePionowo =5;
- GameTime gameTime;
- double odlegloscZLewej = 0, odlegloscZPrawej = 0, odlegloscOdSrodka =0 ;
- List<ElementDoRozbicia> ListaElementow;
- bool wlacz = true;
- class ElementDoRozbicia
- {
- public static Texture2D obrazek{get;set;}
- public Rectangle polozenieRec{get;set;}
- public bool visible{get;set;}
- public ElementDoRozbicia(Point Poloznie)
- {
- polozenieRec = new Rectangle(Poloznie.X, Poloznie.Y, 40, 20);
- visible = true;
- }
- }
- public Game1()
- {
- graphics = new GraphicsDeviceManager(this);
- Content.RootDirectory = "Content";
- Window.AllowUserResizing = true;
- graphics.PreferredBackBufferWidth = 640;
- graphics.PreferredBackBufferHeight = 480;
- this.IsMouseVisible = true;
- paletkaRec = new Rectangle(320, 400,100, 20);
- pilkaRec = new Rectangle(320, 50, 20, 20);
- gameTime = new GameTime();
- ListaElementow = new List<ElementDoRozbicia>();
- for (int i = 0; i < 15; ++i)
- {
- ElementDoRozbicia e = new ElementDoRozbicia(new Point(10 + 40 * i, 100));
- ListaElementow.Add(e);
- }
- }
- protected override void Initialize()
- {
- base.Initialize();
- }
- protected override void LoadContent()
- {
- spriteBatch = new SpriteBatch(GraphicsDevice);
- paletka = Content.Load<Texture2D>("b2");
- pilka = Content.Load<Texture2D>("pilka");
- ElementDoRozbicia.obrazek = Content.Load<Texture2D>("b2");
- }
- protected override void UnloadContent()
- { }
- public bool Kolizja(Rectangle r1, Rectangle r2)
- {
- //left top;
- Point leftTop = new Point(r1.X, r1.Y);
- if (leftTop.X > r2.X && leftTop.X < (r2.X + r2.Width))
- if (leftTop.Y > r2.Y && leftTop.Y < (r2.Y + r2.Width))
- return true;
- //right top
- leftTop = new Point(r1.X + r1.Width, r1.Y);
- if (leftTop.X > r2.X && leftTop.X < (r2.X + r2.Width))
- if (leftTop.Y > r2.Y && leftTop.Y < (r2.Y + r2.Width))
- return true;
- //left bootom
- leftTop = new Point(r1.X, r1.Y + r1.Height);
- if (leftTop.X > r2.X && leftTop.X < (r2.X + r2.Width))
- if (leftTop.Y > r2.Y && leftTop.Y < (r2.Y + r2.Width))
- return true;
- //right bottom
- leftTop = new Point(r1.X + r1.Width, r1.Y + r1.Height);
- if (leftTop.X > r2.X && leftTop.X < (r2.X + r2.Width))
- if (leftTop.Y > r2.Y && leftTop.Y < (r2.Y + r2.Width))
- return true;
- return false ;
- }
- protected override void Update(GameTime gameTime)
- {
- if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
- this.Exit();
- if (Keyboard.GetState().IsKeyDown(Keys.Escape) == true)
- this.Exit();
- MouseState Mstate = Mouse.GetState();
- if (UpdateTime >0.01)
- {
- if (lotWgore)
- pilkaRec.Y -= odbiciePionowo;
- else
- pilkaRec.Y += odbiciePionowo;
- if (lotWprawo)
- pilkaRec.X += odbiciePoziomo;
- else
- pilkaRec.X -= odbiciePoziomo;
- UpdateTime = 0;
- }
- if (pilkaRec.X <= 0)
- lotWprawo = true;
- else if (pilkaRec.X > graphics.PreferredBackBufferWidth-50)
- lotWprawo = false;
- if (pilkaRec.Y <= 0)
- lotWgore = false;
- if (Kolizja(pilkaRec,paletkaRec))
- {
- lotWgore = true;
- odlegloscOdSrodka = (Math.Pow(((paletkaRec.X+50) - pilkaRec.X), 2) + Math.Pow((paletkaRec.Y - pilkaRec.Y), 2));
- odlegloscOdSrodka = Math.Sqrt(odlegloscOdSrodka);
- odlegloscZLewej = (Math.Pow((paletkaRec.X - pilkaRec.X), 2) + Math.Pow((paletkaRec.Y - pilkaRec.Y), 2));
- odlegloscZLewej = Math.Sqrt(odlegloscZLewej);
- odlegloscZPrawej = (Math.Pow(((paletkaRec.X+100) - (pilkaRec.X)), 2) + Math.Pow((paletkaRec.Y - pilkaRec.Y), 2));
- odlegloscZPrawej = Math.Sqrt(odlegloscZPrawej);
- odlegloscZPrawej -= 12;
- if (odlegloscZPrawej < odlegloscZLewej && odlegloscZPrawej < odlegloscOdSrodka)
- {
- odbiciePoziomo = 5;
- odbiciePionowo = 5;
- lotWprawo = true;
- }
- else if (odlegloscZLewej < odlegloscZPrawej && odlegloscZLewej < odlegloscOdSrodka)
- {
- odbiciePoziomo = 5;
- odbiciePionowo = 5;
- lotWprawo = false;
- }
- else if (odlegloscOdSrodka < odlegloscZLewej && odlegloscOdSrodka < odlegloscZPrawej)
- {
- odbiciePoziomo = 2;
- odbiciePionowo = 8;
- }
- }
- if (Mouse.GetState().X > 0 && Mouse.GetState().X + 100 < graphics.PreferredBackBufferWidth)
- wlacz = true;
- else
- wlacz = false;
- if(wlacz)
- paletkaRec.X = Mouse.GetState().X;
- base.Update(gameTime);
- }
- protected override void Draw(GameTime gameTime)
- {
- spriteBatch.Begin();
- foreach (ElementDoRozbicia e in ListaElementow)
- {
- if (pilkaRec.Intersects(e.polozenieRec) && e.visible)
- {
- if (lotWgore && lotWprawo)
- {
- double roznica1 = (e.polozenieRec.X) - (pilkaRec.X + 20);
- double roznica2 = (e.polozenieRec.Y) - pilkaRec.Y;
- roznica1 = Math.Pow(roznica1, 2);
- roznica2 = Math.Pow(roznica2, 2);
- if (roznica1 < roznica2)
- {
- lotWprawo = false;
- e.visible = false;
- break;
- }
- else
- {
- lotWgore = false;
- e.visible = false;
- break;
- }
- }
- if (lotWgore && !lotWprawo)
- {
- double roznica1 = (e.polozenieRec.X + 40) - pilkaRec.X;
- double roznica2 = (e.polozenieRec.Y) - pilkaRec.Y;
- roznica1 = Math.Pow(roznica1, 2);
- roznica2 = Math.Pow(roznica2, 2);
- if (roznica1 < roznica2)
- {
- lotWprawo = true;
- e.visible = false;
- break;
- }
- else
- {
- lotWgore = false;
- e.visible = false;
- break;
- }
- }
- if (!lotWgore && lotWprawo)
- {
- double roznica1 = (e.polozenieRec.X) - (pilkaRec.X);
- double roznica2 = (e.polozenieRec.Y) - (pilkaRec.Y + 20);
- roznica1 = Math.Pow(roznica1, 2);
- roznica2 = Math.Pow(roznica2, 2);
- if (roznica1 < roznica2)
- {
- lotWprawo = false;
- e.visible = false;
- break;
- }
- else
- {
- lotWgore = true;
- e.visible = false;
- break;
- }
- }
- if (!lotWgore && !lotWprawo)
- {
- double roznica1 = (e.polozenieRec.X+40) - (pilkaRec.X);
- double roznica2 = (e.polozenieRec.Y) - (pilkaRec.Y + 20);
- roznica1 = Math.Pow(roznica1, 2);
- roznica2 = Math.Pow(roznica2, 2);
- if (roznica1 < roznica2)
- {
- lotWprawo = true;
- e.visible = false;
- break;
- }
- else
- {
- lotWgore = true;
- e.visible = false;
- break;
- }
- }
- }
- }
- UpdateTime += gameTime.ElapsedGameTime.TotalSeconds;
- foreach (ElementDoRozbicia e in ListaElementow)
- {
- if (e.visible)
- spriteBatch.Draw(ElementDoRozbicia.obrazek, e.polozenieRec, Color.White);
- }
- spriteBatch.Draw(paletka, paletkaRec, Color.White);
- spriteBatch.Draw(pilka, pilkaRec, Color.White);
- spriteBatch.End();
- base.Draw(gameTime);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement