source: 2015/30/EliasHy/SpaceAdventure/SpaceAdventure/SpaceAdventure/SpaceAdventure.cs @ 6976

Revision 6976, 8.9 KB checked in by aahalme, 4 years ago (diff)

coool game mään

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class SpaceAdventure : PhysicsGame
10{   
11    PhysicsObject pelaaja;
12    AssaultRifle ase;
13    Image CoolAlusKuva = LoadImage("cool alus");
14    Image CoolHyvisalus = LoadImage("coolhyvisalus");
15    Image CoolAsteroidi = LoadImage("cool asteroid bu");
16    Image taustaKuva = LoadImage("cool space");
17    Image Cloud = LoadImage("Stuff");
18    Image Laser = LoadImage("laser");
19    Image Boss = LoadImage("Boss Ship_zpspn6osve5");
20    Image Vihollinenalus = LoadImage("enemy ship 2");
21
22
23    IntMeter pistelaskuri;
24    DoubleMeter elamaLaskuri;
25
26    double eteenpain = 500;
27    double kaantyminen = 800;
28
29    public override void Begin()
30
31    {
32        Valikko();               
33    }
34
35    void Valikko()
36    {
37        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
38        "Aloita peli", "Parhaat pisteet", "Lopeta");
39        Add(alkuValikko);
40        alkuValikko.AddItemHandler(0, AloitaPeli);
41        //alkuValikko.AddItemHandler(1, ParhaatPisteet);
42        alkuValikko.AddItemHandler(2, Exit);
43        Level.Background.CreateStars();
44    }
45
46    void AloitaPeli()
47
48    {
49        ClearAll();
50        LuoKentta();
51
52        Camera.Zoom(2.5);
53        Camera.FollowedObject = pelaaja;
54        Level.Background.CreateStars();
55        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, null, eteenpain, 1);
56        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, null, kaantyminen, 2);
57        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, null, kaantyminen, 3);
58
59        Keyboard.Listen(Key.P, ButtonState.Pressed, Pause, "Pysäyttää pelin");
60        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja);
61        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
62        Keyboard.Listen(Key.R, ButtonState.Pressed, AloitaPeli, "Aloita peli alusta");
63        LuoPistelaskuri();
64    }
65
66
67    void LiikutaPelaajaa(double voima, int miten)
68    {
69        switch (miten)
70        {
71            case 1:
72                pelaaja.Push(Vector.FromLengthAndAngle(voima, pelaaja.Angle));
73                break;
74            case 2:
75                pelaaja.ApplyTorque(voima);
76                break;
77            case 3:
78                pelaaja.ApplyTorque(-voima);
79                break;
80            case 4:
81                break;
82            default:
83                break;
84        }
85
86    }
87
88    void LuoKentta()
89    {
90        //1. Luetaan kuva uuteen ColorTileMappiin, kuvan nimen perässä ei .png-päätettä.
91        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("cool tausta");
92
93        //2. Kerrotaan mitä aliohjelmaa kutsutaan, kun tietyn värinen pikseli tulee vastaan kuvatiedostossa.
94        ruudut.SetTileMethod(Color.FromHexCode("00FFFF"), LuoPelaaja);
95        ruudut.SetTileMethod(Color.Black, LuoVihollinen);
96        ruudut.SetTileMethod(Color.Gold, LuoAsteroidi);
97        ruudut.SetTileMethod(Color.FromHexCode("FF0000"), LuoVihollinen2);
98        ruudut.SetTileMethod(Color.FromHexCode("B200FF"), LuoReuna);
99        ruudut.SetTileMethod(Color.FromHexCode("1CFF32"), LuoBossi);
100
101        //Level.CreateBorders();
102
103        //3. Execute luo kentän
104        //   Parametreina leveys ja korkeus
105        ruudut.Execute(20, 20);
106    }
107
108    void LuoReuna(Vector paikka, double leveys, double korkeus)
109    {
110        //PhysicsObject Asteroidi = new PhysicsObject(10, 10);
111        PhysicsObject Reuna = PhysicsObject.CreateStaticObject(Cloud);
112        Reuna.Position = paikka;
113        Reuna.Tag = "reuna";
114        Add(Reuna);
115
116    }
117
118    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
119    {
120
121        //pelaaja = new PhysicsObject(10, 10);
122        pelaaja = new PhysicsObject(CoolHyvisalus);
123        pelaaja.Restitution = 1.0;
124        pelaaja.Color = Color.Blue;
125        pelaaja.Position = paikka;
126        pelaaja.AngularDamping = 0.9;
127        pelaaja.Tag = "pelaaja";
128        AddCollisionHandler(pelaaja, "Asteroidi",delegate(PhysicsObject A, PhysicsObject B) 
129        {
130            PelaajaVahingoittuu(A, B, 3);
131        } );
132
133        AddCollisionHandler(pelaaja, "pahis", delegate(PhysicsObject A, PhysicsObject B)
134        {
135            PelaajaVahingoittuu(A, B, 1);
136        });
137
138        AddCollisionHandler(pelaaja, "pahis2", delegate(PhysicsObject A, PhysicsObject B)
139        {
140            PelaajaVahingoittuu(A, B, 3);
141        });
142
143        AddCollisionHandler(pelaaja, "bossi", delegate(PhysicsObject A, PhysicsObject B)
144        {
145            PelaajaVahingoittuu(A, B, 4);
146        });
147       
148        elamaLaskuri = new DoubleMeter(10);
149        elamaLaskuri.MaxValue = 10;
150        elamaLaskuri.LowerLimit += ElamaLoppui;
151
152        ProgressBar elamaPalkki = new ProgressBar(150, 20);
153        elamaPalkki.X = Screen.Left + 150;
154        elamaPalkki.Y = Screen.Top - 20;
155        elamaPalkki.BindTo(elamaLaskuri);
156        Add(elamaPalkki);
157
158        ase = new AssaultRifle(1, 1);
159
160
161        Add(pelaaja);
162        pelaaja.Add(ase);
163    }
164    void LuoVihollinen(Vector paikka, double leveys, double korkeus)
165    {
166        PhysicsObject Vihollinen = new PhysicsObject(CoolAlusKuva);
167        Vihollinen.Position = paikka;
168        Add(Vihollinen);
169        Vihollinen.Tag = "pahis";
170
171        //AddCollisionHandler(Laser, CollisionHandler.ExplodeTarget(150, false));
172        FollowerBrain seuraajanAivot = new FollowerBrain("pelaaja");
173        seuraajanAivot.Speed = 70;
174        Vihollinen.Brain = seuraajanAivot;
175
176
177
178    }
179
180    void LuoBossi(Vector paikka, double leveys, double korkeus)
181    {
182        //PhysicsObject Vihollinen2 = new PhysicsObject(10, 10);
183        PhysicsObject Bossi = new PhysicsObject(Boss);
184        Bossi.Size = new Vector(100, 100);
185        Add(Bossi);
186
187        Bossi.Tag = "bossi";
188        Bossi.Mass = 200;
189
190        FollowerBrain seuraajanAivot = new FollowerBrain("pelaaja");
191        seuraajanAivot.Speed = 200;
192        Bossi.Brain = seuraajanAivot;
193
194    }
195
196
197
198    void LuoAsteroidi(Vector paikka, double leveys, double korkeus)
199    {
200        //PhysicsObject Asteroidi = new PhysicsObject(10, 10);
201        PhysicsObject Asteroidi = new PhysicsObject(CoolAsteroidi);
202        Asteroidi.Color = Color.Red;
203        Asteroidi.Position = paikka;
204        Add(Asteroidi);
205        Asteroidi.Mass = 70;
206
207        Asteroidi.Mass = 100;
208        Asteroidi.Tag = "Asteroidi";
209
210
211
212    }
213    void LuoVihollinen2(Vector paikka, double leveys, double korkeus)
214    {
215        //PhysicsObject Vihollinen2 = new PhysicsObject(10, 10);
216        PhysicsObject Vihollinen2 = new PhysicsObject(Vihollinenalus);
217        Vihollinen2.Color = Color.Gold;
218        Vihollinen2.Size = new Vector(50, 50);
219        Vihollinen2.Position = paikka;
220        Add(Vihollinen2);
221        Vihollinen2.Tag = "pahis2";
222        Vihollinen2.Mass = 70;
223
224        //Tehdään uudet satunnaisaivot, jotka liikkuvat nopeudella 200
225        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(150);
226
227        //Ominaisuuksien muokkaaminen
228        satunnaisAivot.ChangeMovementSeconds = 3;
229        Vihollinen2.Brain = satunnaisAivot;
230
231    }
232
233    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
234    {
235        if (kohde.Tag.ToString() != "reuna")
236        {
237            kohde.Destroy();
238            pistelaskuri.Value += 100;
239            Explosion rajahdys = new Explosion(27);
240            rajahdys.Position = kohde.Position;
241            Add(rajahdys);
242            //rajahdys.Image = rajahdysKuva;
243            //rajahdys.Sound = rajahdysAani;
244            pelaaja.IgnoresExplosions = true;
245        }
246        ammus.Destroy();
247
248    }
249
250    void LuoPistelaskuri()
251    {
252
253
254        pistelaskuri = new IntMeter(0);
255
256        Label pisteNaytto = new Label();
257        pisteNaytto.X = Screen.Left + 100;
258        pisteNaytto.Y = Screen.Top - 100;
259        pisteNaytto.TextColor = Color.Black;
260        pisteNaytto.Color = Color.White;
261        pisteNaytto.Title = "Pisteet";
262        pisteNaytto.BindTo(pistelaskuri);
263        Add(pisteNaytto);
264    }
265
266    void AmmuAseella(PhysicsObject pelaaja)
267    {
268        PhysicsObject ammus = ase.Shoot();
269
270        if (ammus != null)
271        {
272            ammus.Tag = "ammus";
273            ammus.Size *= 0.5;
274            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
275
276            ammus.Image = Laser;
277            ase.FireRate = 3.0;
278
279            AddCollisionHandler(ammus, AmmusOsui);
280        }
281    }
282    void ElamaLoppui()
283    {
284        MessageDisplay.Add("Pelaaja tuhoutui");
285        pelaaja.Destroy();
286        Timer.SingleShot(1, Valikko);
287       
288
289
290    }
291    void PelaajaVahingoittuu(PhysicsObject Pelaaja,PhysicsObject Pahis, int Vahinko)
292    {
293        elamaLaskuri.Value -= Vahinko;
294
295    }
296
297}
Note: See TracBrowser for help on using the repository browser.