source: aku_k/Pong/Peli.cs @ 37

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