source: jaana_j/pong/Peli.cs @ 282

Revision 282, 4.5 KB checked in by jaaannja, 11 years ago (diff)

muna hyppii pilvillä

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    public class Peli : PhysicsGame
22    {
23        PhysicsObject pallo;
24        PhysicsObject maila1;
25        PhysicsObject maila2;
26        Vector2D nopeusYlos = new Vector2D(0, 200);
27        Vector2D nopeusAlas = new Vector2D(0, -200);
28
29        protected override void LoadContent()
30        {
31            Level = LuoKentta();
32            AsetaOhjaimet();
33            AloitaPeli();
34        }
35
36
37        Level LuoKentta()
38        {
39            Level kentta = new Level(this);
40            kentta.BackgroundColor = Color.Green;
41
42            IShape ympyra = Shapes.CreateCircle(20.0);
43            pallo = new PhysicsObject(10.0, ympyra);
44            pallo.X = -200.0;
45            pallo.Y = 0.0;
46            pallo.Restitution = 1.0;
47            kentta.Objects.Add(pallo);
48
49            maila1 = LuoMaila(kentta.Left + 20.0, 0.0, kentta);
50            maila2 = LuoMaila(kentta.Right - 20.0, 0.0, kentta);
51
52
53
54            kentta.CreateBorder(1.0, false);
55
56            return kentta;
57        }
58
59
60        void AloitaPeli()
61        {
62
63            Vector2D impulssi = new Vector2D(3000.0, 0.0);
64            pallo.Hit(impulssi);
65        }
66
67
68
69        PhysicsObject LuoMaila(double x, double y, Level kentta)
70        {
71            IShape suorakulmio = Shapes.CreateRectangle(20.0, 100.0);
72            PhysicsObject maila = PhysicsObject.CreateStaticObject(suorakulmio);
73            maila.X = x;
74            maila.Y = y;
75            maila.Restitution = 1.0;
76            kentta.Objects.Add(maila);
77            return maila;
78        }
79
80
81        void AsetaOhjaimet()
82        {
83            Controls.Listen(Keys.A, ButtonPosition.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylös", maila1, nopeusYlos);
84            Controls.Listen(Keys.A, ButtonPosition.Released, AsetaNopeus, null, maila1, Vector2D.Zero);
85            Controls.Listen(Keys.Z, ButtonPosition.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas);
86            Controls.Listen(Keys.Z, ButtonPosition.Released, AsetaNopeus, null, maila1, Vector2D.Zero);
87
88            Controls.Listen(Keys.Up, ButtonPosition.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, nopeusYlos);
89            Controls.Listen(Keys.Up, ButtonPosition.Released, AsetaNopeus, null, maila2, Vector2D.Zero);
90            Controls.Listen(Keys.Down, ButtonPosition.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, nopeusAlas);
91            Controls.Listen(Keys.Down, ButtonPosition.Released, AsetaNopeus, null, maila2, Vector2D.Zero);
92
93           
94        }
95
96        bool LiikutaMailaaYlos(ControlEvent e)
97        {
98            PhysicsObject maila = e.Parameter0.ToPhysicsObject();
99            if (maila.Y >= Level.Top)
100            {
101                maila.Velocity = Vector2D.Zero;
102                return false;
103            }
104
105            Vector2D nopeus = new Vector2D(0, 200);
106            maila.Velocity = nopeus;
107            return false;
108        }
109
110        bool PysaytaMaila(ControlEvent e)
111        {
112            PhysicsObject maila = e.Parameter0.ToPhysicsObject();
113            maila.Velocity = Vector2D.Zero;
114            return false;
115
116        }
117        bool LiikutaMailaaAlas(ControlEvent e)
118        {
119            PhysicsObject maila = e.Parameter0.ToPhysicsObject();
120            Vector2D nopeus = new Vector2D(0, -200);
121            maila.Velocity = nopeus;
122            return false;
123        }
124
125
126
127        bool AsetaNopeus(ControlEvent e)
128        {
129            PhysicsObject maila = e.Parameter0.ToPhysicsObject();
130            Vector2D nopeus = e.Parameter1.ToVector2D();
131
132            if ((nopeus.Y < 0) && (maila.Y < Level.Bottom))
133            {
134                maila.Velocity = Vector2D.Zero;
135                return false;
136            }
137            if ((nopeus.Y > 0) && (maila.Y > Level.Top))
138            {
139                maila.Velocity = Vector2D.Zero;
140                return false;
141            }
142
143            maila.Velocity = nopeus;
144
145            return false;
146        }
147
148
149
150       
151        }
152
153    }
154         
155
156   
157   
158
159
160           
161
162
163
164
165   
Note: See TracBrowser for help on using the repository browser.