source: 2015/30/EliasHy/SpaceAdventure/SpaceAdventure/SpaceAdventure/SpaceAdventure.cs.r6954 @ 10337

Revision 6976, 7.7 KB checked in by aahalme, 6 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("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 = 500;
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        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
100        //Level.CreateBorders();
101
102        //3. Execute luo kentän
103        //   Parametreina leveys ja korkeus
104        ruudut.Execute(20, 20);
105    }
106
107    void LuoReuna(Vector paikka, double leveys, double korkeus)
108    {
109        //PhysicsObject Asteroidi = new PhysicsObject(10, 10);
110        PhysicsObject Reuna = PhysicsObject.CreateStaticObject(Cloud);
111        Reuna.Position = paikka;
112        Reuna.Tag = "reuna";
113        Add(Reuna);
114
115    }
116
117    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
118    {
119
120        //pelaaja = new PhysicsObject(10, 10);
121        pelaaja = new PhysicsObject(CoolHyvisalus);
122        pelaaja.Restitution = 1.0;
123        pelaaja.Color = Color.Blue;
124        pelaaja.Position = paikka;
125        pelaaja.AngularDamping = 0.9;
126        pelaaja.Tag = "pelaaja";
127        AddCollisionHandler(pelaaja, "Asteroidi",delegate(PhysicsObject A, PhysicsObject B)
128        {
129            PelaajaVahingoittuu(A, B, 3);
130        } );
131
132        AddCollisionHandler(pelaaja, "pahis", delegate(PhysicsObject A, PhysicsObject B)
133        {
134            PelaajaVahingoittuu(A, B, 1);
135        });
136
137        AddCollisionHandler(pelaaja, "pahis2", delegate(PhysicsObject A, PhysicsObject B)
138        {
139            PelaajaVahingoittuu(A, B, 3);
140        });
141       
142        elamaLaskuri = new DoubleMeter(10);
143        elamaLaskuri.MaxValue = 10;
144        elamaLaskuri.LowerLimit += ElamaLoppui;
145
146        ProgressBar elamaPalkki = new ProgressBar(150, 20);
147        elamaPalkki.X = Screen.Left + 150;
148        elamaPalkki.Y = Screen.Top - 20;
149        elamaPalkki.BindTo(elamaLaskuri);
150        Add(elamaPalkki);
151
152        ase = new AssaultRifle(1, 1);
153
154
155        Add(pelaaja);
156        pelaaja.Add(ase);
157    }
158    void LuoVihollinen(Vector paikka, double leveys, double korkeus)
159    {
160        PhysicsObject Vihollinen = new PhysicsObject(CoolAlusKuva);
161        Vihollinen.Position = paikka;
162        Add(Vihollinen);
163        Vihollinen.Tag = "pahis";
164
165        //AddCollisionHandler(Laser, CollisionHandler.ExplodeTarget(150, false));
166        FollowerBrain seuraajanAivot = new FollowerBrain("pelaaja");
167        seuraajanAivot.Speed = 70;
168        Vihollinen.Brain = seuraajanAivot;
169
170
171    }
172    void LuoAsteroidi(Vector paikka, double leveys, double korkeus)
173    {
174        //PhysicsObject Asteroidi = new PhysicsObject(10, 10);
175        PhysicsObject Asteroidi = new PhysicsObject(CoolAsteroidi);
176        Asteroidi.Color = Color.Red;
177        Asteroidi.Position = paikka;
178        Add(Asteroidi);
179        Asteroidi.Mass = 100;
180        Asteroidi.Tag = "Asteroidi";
181
182
183    }
184    void LuoVihollinen2(Vector paikka, double leveys, double korkeus)
185    {
186        //PhysicsObject Vihollinen2 = new PhysicsObject(10, 10);
187        PhysicsObject Vihollinen2 = new PhysicsObject(Vihollinenalus);
188        Vihollinen2.Color = Color.Gold;
189        Vihollinen2.Size = new Vector(50, 50);
190        Vihollinen2.Position = paikka;
191        Add(Vihollinen2);
192        Vihollinen2.Tag = "pahis2";
193
194        //Tehdään uudet satunnaisaivot, jotka liikkuvat nopeudella 200
195        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(150);
196
197        //Ominaisuuksien muokkaaminen
198        satunnaisAivot.ChangeMovementSeconds = 3;
199        Vihollinen2.Brain = satunnaisAivot;
200
201    }
202
203    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
204    {
205        if (kohde.Tag.ToString() != "reuna")
206        {
207            kohde.Destroy();
208            pistelaskuri.Value += 1;
209        }
210        ammus.Destroy();
211
212    }
213
214    void LuoPistelaskuri()
215    {
216
217
218        pistelaskuri = new IntMeter(0);
219
220        Label pisteNaytto = new Label();
221        pisteNaytto.X = Screen.Left + 100;
222        pisteNaytto.Y = Screen.Top - 100;
223        pisteNaytto.TextColor = Color.Black;
224        pisteNaytto.Color = Color.White;
225        pisteNaytto.Title = "Pisteet";
226        pisteNaytto.BindTo(pistelaskuri);
227        Add(pisteNaytto);
228    }
229
230    void AmmuAseella(PhysicsObject pelaaja)
231    {
232        PhysicsObject ammus = ase.Shoot();
233
234        if (ammus != null)
235        {
236            ammus.Tag = "ammus";
237            ammus.Size *= 0.5;
238            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
239
240            ammus.Image = Laser;
241            ase.FireRate = 3.0;
242
243            AddCollisionHandler(ammus, AmmusOsui);
244        }
245    }
246    void ElamaLoppui()
247    {
248        MessageDisplay.Add("Pelaaja tuhoutui");
249        pelaaja.Destroy();
250        Timer.SingleShot(1, Valikko);
251       
252
253
254    }
255    void PelaajaVahingoittuu(PhysicsObject Pelaaja,PhysicsObject Pahis, int Vahinko)
256    {
257        elamaLaskuri.Value -= Vahinko;
258
259    }
260
261}
Note: See TracBrowser for help on using the repository browser.