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

Revision 6905, 6.4 KB checked in by oomahutt, 6 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    Vector nopeusYlos = new Vector(0, 200);
26    Vector nopeusVasen = new Vector(-200, 0);
27    Vector nopeusOikea = new Vector(200, 0);
28    Vector nopeusAlas = new Vector(0,-200);
29
30    SoundEffect maaliAani = LoadSoundEffect("maali");
31
32    EasyHighScore topLista = new EasyHighScore();
33
34    public override void Begin()
35    {
36        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin Alkuvalikko", "Aloita Peli", "Parhaat Pisteet", "Lopeta");
37        Add(alkuValikko);
38
39        alkuValikko.AddItemHandler(0, Aloita);
40        //alkuValikko.AddItemHandler(1, ParhaatPisteet);
41        //alkuValikko.AddItemHandler(2, Exit);
42
43    }
44
45    void Aloita()
46    {
47        LuoKentta();
48        LuoLaskuri();
49        LisaaNappaimet();
50
51
52        Camera.Follow(pelaaja1);
53        Camera.ZoomFactor = 1.2;
54        Camera.StayInLevel = true;
55    }
56
57    void AloitaPeli(Window sender)
58    {
59        Aloita();
60    }
61   
62    void LuoKentta()
63    {
64        TileMap kentta = TileMap.FromLevelAsset("kentta1");
65        kentta.SetTileMethod('#', LisaaTaso);
66        kentta.SetTileMethod('*', LisaaTahti);
67        kentta.SetTileMethod('A', LisaaPelaaja);
68        kentta.SetTileMethod('a', LisaaAukko);
69        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
70
71        Level.CreateBorders();
72        Level.Background.Image = avaruus;
73        Level.Background.FitToLevel();
74        Level.Background.TextureWrapSize = new Vector(3, 1);
75
76        PhysicsObject aurinko = PhysicsObject.CreateStaticObject(50,500);
77        aurinko.Image = myrskynKuva;
78        aurinko.X = Level.Left;
79        aurinko.Velocity = new Vector(10, 0);
80        aurinko.Tag = "aurinko";
81        Add(aurinko);
82
83        PhysicsObject planeetta = PhysicsObject.CreateStaticObject(100, 500);
84        planeetta.Image = planeettaKuva;
85        planeetta.X = Level.Right;
86        planeetta.Tag = "planeetta";
87        Add(planeetta);
88
89        PhysicsObject lippu = PhysicsObject.CreateStaticObject(50, 30);
90        lippu.Image = lipunKuva;
91        lippu.Tag = "lippu";
92        lippu.X = Level.Right - 75;
93        Add(lippu);
94
95        Timer kameraAjastin = new Timer();
96        kameraAjastin.Interval = 0.1;
97        kameraAjastin.Timeout += KameranSiirto;
98        kameraAjastin.Start();
99    }
100
101    void KameranSiirto()
102    {
103        Camera.StopFollowing();
104        Camera.X += 1;
105    }
106
107
108    void LisaaTaso(Vector paikka, double leveys, double korkeus)
109    {
110        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
111        taso.Position = paikka;
112        taso.Image = laatikko;
113        Add(taso);
114    }
115
116    void LisaaTahti(Vector paikka, double leveys, double korkeus)
117    {
118        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
119        tahti.IgnoresCollisionResponse = true;
120        tahti.Position = paikka;
121        tahti.Image = tahtiKuva;
122        tahti.Tag = "tahti";
123        Add(tahti);
124    }
125
126    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
127    {
128        pelaaja1 = new PlatformCharacter(leveys -3, korkeus -1);
129        pelaaja1.Position = paikka;
130        pelaaja1.Image = pelaajanKuva;
131        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
132        AddCollisionHandler(pelaaja1, "aukko", TormaaMustaanAukkoon);
133        AddCollisionHandler(pelaaja1, "aurinko", TormaaAurinkoon);
134        Add(pelaaja1);
135    }
136
137    void TormaaMustaanAukkoon(PhysicsObject hahmo, PhysicsObject aukko)
138    {
139        Explosion rajahdys = new Explosion(3000);
140        rajahdys.Position = pelaaja1.Position;
141        rajahdys.Image = aukkoKuva;
142        Add(rajahdys);
143        pelaaja1.Destroy();
144        PelaajaKuoli();
145    }
146
147    void TormaaAurinkoon(PhysicsObject hahmo, PhysicsObject aukko)
148    {
149        Explosion rajahdys = new Explosion(3000);
150        rajahdys.Position = pelaaja1.Position;
151        Add(rajahdys);
152        pelaaja1.Destroy();
153        PelaajaKuoli();
154    }
155
156    void PelaajaKuoli()
157    {
158        topLista.EnterAndShow(pisteLaskuri.Value);
159        topLista.HighScoreWindow.Closed += AloitaPeli;
160    }
161
162    void LisaaAukko(Vector paikka, double leveys, double korkeus)
163    {
164        PhysicsObject aukko = PhysicsObject.CreateStaticObject(leveys, korkeus);
165        aukko.IgnoresCollisionResponse = true;
166        aukko.Position = paikka;
167        aukko.Image = aukkoKuva;
168        aukko.Tag = "aukko";
169        Add(aukko);
170    }
171
172    void LisaaNappaimet()
173    {
174        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
175        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
176
177        Keyboard.Listen(Key.Left, ButtonState.Down, AsetaNopeus, "Liikkuu vasemmalle", pelaaja1, nopeusVasen);
178        Keyboard.Listen(Key.Right, ButtonState.Down, AsetaNopeus, "Liikkuu vasemmalle", pelaaja1, nopeusOikea);
179        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Liikkuu ylös", pelaaja1, nopeusYlos);
180        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Liikkuu alas", pelaaja1, nopeusAlas);
181    }
182
183    void AsetaNopeus(PhysicsObject alus, Vector nopeus)
184    {
185        alus.Velocity = nopeus;
186        alus.Angle = nopeus.Angle;
187    }
188
189    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
190    {
191        maaliAani.Play();
192        tahti.Destroy();
193        pisteLaskuri.Value += 100;
194    }
195
196    void LuoLaskuri()
197    {
198        pisteLaskuri = new IntMeter(0);
199
200        Label pisteNaytto = new Label();
201        pisteNaytto.X -= (Window.Width/2-200);
202        pisteNaytto.Y += (Window.Height/2-50);
203       
204        pisteNaytto.TextColor = Color.White;
205        pisteNaytto.Color = Color.Transparent;
206        pisteNaytto.BindTo(pisteLaskuri);
207        pisteNaytto.IntFormatString = "Pisteitä: {0:D1}";
208
209        Add(pisteNaytto);
210    }
211}
Note: See TracBrowser for help on using the repository browser.