source: sarita_p/Pong/Peli.cs @ 90

Revision 90, 4.3 KB checked in by sajupaan, 11 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
23    public class Peli : PhysicsGame
24    {
25        const double mailanNopeus = 200.0;
26
27        PhysicsObject pallo;
28        PhysicsObject maila1;
29        PhysicsObject maila2;
30
31        Meter<int> pelaajan1Pisteet;
32        Meter<int> pelaajan2Pisteet;
33
34
35        protected override void LoadContent()
36        {
37            Level = LuoKentta();
38            AsetaOhjaimet();
39            LisaaLaskurit();
40            AloitaPeli();
41        }
42
43        Level LuoKentta()
44        {
45            Level kentta = new Level(this);
46            kentta.BackgroundColor = Color.Black;
47
48            IShape ympyra = Shapes.CreateCircle(20.0);
49            pallo = new PhysicsObject( 10.0, ympyra );
50            pallo.X = -200.0;
51            pallo.Y = 0.0;
52            pallo.Restitution = 2000.0;
53            kentta.Objects.Add( pallo );
54            AddCollisionHandler(pallo, KasittelePallonTormays);
55
56
57            maila1 = LuoMaila(kentta.Left + 20.0, 0.0, kentta );
58            maila2 = LuoMaila(kentta.Right - 20.0, 0.0, kentta );
59
60
61            kentta.CreateBorder(1.0, false);
62
63            return kentta;
64        }
65            PhysicsObject LuoMaila( double x, double y, Level kentta )
66        {
67            IShape suorakulmio = Shapes.CreateRectangle( 20.0, 100.0 );
68            PhysicsObject maila = PhysicsObject.CreateStaticObject( suorakulmio );
69            maila.X = x;
70            maila.Y = y;
71            maila.Restitution = 1.0;
72            kentta.Objects.Add( maila );
73            return maila;}
74
75            void LisaaLaskurit()
76            {
77                pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0);
78                pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0);
79            }
80            Meter<int> LuoPisteLaskuri(double x, double y)
81            {
82                Meter<int> laskuri = new Meter<int>(0, 0, 10);
83                ValueDisplay naytto = new ValueDisplay(this);
84                naytto.BindTo(laskuri);
85                naytto.X = x;
86                naytto.Y = y;
87                naytto.ValueColor = Color.White;
88                Add(naytto);
89                return laskuri;
90            }
91            void KasittelePallonTormays(Collision collision)
92            {
93                PhysicsObject pallo = collision.Obj;
94                PhysicsObject kohde = collision.Other;
95
96                if (kohde == Level.RightBorder)
97                {
98                    pelaajan1Pisteet.Value += 1;
99                }
100                else if (kohde == Level.LeftBorder)
101                {
102                    pelaajan2Pisteet.Value += 1;
103                }
104            }
105
106
107        void AloitaPeli()
108        {
109            Vector2D impulssi = new Vector2D( 2000.0, 1500.0 );
110            pallo.Hit( impulssi );}
111
112      void AsetaOhjaimet()
113        {
114            Controls.Listen( Keys.A, ButtonPosition.Down, LiikutaMailaa, "Pelaaja 1: Liikuta mailaa ylös", maila1, 200.0 );
115            Controls.Listen( Keys.Z, ButtonPosition.Down, LiikutaMailaa, "Pelaaja 1: Liikuta mailaa alas", maila1, -200.0 );
116
117            Controls.Listen( Keys.Up, ButtonPosition.Down, LiikutaMailaa, "Pelaaja 2: Liikuta mailaa ylös", maila2, 200.0 );
118            Controls.Listen( Keys.Down, ButtonPosition.Down, LiikutaMailaa, "Pelaaja 2: Liikuta mailaa alas", maila2, -200.0 );
119        }
120
121      bool LiikutaMailaa(ControlEvent e)
122      {
123          PhysicsObject maila = e.Parameter0.ToPhysicsObject();
124          double nopeus = e.Parameter1.ToDouble();
125          double sekuntejaKulunut = e.Time.ElapsedGameTime.TotalSeconds;
126
127          if ((Level.Bottom < maila.Y) && (maila.Y < Level.Top))
128          {
129              maila.Y += nopeus * sekuntejaKulunut;
130          }
131
132          return false;
133      }
134
135
136        }
137
138         
139
140
141        }
142   
143
Note: See TracBrowser for help on using the repository browser.