source: 2015/30/OonaH/Aurinkomyrsky/Aurinkomyrsky/Aurinkomyrsky/Aurinkomyrsky.cs @ 6936

Revision 6936, 9.1 KB checked in by oomahutt, 5 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 Aurinkomyrsky : PhysicsGame
10{
11    const int RUUDUN_KOKO = 20;
12
13    PlatformCharacter pelaaja1;
14    IntMeter pisteLaskuri;
15
16    Image pelaajanKuva = LoadImage("alus4");
17    Image tahtiKuva = LoadImage("tahti");
18    //Image avaruus = LoadImage("avaruus");
19    Image aukkoKuva = LoadImage("aukko2");
20    Image laatikko = LoadImage("laatikko3");
21    Image myrskynKuva = LoadImage("myrsky2");
22    Image planeettaKuva = LoadImage("Codis");
23    Image lipunKuva = LoadImage("lippu");
24
25    Image Mercury = LoadImage("mercury");
26    Image Venus = LoadImage("venus");
27    Image Earth = LoadImage("earth");
28    Image Mars = LoadImage("mars");
29    Image Jupiter = LoadImage("jupiter");
30    Image Saturn = LoadImage("saturn");
31    Image Uranus = LoadImage("uranus");
32    Image Neptune = LoadImage("neptune");
33
34    Vector nopeusYlos = new Vector(0, 200);
35    Vector nopeusVasen = new Vector(-200, 0);
36    Vector nopeusOikea = new Vector(200, 0);
37    Vector nopeusAlas = new Vector(0,-200);
38
39    SoundEffect maaliAani = LoadSoundEffect("maali");
40    List<Label> valikonKohdat;
41    Font Fontti = LoadFont("fontti1");
42    int kenttanumero = 1;
43
44    //EasyHighScore topLista = new EasyHighScore();
45
46    public override void Begin()
47    {
48        //TODO Useampien kenttien hallitseminen
49        Valikko();
50    }
51
52    void SeuraavaKentta()
53    {
54        ClearAll();
55
56        if (kenttanumero == 1) LuoKentta("kentta1");
57        else if (kenttanumero == 2) LuoKentta("kentta2");
58        else if (kenttanumero > 2) Valikko();
59    }
60
61    void TeePlaneetta(double x, double y, Image kuva, double halkaisija)
62    {
63        PhysicsObject planeetta = PhysicsObject.CreateStaticObject(halkaisija, halkaisija);
64        planeetta.Image = kuva;
65        planeetta.X = x;
66        planeetta.Y = y;
67        Add(planeetta);
68    }
69
70    void Valikko()
71    {
72        ClearAll();
73        PlaneettojenLuominen();
74
75        Mouse.IsCursorVisible = true;
76        Color vari = Color.White;
77
78        valikonKohdat = new List<Label>();
79
80        Label kohta1 = new Label("Aloita uusi peli");
81        kohta1.Position = new Vector(0, 60);
82        kohta1.TextColor = vari;
83        kohta1.Font = Fontti;
84        valikonKohdat.Add(kohta1);
85
86        Label kohta2 = new Label("Parhaat pisteet");
87        kohta2.Position = new Vector(0, 0);
88        kohta2.TextColor = vari;
89        kohta2.Font = Fontti;
90        valikonKohdat.Add(kohta2);
91
92        Label kohta3 = new Label("Lopeta peli");
93        kohta3.Position = new Vector(0, -60);
94        kohta3.TextColor = vari;
95        kohta3.Font = Fontti;
96        valikonKohdat.Add(kohta3);
97
98        foreach (Label valikonKohta in valikonKohdat)
99        {
100            Add(valikonKohta);
101        }
102
103        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, Aloita, null);
104        //Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, ParhaatPisteet, null);
105        Mouse.ListenOn(kohta3, MouseButton.Left, ButtonState.Pressed, Exit, null);
106
107        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
108    }
109
110    void ValikossaLiikkuminen(AnalogState hiiri)
111    {
112        foreach (Label kohta in valikonKohdat)
113        {
114            if (Mouse.IsCursorOn(kohta))
115            {
116                kohta.TextColor = Color.Wheat;
117            }
118            else
119            {
120                kohta.TextColor = Color.White;
121            }
122         }
123    }
124
125    void PlaneettojenLuominen()
126    {
127        Level.Background.CreateStars();
128
129        TeePlaneetta(0, 400, Mercury, 50);
130        TeePlaneetta(300, 300, Venus, 70);
131        TeePlaneetta(400, 50, Earth, 100);
132        TeePlaneetta(350, -200, Mars, 100);
133        TeePlaneetta(0, -350, Jupiter, 200);
134        TeePlaneetta(-350, -200, Saturn, 170);
135        TeePlaneetta(-370, 50, Uranus, 120);
136        TeePlaneetta(-250, 300, Neptune, 120);
137    }
138
139    void Aloita()
140    {
141        ClearAll();
142        SeuraavaKentta();
143        LuoLaskuri();
144        LisaaNappaimet();
145
146
147        Camera.Follow(pelaaja1);
148        Camera.ZoomFactor = 1.2;
149        Camera.StayInLevel = true;
150    }
151
152    void LuoKentta(string kenttaTiedosto)
153    {
154        TileMap kentta = TileMap.FromLevelAsset("kentta2");
155        kentta.SetTileMethod('#', LisaaTaso);
156        kentta.SetTileMethod('*', LisaaTahti);
157        kentta.SetTileMethod('A', LisaaPelaaja);
158        kentta.SetTileMethod('a', LisaaAukko);
159        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
160
161        Level.CreateBorders();
162        Level.Background.CreateStars();
163        //Level.Background.Image = avaruus;
164        //Level.Background.FitToLevel();
165        Level.Background.TextureWrapSize = new Vector(3, 1);
166
167        PhysicsObject aurinko = PhysicsObject.CreateStaticObject(50,500);
168        aurinko.Image = myrskynKuva;
169        aurinko.X = Level.Left;
170        aurinko.Velocity = new Vector(40, 0);
171        aurinko.Tag = "aurinko";
172        Add(aurinko);
173
174        PhysicsObject planeetta = PhysicsObject.CreateStaticObject(100, 500);
175        planeetta.Image = planeettaKuva;
176        planeetta.X = Level.Right;
177        planeetta.Tag = "planeetta";
178        Add(planeetta);
179
180        PhysicsObject lippu = PhysicsObject.CreateStaticObject(50, 30);
181        lippu.Image = lipunKuva;
182        lippu.Tag = "lippu";
183        lippu.X = Level.Right - 75;
184        Add(lippu);
185
186        Timer kameraAjastin = new Timer();
187        kameraAjastin.Interval = 0.025;
188        kameraAjastin.Timeout += KameranSiirto;
189        kameraAjastin.Start();
190    }
191
192    void KameranSiirto()
193    {
194        Camera.StopFollowing();
195        Camera.X += 1;
196    }
197
198
199    void LisaaTaso(Vector paikka, double leveys, double korkeus)
200    {
201        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
202        taso.Position = paikka;
203        taso.Image = laatikko;
204        Add(taso);
205    }
206
207    void LisaaTahti(Vector paikka, double leveys, double korkeus)
208    {
209        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
210        tahti.IgnoresCollisionResponse = true;
211        tahti.Position = paikka;
212        tahti.Image = tahtiKuva;
213        tahti.Tag = "tahti";
214        Add(tahti);
215    }
216
217    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
218    {
219        pelaaja1 = new PlatformCharacter(leveys -3, korkeus -1);
220        pelaaja1.Position = paikka;
221        pelaaja1.Image = pelaajanKuva;
222        //pelaaja1.CollisionIgnoreGroup = 1;
223        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
224        AddCollisionHandler(pelaaja1, "aukko", TormaaMustaanAukkoon);
225        AddCollisionHandler(pelaaja1, "aurinko", TormaaAurinkoon);
226        Add(pelaaja1);
227    }
228
229    void TormaaMustaanAukkoon(PhysicsObject hahmo, PhysicsObject aukko)
230    {
231        Explosion rajahdys = new Explosion(3000);
232        rajahdys.Position = pelaaja1.Position;
233        rajahdys.Image = aukkoKuva;
234        Add(rajahdys);
235        pelaaja1.Destroy();
236        ClearAll();
237        Begin();
238    }
239
240    void TormaaAurinkoon(PhysicsObject hahmo, PhysicsObject aukko)
241    {
242        Explosion rajahdys = new Explosion(3000);
243        rajahdys.Position = pelaaja1.Position;
244        Add(rajahdys);
245        pelaaja1.Destroy();
246        //ClearAll();
247        Begin();
248    }
249
250    void LisaaAukko(Vector paikka, double leveys, double korkeus)
251    {
252        PhysicsObject aukko = PhysicsObject.CreateStaticObject(leveys, korkeus);
253        aukko.IgnoresCollisionResponse = true;
254        aukko.Position = paikka;
255        aukko.Image = aukkoKuva;
256        aukko.Tag = "aukko";
257        Add(aukko);
258    }
259
260    void LisaaNappaimet()
261    {
262        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
263        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Begin, "Lopeta peli");
264
265        Keyboard.Listen(Key.Left, ButtonState.Down, AsetaNopeus, "Liikkuu vasemmalle", pelaaja1, nopeusVasen);
266        Keyboard.Listen(Key.Right, ButtonState.Down, AsetaNopeus, "Liikkuu vasemmalle", pelaaja1, nopeusOikea);
267        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Liikkuu ylös", pelaaja1, nopeusYlos);
268        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Liikkuu alas", pelaaja1, nopeusAlas);
269    }
270
271    void AsetaNopeus(PhysicsObject alus, Vector nopeus)
272    {
273        alus.Velocity = nopeus;
274        alus.Angle = nopeus.Angle;
275    }
276
277    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
278    {
279        maaliAani.Play();
280        tahti.Destroy();
281        pisteLaskuri.Value += 100;
282    }
283
284    void LuoLaskuri()
285    {
286        pisteLaskuri = new IntMeter(0);
287
288        Label pisteNaytto = new Label();
289        pisteNaytto.X -= (Window.Width/2-200);
290        pisteNaytto.Y += (Window.Height/2-50);
291       
292        pisteNaytto.TextColor = Color.White;
293        pisteNaytto.Color = Color.Transparent;
294        pisteNaytto.BindTo(pisteLaskuri);
295        pisteNaytto.IntFormatString = "Pisteitä: {0:D1}";
296
297        Add(pisteNaytto);
298    }
299}
Note: See TracBrowser for help on using the repository browser.