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

Revision 6961, 7.8 KB checked in by elhytone, 4 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 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("cloud");
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 = 300;
27    double kaantyminen = 800;
28
29    public override void Begin()
30
31    {
32        Valikko();
33       
34    }
35
36    void Valikko()
37    {
38        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
39        "Aloita peli", "Parhaat pisteet", "Lopeta");
40        Add(alkuValikko);
41        alkuValikko.AddItemHandler(0, AloitaPeli);
42        //alkuValikko.AddItemHandler(1, ParhaatPisteet);
43        alkuValikko.AddItemHandler(2, Exit);
44        Level.Background.CreateStars();
45    }
46
47    void AloitaPeli()
48
49    {
50        ClearAll();
51        LuoKentta();
52
53        Camera.Zoom(2.5);
54        Camera.FollowedObject = pelaaja;
55        Level.Background.CreateStars();
56        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, null, eteenpain, 1);
57        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, null, kaantyminen, 2);
58        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, null, kaantyminen, 3);
59
60        Keyboard.Listen(Key.P, ButtonState.Pressed, Pause, "Pysäyttää pelin");
61        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja);
62        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
63        Keyboard.Listen(Key.R, ButtonState.Pressed, AloitaPeli, "Aloita peli alusta");
64        LuoPistelaskuri();
65    }
66
67
68    void LiikutaPelaajaa(double voima, int miten)
69    {
70        switch (miten)
71        {
72            case 1:
73                pelaaja.Push(Vector.FromLengthAndAngle(voima, pelaaja.Angle));
74                break;
75            case 2:
76                pelaaja.ApplyTorque(voima);
77                break;
78            case 3:
79                pelaaja.ApplyTorque(-voima);
80                break;
81            case 4:
82                break;
83            default:
84                break;
85        }
86
87    }
88
89    void LuoKentta()
90    {
91        //1. Luetaan kuva uuteen ColorTileMappiin, kuvan nimen perässä ei .png-päätettä.
92        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("cool tausta");
93
94        //2. Kerrotaan mitä aliohjelmaa kutsutaan, kun tietyn värinen pikseli tulee vastaan kuvatiedostossa.
95        ruudut.SetTileMethod(Color.FromHexCode("00FFFF"), LuoPelaaja);
96        ruudut.SetTileMethod(Color.Black, LuoVihollinen);
97        ruudut.SetTileMethod(Color.Gold, LuoAsteroidi);
98        ruudut.SetTileMethod(Color.FromHexCode("FF0000"), LuoVihollinen2);
99       // ruudut.SetTileMethod(Color.FromHexCode("B200FF"), LuoReuna);
100
101        Level.CreateBorders(false);
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        elamaLaskuri = new DoubleMeter(10);
144        elamaLaskuri.MaxValue = 10;
145        elamaLaskuri.LowerLimit += ElamaLoppui;
146
147        ProgressBar elamaPalkki = new ProgressBar(150, 20);
148        elamaPalkki.X = Screen.Left + 150;
149        elamaPalkki.Y = Screen.Top - 20;
150        elamaPalkki.BindTo(elamaLaskuri);
151        Add(elamaPalkki);
152
153        ase = new AssaultRifle(1, 1);
154
155
156        Add(pelaaja);
157        pelaaja.Add(ase);
158    }
159    void LuoVihollinen(Vector paikka, double leveys, double korkeus)
160    {
161        PhysicsObject Vihollinen = new PhysicsObject(CoolAlusKuva);
162        Vihollinen.Position = paikka;
163        Add(Vihollinen);
164        Vihollinen.Tag = "pahis";
165
166        //AddCollisionHandler(Laser, CollisionHandler.ExplodeTarget(150, false));
167        FollowerBrain seuraajanAivot = new FollowerBrain("pelaaja");
168        seuraajanAivot.Speed = 70;
169        Vihollinen.Brain = seuraajanAivot;
170
171
172    }
173    void LuoAsteroidi(Vector paikka, double leveys, double korkeus)
174    {
175        //PhysicsObject Asteroidi = new PhysicsObject(10, 10);
176        PhysicsObject Asteroidi = new PhysicsObject(CoolAsteroidi);
177        Asteroidi.Color = Color.Red;
178        Asteroidi.Position = paikka;
179        Add(Asteroidi);
180        Asteroidi.Mass = 100;
181        Asteroidi.Tag = "Asteroidi";
182
183
184    }
185    void LuoVihollinen2(Vector paikka, double leveys, double korkeus)
186    {
187        //PhysicsObject Vihollinen2 = new PhysicsObject(10, 10);
188        PhysicsObject Vihollinen2 = new PhysicsObject(Vihollinenalus);
189        Vihollinen2.Color = Color.Gold;
190        Vihollinen2.Size = new Vector(50, 50);
191        Vihollinen2.Position = paikka;
192        Add(Vihollinen2);
193        Vihollinen2.Tag = "pahis2";
194
195        //Tehdään uudet satunnaisaivot, jotka liikkuvat nopeudella 200
196        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(150);
197
198        //Ominaisuuksien muokkaaminen
199        satunnaisAivot.ChangeMovementSeconds = 3;
200        Vihollinen2.Brain = satunnaisAivot;
201
202    }
203
204    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
205    {
206        if (kohde.Tag.ToString() != "reuna")
207        {
208            kohde.Destroy();
209            pistelaskuri.Value += 100;
210        }
211        ammus.Destroy();
212
213    }
214
215    void LuoPistelaskuri()
216    {
217
218
219        pistelaskuri = new IntMeter(0);
220
221        Label pisteNaytto = new Label();
222        pisteNaytto.X = Screen.Left + 100;
223        pisteNaytto.Y = Screen.Top - 100;
224        pisteNaytto.TextColor = Color.Black;
225        pisteNaytto.Color = Color.White;
226        pisteNaytto.Title = "Pisteet";
227        pisteNaytto.BindTo(pistelaskuri);
228        Add(pisteNaytto);
229    }
230
231    void AmmuAseella(PhysicsObject pelaaja)
232    {
233        PhysicsObject ammus = ase.Shoot();
234
235        if (ammus != null)
236        {
237            ammus.Tag = "ammus";
238            ammus.Size *= 0.5;
239            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
240
241            ammus.Image = Laser;
242            ase.FireRate = 3.0;
243
244            AddCollisionHandler(ammus, AmmusOsui);
245        }
246    }
247    void ElamaLoppui()
248    {
249        MessageDisplay.Add("Pelaaja tuhoutui");
250        pelaaja.Destroy();
251        Timer.SingleShot(1, Valikko);
252       
253
254
255    }
256    void PelaajaVahingoittuu(PhysicsObject Pelaaja,PhysicsObject Pahis, int Vahinko)
257    {
258        elamaLaskuri.Value -= Vahinko;
259
260    }
261
262}
Note: See TracBrowser for help on using the repository browser.