source: 2010/31/zhipeng/tapellu/Peli.cs @ 1662

Revision 1662, 9.5 KB checked in by paaaanro, 10 years ago (diff)
Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5
6
7class Tasohyppely : PhysicsGame
8{
9    const double nopeus = 200;
10    const double hyppyVoima = 750;
11
12    PlatformCharacter pelaaja1;
13    PlatformCharacter pelaaja2;
14    DoubleMeter voimaMittaripelaaja1;
15    DoubleMeter voimaMittaripelaaja2;
16
17
18    Image taustaKuva = LoadImage("taustakuva");
19    Image ihminenKuva = LoadImage("ihminen");
20    Image ihminen1Kuva = LoadImage("ihminen1");
21    Image ihminen2Kuva = LoadImage("ihminen2");
22    Image ihminen3Kuva = LoadImage("ihminen3");
23    Image ihminen4Kuva = LoadImage("ihminen4");
24    Image ihminen5Kuva = LoadImage("ihminen5");
25    Image ihminen6Kuva = LoadImage("ihminen6");
26    Image ihminen7Kuva = LoadImage("ihminen7");
27    Image ihminen8Kuva = LoadImage("ihminen8");
28    Image ihminen9Kuva = LoadImage("ihminen9");
29    Image ihminen10Kuva = LoadImage("ihminen10");
30    Image ihminenjKuva = LoadImage("ihminenj");
31    Image ihminenbKuva = LoadImage("ihminenb");
32    Image pallo = LoadImage("pallo");
33
34   
35
36    protected override void Begin()
37    {
38        Gravity = new Vector(0, -1000);
39
40        luoKentta();
41        lisaaNappaimet();
42
43        Camera.Follow(pelaaja1);
44        Camera.ZoomFactor = 2.0;
45        Camera.StayInLevel = true;
46        voimaMittaripelaaja1 = new DoubleMeter(1000);
47        voimaMittaripelaaja1.MaxValue = 1000;
48        voimaMittaripelaaja1.LowerLimit += PeliLoppui;
49        BarGauge voimaPalkkipelaaja1 = new BarGauge(20, 150);
50        voimaPalkkipelaaja1.BindTo(voimaMittaripelaaja1);
51        Add(voimaPalkkipelaaja1);
52
53        voimaPalkkipelaaja1.X = (0.8 * Screen.RightSafe);
54        voimaPalkkipelaaja1.Y = (0.8 * Screen.TopSafe);
55        voimaPalkkipelaaja1.BarColor = Color.Blue;
56        voimaPalkkipelaaja1.BorderColor = Color.White;
57        voimaPalkkipelaaja1.Angle = Angle.Degrees(90);
58
59        voimaMittaripelaaja2 = new DoubleMeter(1000);
60        voimaMittaripelaaja2.MaxValue = 1000;
61        voimaMittaripelaaja2.LowerLimit += PeliLoppui;
62        BarGauge voimaPalkkipelaaja2 = new BarGauge(20, 150);
63        voimaPalkkipelaaja2.BindTo(voimaMittaripelaaja2);
64        Add(voimaPalkkipelaaja2);
65
66        voimaPalkkipelaaja2.X = (-0.8 * Screen.RightSafe);
67        voimaPalkkipelaaja2.Y = (0.8 * Screen.TopSafe);
68        voimaPalkkipelaaja2.BarColor = Color.Red;
69        voimaPalkkipelaaja2.BorderColor = Color.White;
70        voimaPalkkipelaaja2.Angle = Angle.Degrees(90);
71
72
73    }
74
75    void PeliLoppui( double value)
76    {
77        MessageBox mb = new MessageBox("Peli loppui", "Peli ohi!");
78        mb.Accepted += LopetaPeli;
79        Add(mb);
80    }
81
82    void LopetaPeli()
83    {
84        Exit();
85    }
86
87    void luoKentta()
88    {
89        Level.CreateBorders();
90        Level.Background.Image = taustaKuva;
91
92        lisaaTaso(-200, -350);
93        lisaaTaso(0, -200);
94        lisaaTaso(100, 50);
95        lisaaTaso(-100, 40);
96        lisaaTaso(400, 30);
97        lisaaTaso(-100, 40);
98        lisaaTaso(-300, 70);
99        lisaaTaso(700, -60);
100        lisaaTaso(500, -190);
101        lisaaTaso(300, -190);
102        lisaaTaso(-300, -190);
103
104
105
106        lisaaPelaajat();
107    }
108
109    void lisaaTaso(double x, double y)
110    {
111        PhysicsObject taso = PhysicsObject.CreateStaticObject(100, 30);
112        taso.Color = Color.Green;
113        taso.X = x;
114        taso.Y = y;
115        Add(taso);
116    }
117
118    void lisaaPelaajat()
119    {
120        pelaaja1 = new PlatformCharacter(50, 50);
121        pelaaja1.Mass = 0.4;
122        pelaaja1.Image = ihminenjKuva;
123        pelaaja1.X = 0;
124        pelaaja1.Y = Level.Bottom + 120;
125        pelaaja2 = new PlatformCharacter(20, 50);
126        pelaaja2.Image = ihminenbKuva;
127        pelaaja2.X = 100;
128        pelaaja2.Mass = 0.4;
129
130           
131        Add(pelaaja2);
132        Add(pelaaja1);
133    }
134   
135
136    void lisaaNappaimet()
137    {
138        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
139        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
140
141        Keyboard.Listen(Key.A, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
142        Keyboard.Listen(Key.D, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
143        Keyboard.Listen(Key.W, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
144
145        Keyboard.Listen(Key.J, ButtonState.Down, Käsitapele, null, pelaaja1);
146        Keyboard.Listen(Key.K, ButtonState.Down, Jalkatapele, null, pelaaja1);
147        Keyboard.Listen(Key .L, ButtonState .Down,Supertapele,null ,pelaaja1 );
148        Keyboard.Listen(Key.U, ButtonState.Down, Kaukanatapele, null, pelaaja1);
149 
150       
151
152        Keyboard.Listen(Key.S, ButtonState.Down, Mennematalaksi,null,pelaaja1  );
153
154        Keyboard.Listen(Key.S, ButtonState.Released, nouse, null, pelaaja1);
155
156        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja2, -nopeus);
157        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja2, nopeus);
158        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja2, hyppyVoima);
159
160        Keyboard.Listen (Key .Delete ,ButtonState .Down, Käsitapele2,null ,pelaaja2);
161        Keyboard.Listen (Key .End ,ButtonState .Down ,Jalkatapele2,null ,pelaaja2);
162        Keyboard.Listen (Key .PageDown ,ButtonState .Down ,Supertapele2,null ,pelaaja2 );
163
164   
165
166        Keyboard.Listen(Key.Down, ButtonState.Down, Mennematalaksi, null, pelaaja2);
167        Keyboard.Listen(Key.Down, ButtonState.Released, nouse, null, pelaaja2);
168
169        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
170        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
171        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
172        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
173    }
174    void Mennematalaksi(PlatformCharacter hahmo)
175    {
176        hahmo.Height = 10;
177    }
178    void nouse(PlatformCharacter hahmo)
179    {
180        hahmo.Height = 50;
181    }
182    void Käsitapele(PlatformCharacter hahmo)
183    {
184        hahmo.Image = ihminenKuva;
185        if (Vector.Distance(pelaaja1.Position, pelaaja2.Position) < 50)
186            voimaMittaripelaaja2.Value -= 5;
187        Timer.SingleShot(0.4, ajastinLaukesi);
188    }
189    void ajastinLaukesi()
190    {
191        pelaaja1.Image = ihminenjKuva;
192    }
193
194    void Jalkatapele(PlatformCharacter hahmo)
195    {
196        hahmo.Image = ihminen2Kuva;
197        if (Vector.Distance(pelaaja1.Position, pelaaja2.Position) < 50)
198            voimaMittaripelaaja2.Value -= 5;
199    }
200    void Käsitapele2(PlatformCharacter hahmo)
201    {
202        hahmo.Image = ihminen4Kuva;
203        if (Vector.Distance(pelaaja1.Position, pelaaja2.Position) < 50)
204            voimaMittaripelaaja1.Value -= 5;
205    }
206    void Jalkatapele2(PlatformCharacter hahmo)
207    {
208        hahmo.Image = ihminen5Kuva;
209        if (Vector.Distance(pelaaja1.Position, pelaaja2.Position) < 50)
210            voimaMittaripelaaja1.Value -= 5;
211    }
212    void Supertapele2(PlatformCharacter hahmo)
213    {
214        hahmo.Image = ihminen6Kuva;
215
216        PhysicsObject P = new PhysicsObject(10, 10, Shapes.Circle);
217        P.Image = pallo;
218        P.Tag = "p2";
219        if (hahmo.FacingDirection == Direction.Left)
220            P.X = hahmo.X - 50;
221        else
222            P.X = hahmo.X + 50;
223        P.Y = hahmo.Y;
224        Add(P);
225        AddCollisionHandler(P, KasittelePallonTormays);
226        Explosion rajahdys = new Explosion(100);
227        rajahdys.Position = hahmo.Position;
228        Add(rajahdys);
229
230        rajahdys.Speed = 500.0;
231        rajahdys.Force = 10;
232
233        rajahdys.ShockwaveColor = Color.Yellow;
234       
235    }
236   
237    void Supertapele(PlatformCharacter hahmo)
238    {
239       
240        PhysicsObject P = new PhysicsObject(10, 10, Shapes.Circle);
241        P.Image = pallo;
242        P.Tag = "p1";
243        if (hahmo.FacingDirection == Direction.Left)
244            P.X = hahmo.X - 50;
245        else
246            P.X = hahmo.X + 50;
247        P.Y = hahmo.Y;
248        Add(P);
249        AddCollisionHandler(P, KasittelePallonTormays);
250        Explosion rajahdys = new Explosion(100);
251        rajahdys.Position = hahmo.Position;
252        Add(rajahdys);
253
254        rajahdys.Speed = 500.0;
255        rajahdys.Force = 10;
256
257        rajahdys.ShockwaveColor = Color.Yellow;
258
259    }
260
261    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde)
262    {
263        //tähän kirjoitetaan mitä halutaan tehdä, kun pallo törmää johonkin
264        if(kohde == pelaaja1 && pallo.Tag.ToString() == "p2")
265        {
266            voimaMittaripelaaja1.Value  -= 10;
267            pallo.Destroy();
268        }
269        if (kohde == pelaaja2 && pallo.Tag.ToString() == "p1")
270        {
271            voimaMittaripelaaja2.Value -= 10;
272            pallo.Destroy();
273        }
274        if (kohde == pelaaja1 || kohde == pelaaja2)
275            return;
276        pallo.Destroy();
277    }
278
279   
280 
281
282    void Kaukanatapele(PlatformCharacter hahmo)
283    {
284        hahmo.Image = ihminen7Kuva;
285    }
286
287    void Jlkätapele(PlatformCharacter hahmo)
288    {
289        hahmo .Image =ihminen5Kuva;
290    }
291
292        void liikuta(PlatformCharacter hahmo, double nopeus)
293    {
294        hahmo.Walk(nopeus);
295    }
296
297    void hyppaa(PlatformCharacter hahmo, double voima)
298    {
299        hahmo.Jump(voima);
300    }
301}
Note: See TracBrowser for help on using the repository browser.