source: riku_l/pong/Peli.cs @ 331

Revision 331, 4.5 KB checked in by tatojoah, 12 years ago (diff)
Line 
1#region Usings
2using System;
3using System.Collections.Generic;
4using System.Linq;
5using Microsoft.Xna.Framework;
6using Microsoft.Xna.Framework.Audio;
7using Microsoft.Xna.Framework.Content;
8using Microsoft.Xna.Framework.Graphics;
9using Microsoft.Xna.Framework.Input;
10using Microsoft.Xna.Framework.Media;
11using Jypeli;
12using Jypeli.ScreenObjects;
13using Jypeli.Assets;
14using AdvanceMath;
15using Physics2DDotNet;
16using Physics2DDotNet.Shapes;
17#endregion
18
19namespace pong
20{
21
22    public class Peli : PhysicsGame
23    {
24        PhysicsObject pallo;
25        PhysicsObject maila1;
26        PhysicsObject maila2;
27        Vector2D nopeusYlos = new Vector2D(0, 200);
28        Vector2D nopeusAlas = new Vector2D(0, -200);
29        protected override void LoadContent()
30        {
31            Level = LuoKentta();
32            AsetaOhjaimet();
33            Aloitapeli();
34        }
35        Level LuoKentta()
36        {
37            Level kentta = new Level(this);
38            kentta.BackgroundColor = Color.Black;
39            IShape ympyra = Shapes.CreateCircle(20.0);
40            maila1 = LuoMaila(kentta.Left + 20.0, 0.0, kentta);
41            maila2 = LuoMaila(kentta.Right - 20.0, 0.0, kentta);
42
43            kentta.CreateBorder(1.0, false);
44
45
46
47            pallo = new PhysicsObject(10.0, ympyra);
48            pallo.X = -200.0;
49            pallo.Y = 0.0;
50            pallo.Restitution = 1.0;
51            kentta.Objects.Add(pallo);
52            return kentta;
53        }
54
55        void Aloitapeli()
56        {
57            Vector2D impulssi = new Vector2D(2000.0, 0.0);
58            pallo.Hit(impulssi);
59        }
60        PhysicsObject LuoMaila(double x, double y, Level kentta)
61        {
62            IShape suorakulmio = Shapes.CreateRectangle(20.0, 100.0);
63            PhysicsObject maila = PhysicsObject.CreateStaticObject(suorakulmio);
64            maila.X = x;
65            maila.Y = y;
66            maila.Restitution = 1.0;
67            kentta.Objects.Add(maila);
68            return maila;
69        }
70
71
72
73        void AsetaOhjaimet()
74        {
75            Controls.Listen(Keys.A, ButtonPosition.Down,AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylos", maila1, nopeusYlos);
76            Controls.Listen(Keys.A, ButtonPosition.Released,AsetaNopeus, null, maila1, Vector2D.Zero);
77            Controls.Listen(Keys.Z, ButtonPosition.Down,AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas);
78            Controls.Listen(Keys.Z, ButtonPosition.Released,AsetaNopeus, null, maila1, Vector2D.Zero);
79
80            Controls.Listen(Keys.Up, ButtonPosition.Down,AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylos", maila2, nopeusYlos);
81            Controls.Listen(Keys.Up, ButtonPosition.Released,AsetaNopeus, null, maila2, Vector2D.Zero);
82            Controls.Listen(Keys.Down, ButtonPosition.Down,AsetaNopeus, "Palaaja 2: Liikuta mailaa alas", maila2, nopeusAlas);
83            Controls.Listen(Keys.Down, ButtonPosition.Released,AsetaNopeus, null, maila2, Vector2D.Zero);
84        }
85
86
87        bool LiikutaMailaaYlos(ControlEvent e)
88        {
89            PhysicsObject maila = e.Parameter0.ToPhysicsObject();
90            if (maila.Y >= Level.Top)
91            {
92                maila.Velocity = Vector2D.Zero;
93                return false;
94            }
95            Vector2D nopeus = new Vector2D(0, 200);
96            maila.Velocity = nopeus;
97            return false;
98        }
99
100        bool PysaytaMaila(ControlEvent e)
101        {
102            PhysicsObject maila = e.Parameter0.ToPhysicsObject();
103            maila.Velocity = Vector2D.Zero;
104            return false;
105        }
106
107
108
109
110
111        bool LiikutaMailaaAlas(ControlEvent e)
112        {
113            PhysicsObject maila = e.Parameter0.ToPhysicsObject();
114            Vector2D nopeus = new Vector2D(0, -200.0);
115            maila.Velocity = nopeus;
116            return false;
117        }
118
119
120        bool AsetaNopeus(ControlEvent e)
121        {
122            PhysicsObject maila = e.Parameter0.ToPhysicsObject();
123            Vector2D nopeus = e.Parameter1.ToVector2D();
124
125            if ((nopeus.Y < 0) && (maila.Y < Level.Bottom))
126            {
127                maila.Velocity = Vector2D.Zero;
128                return false;
129            }
130            if ((nopeus.Y > 0) && (maila.Y > Level.Top))
131            {
132                maila.Velocity = Vector2D.Zero;
133                return false;
134            }
135
136           
137                maila.Velocity = nopeus;
138                return false;
139            }
140        }
141      }
142   
143
144
145   
Note: See TracBrowser for help on using the repository browser.