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

Revision 5867, 7.3 KB checked in by jotapoti, 5 years ago (diff)

pelinosia

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 rajahdysKuva = LoadImage("");
12    SoundEffect rajahdysAani = LoadSoundEffect("");
13    PhysicsObject pelaaja1, pelaaja2;
14    DoubleMeter elamaLaskuri;
15    DoubleMeter elamaLaskuri2;
16    public override void Begin()
17    {
18
19        LuoKentta();
20        LuoOhjaimet();
21        //Camera.Position = pelaaja1.Position + new Vector(720, 0);
22        Camera.Follow(pelaaja1, pelaaja2);
23        Camera.FollowXMargin = 1000;
24        Camera.FollowYMargin = 100;
25        //Camera.StayInLevel = true;
26        elamaLaskuri = LuoElamaLaskuri(Screen.Left + 150, Screen.Top - 20);
27        elamaLaskuri2 = LuoElamaLaskuri(Screen.Left + 150, Screen.Top - 100);
28
29
30        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
31    }
32    private void LuoKentta()
33    {
34        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("SPACERACE");
35
36        ruudut.SetTileMethod(Color.Cyan, LuoPelaaja1);
37        ruudut.SetTileMethod(Color.Gold, LuoPelaaja2);
38        ruudut.SetTileMethod(Color.Black, LuoAsteroidi);
39        ruudut.SetTileMethod(Color.Red, LuoReuna);
40        Level.Background.CreateStars();
41
42
43        ruudut.Execute(20, 20);
44
45        //GameObject tausta = new GameObject(LoadImage("Earth"));
46
47        //Add(tausta, -3);
48        //Image taustakuva = LoadImage("space");
49        //GameObject taustaPilvet = new GameObject(Screen.Width * 1.5, Screen.Height * 1.5 );
50        //taustaPilvet.Image = taustakuva;
51        //Add(taustaPilvet, -3);
52        //Layers[-3].RelativeTransition = new Vector(0.5, 0.5);
53
54
55
56        //Level.Background.Scale = 2.0;
57        //Level.Size = Level.Size * 2;
58        //Level.Background.
59    }
60
61    DoubleMeter LuoElamaLaskuri(Double x, Double y)
62    {
63        DoubleMeter elamaLaskuri = new DoubleMeter(10);
64        elamaLaskuri.MaxValue = 10;
65        elamaLaskuri.LowerLimit += ElamaLoppui;
66
67        ProgressBar elamaPalkki = new ProgressBar(150, 20);
68        elamaPalkki.X = x;
69        elamaPalkki.Y = y;
70        elamaPalkki.BindTo(elamaLaskuri);
71        elamaPalkki.Color = Color.Transparent;
72        elamaPalkki.BarColor = Color.Red;
73        elamaPalkki.BorderColor = Color.Black;
74        Add(elamaPalkki);
75        return elamaLaskuri;
76
77    }
78
79    void ElamaLoppui()
80    {
81        MessageDisplay.Add("Hävisit, paremmin ensikerralla");
82        pelaaja1.Destroy();
83        Keyboard.Disable(Key.Up);
84        Keyboard.Disable(Key.Right);
85        Keyboard.Disable(Key.Left);
86        Keyboard.Disable(Key.Down);
87    }
88    private void LuoOhjaimet()
89    {
90        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, "Liikutetaan pelaajaa", 1, 1);
91        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, "käännä oikealle", 1, 2);
92        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, "käännä vasemmalle", 1, 3);
93        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, "jarru taaksepäin", 1, 4);
94
95        Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, "Liikutetaan pelaajaa", 2, 1);
96        Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa, "käännä oikealle", 2, 2);
97        Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, "käännä vasemmalle", 2, 3);
98        Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa, "jarru taaksepäin", 2, 4);
99    }
100    private void LiikutaPelaajaa(int pelaajaNro, int liikkeenTyyppi)
101    {
102        switch (pelaajaNro)
103        {
104            case 1:
105                switch (liikkeenTyyppi)
106                {
107                    case 1:
108                        pelaaja1.Push(Vector.FromLengthAndAngle(250.0, pelaaja1.Angle));//kaasu eteen                       
109                        break;
110                    case 2:
111                        pelaaja1.Angle += Angle.FromDegrees(-1.5);//oikealle=myötäpäivään
112                        break;
113                    case 3:
114                        pelaaja1.Angle += Angle.FromDegrees(1.5);//vasemmalle=vastapäivään
115                        break;
116                    case 4:
117                        pelaaja1.Push(-Vector.FromLengthAndAngle(250.0, pelaaja1.Angle));
118                        break;
119                }
120
121                break;
122            case 2:
123                switch (liikkeenTyyppi)
124                {
125                    case 1:
126                        pelaaja2.Push(Vector.FromLengthAndAngle(250.0, pelaaja2.Angle));//kaasu eteen                       
127                        break;
128                    case 2:
129                        pelaaja2.Angle += Angle.FromDegrees(-2.0);//oikealle=myötäpäivään
130                        break;
131                    case 3:
132                        pelaaja2.Angle += Angle.FromDegrees(2.0);//vasemmalle=vastapäivään
133                        break;
134                    case 4:
135                        pelaaja2.Push(-Vector.FromLengthAndAngle(250.0, pelaaja2.Angle));
136                        break;
137                }
138                break;
139        }
140    }
141
142    private void LuoAsteroidi(Vector paikka, double leveys, double korkeus)
143    {
144        PhysicsObject asteroidi = new PhysicsObject(LoadImage("ASTEROIDI"));
145        asteroidi.Position = paikka;
146        asteroidi.Tag = "ASTEROIDI";
147        Add(asteroidi);
148    }
149    private void LuoPelaaja1(Vector paikka, double leveys, double korkeus)
150    {
151        pelaaja1 = new PhysicsObject(LoadImage("alus"));
152        pelaaja1.Position = paikka;
153        pelaaja1.Tag = "eka";
154        pelaaja1.AngularDamping = 0.9;
155        Add(pelaaja1);
156        pelaaja1.LinearDamping = 0.98;
157        AddCollisionHandler(pelaaja1, "ASTEROIDI", PelaajaOsuu);
158    }
159    private void LuoPelaaja2(Vector paikka, double leveys, double korkeus)
160    {
161        pelaaja2 = new PhysicsObject(LoadImage("alus"));
162        pelaaja2.Position = paikka;
163        pelaaja2.Tag = "toka";
164        pelaaja2.AngularDamping = 0.9;
165        Add(pelaaja2);
166        pelaaja2.LinearDamping = 0.98;
167        AddCollisionHandler(pelaaja2, "ASTEROIDI", PelaajaOsuu);
168    }
169    private void LuoReuna(Vector paikka, double leveys, double korkeus)
170    {
171        PhysicsObject reuna = PhysicsObject.CreateStaticObject(20, 20);
172        reuna.Position = paikka;
173        Add(reuna);
174        reuna.Color = Color.Transparent;
175    }
176    private void AloitaPeli()
177    {
178
179    }
180
181    void PelaajaOsuu(PhysicsObject pelaaja, PhysicsObject kohde)
182    {
183        if (pelaaja.Tag.Equals("eka"))
184        {
185            if (elamaLaskuri != null)
186            {
187                elamaLaskuri.Value -= 1;
188            }
189        }
190
191        if (pelaaja.Tag.Equals("toka"))
192        {
193            if (elamaLaskuri2 != null)
194            {
195                elamaLaskuri2.Value -= 1;
196            }
197        }
198
199
200
201        kohde.Destroy();
202        Explosion rajahdys = new Explosion(50);
203        rajahdys.Position = kohde.Position;
204        rajahdys.Speed = 500.0;
205        rajahdys.Force = 100;
206        //rajahdys.Image = rajahdysKuva;
207        //rajahdys.Sound = rajahdysAani;
208        //rajahdys.ShockwaveColor = Color.Yellow;
209        //rajahdys.ShockwaveColor = new Color(255, 0, 150, 90);
210        Add(rajahdys);
211    }
212
213
214}
Note: See TracBrowser for help on using the repository browser.