source: 2011/24/PauliN/Jalkapallopeli/Jalkapallopeli/Jalkapallopeli/Peli.cs @ 2097

Revision 2097, 7.6 KB checked in by paaaanro, 8 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Peli : PhysicsGame
10{
11    Image pallonKuva = LoadImage("football");   
12    Image pelaaja1Kuva = LoadImage("pelaaja1");   
13    Image pelaaja1oikKuva = LoadImage("pelaaja1oik");
14    Image pelaaja2Kuva = LoadImage("pelaaja2");
15    Image pelaaja2vasKuva = LoadImage("pelaaja2vas");
16    Image tausta = LoadImage("tausta");
17    Image maali1Kuva = LoadImage("maali1");
18    Image maali2Kuva = LoadImage("maali2");
19
20    PhysicsObject pallo;
21    PhysicsObject nurmi;
22    PhysicsObject maali1;
23    PhysicsObject maali2;
24    PhysicsObject pelaaja1;
25    PhysicsObject pelaaja2;
26    PhysicsObject raja1;
27    PhysicsObject raja2;
28
29   
30
31    IntMeter Pelaajan1Pisteet;
32    IntMeter Pelaajan2Pisteet;
33
34   
35    Vector NopeusVasemmalle = new Vector(-150, 0);
36    Vector NopeusOikealle = new Vector(150, 0);
37    Vector HyppyVoima = new Vector(0, 400);   
38       
39    public override void Begin()
40    {
41        LuoKentta();
42        AloitaPeli();
43        AsetaOhjaimet();
44        LisaaLaskurit();
45
46               
47    }
48    void LuoKentta()
49    {
50        PhysicsObject raja1 = PhysicsObject.CreateStaticObject(10, 1000);
51        raja1.X = Level.Left + 50;
52        raja1.Y = 0;
53        raja1.IsVisible = false;
54        Add(raja1);
55
56        PhysicsObject raja2 = PhysicsObject.CreateStaticObject(10, 1000);
57        raja2.X = Level.Right - 50;
58        raja2.Y = 0;
59        raja2.IsVisible = false;
60        Add(raja2);
61
62        pallo = new PhysicsObject(45, 45);
63        pallo.Image = pallonKuva;
64        pallo.X = 0;
65        pallo.Y = 300;
66        pallo.Mass = 0.2;
67        pallo.Restitution = 1;
68        Add(pallo);
69
70       
71
72
73        Level.Background.Image = tausta;
74        Level.Background.FitToLevel();
75
76        PhysicsObject nurmi = PhysicsObject.CreateStaticObject(1000, 50);
77        nurmi.Shape = Shape.Rectangle;
78        nurmi.X = 0;
79        nurmi.Y = Level.Bottom;
80        nurmi.Color = Color.Green;       
81        Add(nurmi);
82
83       
84        maali1 = PhysicsObject.CreateStaticObject(100, 180);
85        maali1.Image = maali1Kuva;       
86        maali1.X = Level.Left + 20;
87        maali1.Y = Level.Bottom + 75;
88        Add(maali1);
89
90        maali2 = PhysicsObject.CreateStaticObject(100, 180);
91        maali2.Image = maali2Kuva;
92        maali2.X = Level.Right - 20;
93        maali2.Y = Level.Bottom + 75;
94        Add(maali2);
95       
96        Level.CreateLeftBorder(1, false);       
97        Level.CreateTopBorder(1, false);
98        Level.CreateRightBorder(1, false);
99        Level.CreateBottomBorder(1, false);
100
101        Camera.ZoomToLevel();
102        //Camera.Follow(pallo);       
103
104        pelaaja1 = LuoPelaaja(Level.Left + 200, 0);
105        pelaaja2 = LuoPelaaja(Level.Right - 200, 0);
106
107        pelaaja1.Image = pelaaja1oikKuva;
108        pelaaja2.Image = pelaaja2vasKuva;
109
110        AddCollisionHandler(pallo, KasittelePallonTormays);
111
112        pelaaja1.CanRotate = false;
113        pelaaja2.CanRotate = false;
114               
115
116    }
117    void AloitaPeli()
118    {
119        Gravity = new Vector(0.0, -600);
120    }
121
122    PhysicsObject LuoPelaaja(double x, double y)
123    {
124        PhysicsObject pelaaja = new PhysicsObject(40, 40);
125        pelaaja.Shape = Shape.Circle;
126        pelaaja.X = x;
127        pelaaja.Y = y;
128        Add(pelaaja);
129
130        return pelaaja;
131    }
132
133    void LisaaLaskurit()
134    {
135        Pelaajan1Pisteet = LuoPisteLaskuri ( Screen.Left + 50, Screen.Top - 50);
136        Pelaajan2Pisteet = LuoPisteLaskuri ( Screen.Right - 50, Screen.Top - 50);
137    }
138
139    IntMeter LuoPisteLaskuri(double x, double y)
140    {
141        IntMeter laskuri = new IntMeter(0);
142        laskuri.MaxValue = 10;
143        Label naytto = new Label();
144        naytto.BindTo (laskuri);
145        naytto.X = x;
146        naytto.Y = y;
147        naytto.TextColor = Color.White;
148        naytto.BorderColor = Color.LightBlue;
149        naytto.Color = Color.LightBlue;
150        Add(naytto);
151
152        return laskuri;
153
154    }
155   
156
157    void AsetaOhjaimet()
158    {
159        Keyboard.Listen(Key.Escape, ButtonState.Released, Exit, "LopetaPeli");
160
161        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja1: Liiku Vasemmalle", pelaaja1, NopeusVasemmalle );
162        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, pelaaja1, Vector.Zero);
163
164        Keyboard.Listen(Key.D, ButtonState.Down, AsetaNopeus, "Pelaaja1: Liiku Oikealle", pelaaja1, NopeusOikealle);
165        Keyboard.Listen(Key.D, ButtonState.Released, AsetaNopeus, null, pelaaja1, Vector.Zero);
166
167        Keyboard.Listen(Key.Left, ButtonState.Down, AsetaNopeus, "Pelaaja2: Liiku Vasemmalle", pelaaja2, NopeusVasemmalle);
168        Keyboard.Listen(Key.Left, ButtonState.Released, AsetaNopeus, null, pelaaja2, NopeusVasemmalle);
169
170        Keyboard.Listen(Key.Right, ButtonState.Down, AsetaNopeus, "Pelaaja2: Liiku Oikealle", pelaaja2, NopeusOikealle);
171        Keyboard.Listen(Key.Right, ButtonState.Released, AsetaNopeus, null, pelaaja2, NopeusOikealle);
172
173        Keyboard.Listen(Key.W, ButtonState.Pressed, AsetaHyppy, "Pelaaja1: Hyppaa", pelaaja1, HyppyVoima);
174
175        Keyboard.Listen(Key.Up, ButtonState.Pressed, AsetaHyppy, "Pelaaja2: Hyppaa", pelaaja2, HyppyVoima);
176
177        Keyboard.Listen(Key.LeftControl, ButtonState.Released, Potkaise, "Pelaaja1: Potkaise", pelaaja1);
178        Keyboard.Listen(Key.RightControl, ButtonState.Released, Potkaise, "Pelaaja2: Potkaise", pelaaja2);
179       
180
181    }
182
183    void AsetaNopeus(PhysicsObject pelaaja, Vector nopeus)
184    {               
185        pelaaja.Velocity = nopeus + new Vector(0, pelaaja.Velocity.Y);
186        if (nopeus.X > 0)
187        {
188            if (pelaaja == pelaaja1)
189
190               pelaaja1.Image = pelaaja1oikKuva;
191            if (pelaaja == pelaaja2)
192
193            pelaaja2.Image = pelaaja2Kuva;
194        }
195        if (nopeus.X < 0)
196        {
197            if (pelaaja == pelaaja1)
198            pelaaja1.Image = pelaaja1Kuva;
199
200            if (pelaaja == pelaaja2)
201            pelaaja2.Image = pelaaja2vasKuva;
202        }
203       
204       
205    }
206
207    void AsetaHyppy(PhysicsObject pelaaja, Vector voima)
208    {
209       
210
211        if (pelaaja.Y < -350)
212        {
213            pelaaja.Hit (voima);
214        }
215
216    }
217
218    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde)
219    {
220        if(kohde == maali2)
221        {
222            Pelaajan1Pisteet.Value += 1;
223            pallo.X = 0;
224            pallo.Y = 300;
225            pelaaja1.X = -200;
226            pelaaja2.X = 200;
227            pallo.Stop();
228        }
229        else if (kohde == maali1)
230        {
231            pallo.X = 0;
232            pallo.Y = 300;
233            pelaaja1.X = -200;
234            pelaaja2.X = 200;
235            Pelaajan2Pisteet.Value += 1;
236            pallo.Stop();
237        }
238
239       
240       
241
242    }
243    void Potkaise(PhysicsObject pelaaja)
244    {
245
246         
247        Vector suunta = (pallo.Position - pelaaja.Position);
248        if (suunta.Magnitude < 60)
249        {
250            Vector potku = suunta + new Vector(0, 80);
251            if ((pelaaja.Image == pelaaja1oikKuva) || (pelaaja.Image == pelaaja2Kuva))
252            {
253                if (pelaaja.X < pallo.X)
254                { 
255                    pallo.Hit(potku * 0.8);
256                }
257            }
258            else
259            {
260                if (pelaaja.X > pallo.X)
261                {
262                    pallo.Hit(potku * 0.8);
263                }
264            }
265
266           
267        }   
268     
269
270
271    }
272   
273             
274}
Note: See TracBrowser for help on using the repository browser.