source: 2015/23/OskuL/FysiikkaPeli2/FysiikkaPeli2/FysiikkaPeli2/space race.cs @ 5870

Revision 5870, 11.3 KB checked in by jotapoti, 5 years ago (diff)

peli melkein valmis

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class FysiikkaPeli2 : PhysicsGame
10{
11    Image tynnyriKuva = LoadImage("hazarx2");
12    Image rajahdysKuva = LoadImage("");
13    SoundEffect rajahdysAani = LoadSoundEffect("");
14    PhysicsObject pelaaja1, pelaaja2;
15    PhysicsObject asteroidi;
16    PhysicsObject maali;
17
18    IntMeter pisteLaskuri1, pisteLaskuri2;
19    DoubleMeter elamaLaskuri;
20    DoubleMeter elamaLaskuri2;
21    public override void Begin()
22    {
23        LuoPistelaskuri1();
24        LuoPistelaskuri2();
25        LuoKentta();
26        LuoOhjaimet();
27        //Camera.Position = pelaaja1.Position + new Vector(720, 0);
28        Camera.Follow(pelaaja1, pelaaja2);
29        Camera.FollowXMargin = 1000;
30        Camera.FollowYMargin = 100;
31        //Camera.StayInLevel = true;
32        elamaLaskuri = LuoElamaLaskuri(Screen.Left + 500, Screen.Top - 70, pelaaja1);
33        elamaLaskuri2 = LuoElamaLaskuri(Screen.Right - 500, Screen.Top - 70, pelaaja2);
34       
35
36        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
37    }
38    private void LuoKentta()
39    {
40        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("SPACERACE");
41        ruudut.SetTileMethod(Color.Cyan, LuoPelaaja1);
42        ruudut.SetTileMethod(Color.White, LuoPistetynnyri);
43        ruudut.SetTileMethod(Color.Gold, LuoPelaaja2);
44        ruudut.SetTileMethod(Color.Black, LuoAsteroidi);
45        ruudut.SetTileMethod(Color.FromHexCode("0026FF"), LuoMaali);
46        ruudut.SetTileMethod(Color.Red, LuoReuna);
47        //Level.Background.CreateStars();
48
49
50        ruudut.Execute(20, 20);
51
52        Level.Background.Color = Color.Black;
53        Level.Size = new Vector(3000.0, 1800.0);
54
55        Level.Background.Image = LoadImage("earth");
56        Level.Background.ScaleToLevel();
57
58        //GameObject tausta = new GameObject(LoadImage("Earth"));
59
60        //Add(tausta, -3);
61        //Image taustakuva = LoadImage("space");
62        //GameObject taustaPilvet = new GameObject(Screen.Width * 1.5, Screen.Height * 1.5 );
63        //taustaPilvet.Image = taustakuva;
64        //Add(taustaPilvet, -3);
65        //Layers[-3].RelativeTransition = new Vector(0.5, 0.5);
66
67
68
69        //Level.Background.Scale = 2.0;
70        //Level.Size = Level.Size * 2;
71        //Level.Background.
72    }
73
74    DoubleMeter LuoElamaLaskuri(Double x, Double y, PhysicsObject pelaaja)
75    {
76        DoubleMeter elamaLaskuri = new DoubleMeter(10);
77        elamaLaskuri.MaxValue = 10;
78
79        if (pelaaja.Tag.Equals("eka"))
80        {
81            elamaLaskuri.LowerLimit += ElamaLoppui1;
82        }
83
84        if (pelaaja.Tag.Equals("toka"))
85        {
86            elamaLaskuri.LowerLimit += ElamaLoppui2;
87        }
88
89        ProgressBar elamaPalkki = new ProgressBar(150, 20);
90        elamaPalkki.X = x;
91        elamaPalkki.Y = y;
92        elamaPalkki.BindTo(elamaLaskuri);
93        elamaPalkki.Color = Color.Transparent;
94        elamaPalkki.BarColor = Color.Red;
95        elamaPalkki.BorderColor = Color.Black;
96        Add(elamaPalkki);
97        return elamaLaskuri;
98
99    }
100
101
102    void LuoPistelaskuri1()
103    {
104        pisteLaskuri1 = new IntMeter(0);
105
106        Label pisteNaytto = new Label();
107        pisteNaytto.X = Screen.Left + 500;
108        pisteNaytto.Y = Screen.Top - 100;
109        pisteNaytto.TextColor = Color.Black;
110        pisteNaytto.Color = Color.White;
111        pisteNaytto.Title = "Pisteet";
112        pisteNaytto.BindTo(pisteLaskuri1);
113        IntMeter keratytEsineet = new IntMeter(0);
114        pisteLaskuri1.MaxValue = 5;
115        pisteLaskuri1.UpperLimit += delegate { KaikkiKeratty(pelaaja1); };
116        Add(pisteNaytto);
117    }
118
119    void LuoPistelaskuri2()
120    {
121        pisteLaskuri2 = new IntMeter(0);
122
123        Label pisteNaytto = new Label();
124        pisteNaytto.X = Screen.Right - 500;
125        pisteNaytto.Y = Screen.Top - 100;
126        pisteNaytto.TextColor = Color.Black;
127        pisteNaytto.Color = Color.White;
128        pisteNaytto.Title = "Pisteet";
129        pisteNaytto.BindTo(pisteLaskuri2);
130        IntMeter keratytEsineet = new IntMeter(0);
131        pisteLaskuri2.MaxValue = 5;
132        pisteLaskuri2.UpperLimit += delegate { KaikkiKeratty(pelaaja2); };
133        Add(pisteNaytto);
134    }
135
136    void KaikkiKeratty(PhysicsObject pelaaja)
137    {
138        // "moi pelaaja " + pelaaja.Tag + "!!!"
139       
140        // moi pelaaja eka!!!
141
142        MessageDisplay.Add("Maali auki " + pelaaja.Tag + "lle pelaajalle");
143        AktivoiMaali(pelaaja);
144    }
145
146    void  ElamaLoppui1()
147    {
148        MessageDisplay.Add("Hävisit, paremmin ensikerralla");
149        pelaaja1.Destroy();
150        Keyboard.Disable(Key.Up);
151        Keyboard.Disable(Key.Right);
152        Keyboard.Disable(Key.Left);
153        Keyboard.Disable(Key.Down);
154    }
155
156    void ElamaLoppui2()
157    {
158        MessageDisplay.Add("Hävisit, paremmin ensikerralla");
159        pelaaja2.Destroy();
160        Keyboard.Disable(Key.W);
161        Keyboard.Disable(Key.A);
162        Keyboard.Disable(Key.S);
163        Keyboard.Disable(Key.D);
164    }
165    private void LuoOhjaimet()
166    {
167        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, "Liikutetaan pelaajaa", 1, 1);
168        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, "käännä oikealle", 1, 2);
169        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, "käännä vasemmalle", 1, 3);
170        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, "jarru taaksepäin", 1, 4);
171
172        Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, "Liikutetaan pelaajaa", 2, 1);
173        Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa, "käännä oikealle", 2, 2);
174        Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, "käännä vasemmalle", 2, 3);
175        Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa, "jarru taaksepäin", 2, 4);
176    }
177    private void LiikutaPelaajaa(int pelaajaNro, int liikkeenTyyppi)
178    {
179        switch (pelaajaNro)
180        {
181            case 1:
182                switch (liikkeenTyyppi)
183                {
184                    case 1:
185                        pelaaja1.Push(Vector.FromLengthAndAngle(250.0, pelaaja1.Angle));//kaasu eteen                       
186                        break;
187                    case 2:
188                        pelaaja1.Angle += Angle.FromDegrees(-1.5);//oikealle=myötäpäivään
189                        break;
190                    case 3:
191                        pelaaja1.Angle += Angle.FromDegrees(1.5);//vasemmalle=vastapäivään
192                        break;
193                    case 4:
194                        pelaaja1.Push(-Vector.FromLengthAndAngle(250.0, pelaaja1.Angle));
195                        break;
196                }
197
198                break;
199            case 2:
200                switch (liikkeenTyyppi)
201                {
202                    case 1:
203                        pelaaja2.Push(Vector.FromLengthAndAngle(250.0, pelaaja2.Angle));//kaasu eteen                       
204                        break;
205                    case 2:
206                        pelaaja2.Angle += Angle.FromDegrees(-2.0);//oikealle=myötäpäivään
207                        break;
208                    case 3:
209                        pelaaja2.Angle += Angle.FromDegrees(2.0);//vasemmalle=vastapäivään
210                        break;
211                    case 4:
212                        pelaaja2.Push(-Vector.FromLengthAndAngle(250.0, pelaaja2.Angle));
213                        break;
214                }
215                break;
216        }
217    }
218
219    private void LuoAsteroidi(Vector paikka, double leveys, double korkeus)
220    {
221        asteroidi = new PhysicsObject(30, 30);
222        Image c = LoadImage("asteroid");
223        asteroidi.Image = c;
224        asteroidi.Position = paikka;
225        asteroidi.Tag = "asteroid";
226        Add(asteroidi);
227    }
228    private void LuoPelaaja1(Vector paikka, double leveys, double korkeus)
229    {
230        pelaaja1 = new PhysicsObject(30, 30);
231        Image c = LoadImage("ship");
232        pelaaja1.Image = c;
233        pelaaja1.Position = paikka;
234        pelaaja1.Tag = "eka";
235        pelaaja1.AngularDamping = 0.9;
236        Add(pelaaja1);
237        pelaaja1.LinearDamping = 0.98;
238        AddCollisionHandler(pelaaja1, "asteroid", PelaajaOsuu);
239        AddCollisionHandler(pelaaja1, "piste", PelaajaOsuuPisteeseen);
240    }
241    private void LuoPelaaja2(Vector paikka, double leveys, double korkeus)
242    {
243        pelaaja2 = new PhysicsObject(30, 30);
244        Image c = LoadImage("ship");
245        pelaaja2.Image = c;
246
247        pelaaja2.Position = paikka;
248        pelaaja2.Tag = "toka";
249        pelaaja2.AngularDamping = 0.9;
250        Add(pelaaja2);
251        pelaaja2.LinearDamping = 0.98;
252        AddCollisionHandler(pelaaja2, "asteroid", PelaajaOsuu);
253        AddCollisionHandler(pelaaja2, "piste", PelaajaOsuuPisteeseen);
254    }
255    private void LuoReuna(Vector paikka, double leveys, double korkeus)
256    {
257        PhysicsObject reuna = PhysicsObject.CreateStaticObject(20, 20);
258        reuna.Position = paikka;
259        Add(reuna);
260        reuna.Color = Color.Transparent;
261    }
262    private void LuoMaali(Vector paikka, double leveys, double korkeus)
263    {
264        maali = PhysicsObject.CreateStaticObject(20, 20);
265        maali.Position = paikka;
266
267        Add(maali);
268        maali.Color = Color.HotPink;
269    }
270    private void AktivoiMaali(PhysicsObject pelaaja)
271    {
272        AddCollisionHandler(maali, pelaaja.Tag, PeliLoppuu);
273        maali.Color = Color.Turquoise;
274    }
275
276    private void PeliLoppuu(PhysicsObject maali, PhysicsObject voittaja)
277    {
278        IsPaused = true;
279        Label voittoTeksti = new Label(voittaja.Tag + " voitti pelin.");
280        voittoTeksti.Color = Color.White;
281        voittoTeksti.Position = new Vector(0.0, 0.0);
282       
283        Add(voittoTeksti);
284    }
285    private void AloitaPeli()
286    {
287
288    }
289
290    void LuoPistetynnyri(Vector paikka, double leveys, double korkeus)
291    {
292        PhysicsObject tynnyri = new PhysicsObject(leveys, korkeus);
293        tynnyri.Position = paikka;
294        tynnyri.Image = tynnyriKuva;
295        tynnyri.Tag = "piste";
296        Add(tynnyri);
297
298       
299    }
300
301    void PelaajaOsuuPisteeseen(PhysicsObject pelaaja, PhysicsObject kohde)
302    {
303        kohde.Destroy();
304        if (pelaaja.Tag.Equals("eka"))
305        {
306            pisteLaskuri1.Value += 1; 
307        }
308        else if (pelaaja.Tag.Equals("toka"))
309        {
310            pisteLaskuri2.Value += 1;
311        }
312    }
313
314    void PelaajaOsuu(PhysicsObject pelaaja, PhysicsObject kohde)
315    {
316        if (pelaaja.Tag.Equals("eka"))
317        {
318            if (elamaLaskuri != null)
319            {
320                elamaLaskuri.Value -= 1;
321            }
322        }
323
324        if (pelaaja.Tag.Equals("toka"))
325        {
326            if (elamaLaskuri2 != null)
327            {
328                elamaLaskuri2.Value -= 1;
329            }
330        }
331
332
333
334        kohde.Destroy();
335        Explosion rajahdys = new Explosion(50);
336        rajahdys.Position = kohde.Position;
337        rajahdys.Speed = 500.0;
338        rajahdys.Force = 10;
339        //rajahdys.Image = rajahdysKuva;
340        //rajahdys.Sound = rajahdysAani;
341        //rajahdys.ShockwaveColor = Color.Yellow;
342        //rajahdys.ShockwaveColor = new Color(255, 0, 150, 90);
343        Add(rajahdys);
344    }
345
346
347}
Note: See TracBrowser for help on using the repository browser.