source: 2015/30/JuliaN/Hajottaa/Hajottaa/Hajottaa/Hajottaa.cs @ 7002

Revision 7002, 9.2 KB checked in by jupipana, 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
9/// <summary>
10/// Ophioneus
11/// </summary>
12
13public class Hajottaa : PhysicsGame
14{
15    const double nopeus = 600;
16    const double hyppyNopeus = 850;
17    const int RUUDUN_KOKO = 40;
18
19    Font fontti = LoadFont("SpriteFont1");
20
21    PlatformCharacter pelaaja1;
22    int kenttaNro = 1;
23
24    bool MaaliAktivoitu = false;
25
26    Image piikkiKuva = LoadImage("Piikki");
27    Image hiiruKuva = LoadImage("Hiirus");
28    Image hahmoKuva = LoadImage("Sneik");
29    Image tasoKuva = LoadImage("Maa");
30    Image taustaKuva = LoadImage("Tausta");
31    Image maaliKuva = LoadImage("Maalii");
32    Image bossKuva = LoadImage("Asshat");
33    Image ruohoKuva = LoadImage("Maapaal");
34    Image ammusKuva = LoadImage("Nuoli");
35    Image voittoKuva = LoadImage("Voiddo");
36
37    public override void Begin()
38    {
39        SmoothTextures = false;
40        MediaPlayer.Play("Chibi");
41        MediaPlayer.IsRepeating = true;
42        AloitaPeli();
43    }
44
45    void AloitaPeli()
46    {
47        ClearAll();
48        Gravity = new Vector(0, -1000);
49
50        LuoPistelaskuri();
51
52        if (kenttaNro == 1) LuoKentta("FinalKentta1");
53        else if (kenttaNro == 2) LuoKentta("FinalKentta2");
54        else if (kenttaNro == 3) LuoKentta("FinalKentta3");
55        else if (kenttaNro == 4) LuoKentta("FinalKentta4");
56        else if (kenttaNro == 5) LuoKentta("FinalKentta5");
57        else if (kenttaNro > 5) VoittoRuutu();
58
59        LisaaNappaimet();
60
61        pisteLaskuri.MaxValue--;
62
63        Camera.Follow(pelaaja1);
64        Camera.ZoomFactor = 1.2;
65        Camera.StayInLevel = true;
66    }
67
68    void LuoKentta(string kenttaTiedostonNimi)
69    {
70        ColorTileMap kentta = ColorTileMap.FromLevelAsset(kenttaTiedostonNimi);
71        kentta.SetTileMethod(Color.Black, LisaaTaso);
72        kentta.SetTileMethod(Color.FromHexCode("FF00DC"), LisaaHiiru);
73        kentta.SetTileMethod(Color.FromHexCode("FF0000"), LisaaRuoho);
74        kentta.SetTileMethod(Color.FromHexCode("4CFF00"), LisaaPelaaja);
75        kentta.SetTileMethod(Color.FromHexCode("FFD800"), LisaaPiikki);
76        kentta.SetTileMethod(Color.FromHexCode("0026FF"), LisaaMaali);
77        kentta.SetTileMethod(Color.FromHexCode("00FFFF"), LisaaBoss);
78
79        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
80        Level.CreateBorders();
81        Level.Background.Color = Color.Blue;
82        Level.Background.Image = taustaKuva;
83        Level.Background.TileToLevel();
84    }
85
86    void LoppuValikko()
87    {
88        MultiSelectWindow alkuValikko = new MultiSelectWindow("\n\n     Haluatko lopettaa pelin?     ", "Kyllä", "Ei");
89        alkuValikko.AddItemHandler(0, Exit);
90        alkuValikko.Font = fontti;
91        alkuValikko.Color = Color.DarkGreen;
92        alkuValikko.Shape = Shape.Octagon;
93        alkuValikko.SelectionColor = Color.DarkForestGreen;
94        Add(alkuValikko);
95    }
96
97    void VoittoRuutu()
98    {
99        ClearAll();
100        Camera.Reset();
101        Label taustaKuva = new Label(voittoKuva);
102        taustaKuva.Width = Screen.Height;
103        taustaKuva.Height = Screen.Height;
104        Add(taustaKuva);
105        Level.Background.Color = Color.Black;
106
107        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, null);
108    }
109
110    void LisaaRuoho(Vector paikka, double leveys, double korkeus)
111    {
112        PhysicsObject ruoho = PhysicsObject.CreateStaticObject(leveys, korkeus);
113        ruoho.Position = paikka; 
114        ruoho.Image = ruohoKuva;
115        Add(ruoho);
116    }
117
118    void LisaaTaso(Vector paikka, double leveys, double korkeus)
119    {
120        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
121        taso.Position = paikka;
122        taso.Color = Color.Green;
123        taso.Image = tasoKuva;
124        Add(taso);
125    }
126
127    void LisaaBoss(Vector paikka, double leveys, double korkeus)
128    {
129        PlatformCharacter boss = new PlatformCharacter(leveys, korkeus);
130        boss.Tag = "boss";
131        boss.Image = bossKuva;
132        boss.Position = paikka;
133        boss.Size *= 2;
134        boss.FacingDirection = Direction.Left;
135        Add(boss);
136        AddCollisionHandler(boss, pelaaja1, BossOsuu);
137
138        AssaultRifle vihollisenAse = new AssaultRifle(30, 10);
139        vihollisenAse.Ammo.Value = 10000;
140        vihollisenAse.ProjectileCollision = AmmusOsui;
141        boss.Weapon = vihollisenAse;
142
143        Timer ajastin = new Timer();
144        ajastin.Interval = 0.75;
145        ajastin.Timeout += delegate
146        {
147            if (!boss.IsDestroyed)
148            {
149                PhysicsObject ammus = boss.Weapon.Shoot();
150                if (ammus != null)
151                {
152                    ammus.Image = ammusKuva;
153                }
154            }
155        };
156       
157        ajastin.Start();
158    }
159
160    void LisaaMaali(Vector paikka, double leveys, double korkeus)
161    {
162        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
163        maali.Tag = "maali";
164        maali.Image = maaliKuva;
165        maali.Position = paikka;
166        Add(maali);
167    }
168
169    void LisaaPiikki(Vector paikka, double leveys, double korkeus)
170    {
171        PhysicsObject piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);
172        piikki.Color = Color.Blue;
173        piikki.Tag = "piikki";
174        piikki.Image = piikkiKuva;
175        piikki.Position = paikka;
176        Add(piikki);
177    }
178
179    void LisaaHiiru(Vector paikka, double leveys, double korkeus)
180    {
181        PhysicsObject hiiru = PhysicsObject.CreateStaticObject(leveys, korkeus);
182        hiiru.IgnoresCollisionResponse = true;
183        hiiru.Position = paikka;
184        hiiru.Image = hiiruKuva;
185        hiiru.Tag = "hiiru";
186        hiiru.IgnoresCollisionResponse = true; 
187        Add(hiiru);
188
189        pisteLaskuri.MaxValue++;
190    }
191
192    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
193    {
194        pelaaja1 = new PlatformCharacter(leveys, korkeus);
195        pelaaja1.Position = paikka;
196        pelaaja1.Image = hahmoKuva;
197        pelaaja1.Tag = "hahmo";
198       
199        AddCollisionHandler(pelaaja1, "hiiru", TormaaHiiruun);
200        AddCollisionHandler(pelaaja1, "hiiru", CollisionHandler.PlaySound("Eating"));
201        AddCollisionHandler(pelaaja1, "piikki", PelaajaOsuu);
202        AddCollisionHandler(pelaaja1, "piikki", CollisionHandler.PlaySound("Hmm"));
203        AddCollisionHandler(pelaaja1, "ammus", PelaajaOsuu); 
204        AddCollisionHandler(pelaaja1, "ammus", CollisionHandler.PlaySound("Hmm"));
205        AddCollisionHandler(pelaaja1, "maali", TormasiMaaliin);
206        AddCollisionHandler(pelaaja1, "maali", CollisionHandler.PlaySound("Maaliaani"));
207       
208        Add(pelaaja1);
209    }
210
211    void Liikuta(PlatformCharacter hahmo, double nopeus)
212    {
213        hahmo.Walk(nopeus);
214    }
215
216    void Hyppaa(PlatformCharacter hahmo, double nopeus)
217    {
218        hahmo.Jump(nopeus);
219    }
220    void LisaaNappaimet()
221    {
222        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
223        Keyboard.Listen(Key.Escape, ButtonState.Pressed, LoppuValikko, "Lopeta peli");
224        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
225        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
226        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
227    }
228
229    void TormaaHiiruun(PhysicsObject hahmo, PhysicsObject hiiru)
230    {
231        MessageDisplay.Add("Söit hiirun!");
232        hiiru.Destroy();
233        pisteLaskuri.Value++;
234    }
235
236    void PelaajaOsuu(PhysicsObject pelaaja, PhysicsObject kohde)
237    {
238        AloitaPeli();
239        MessageDisplay.Add("Sinusta tehtiin käsilaukku");
240    }
241
242    void BossOsuu(PhysicsObject boss, PhysicsObject pelaaja1)
243    {
244        boss.Destroy();
245        Explosion rajahdys = new Explosion(50);
246        rajahdys.Position = boss.Position;
247        Add(rajahdys);
248
249        kenttaNro++;
250        AloitaPeli();
251
252    }
253
254    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
255    {
256        if (!kohde.Tag.Equals("hiiru"))
257        {
258            ammus.Destroy();
259            Explosion rajahdys = new Explosion(10);
260            rajahdys.Position = ammus.Position;
261            Add(rajahdys);
262        }
263    }
264
265    void TormasiMaaliin(PhysicsObject pelaaja1, PhysicsObject maali)
266    {
267        if (MaaliAktivoitu)
268        {
269            MaaliAktivoitu = false;
270            kenttaNro++;
271            AloitaPeli();
272        }
273    }
274
275    IntMeter pisteLaskuri;
276
277    void LuoPistelaskuri()
278    {
279        pisteLaskuri = new IntMeter(0);
280        pisteLaskuri.MaxValue = 1;
281
282        pisteLaskuri.UpperLimit += delegate
283        {
284            MaaliAktivoitu = true;
285        };
286
287        Label pisteNaytto = new Label();
288        pisteNaytto.Font = fontti;
289        pisteNaytto.X = Screen.Right - 600;
290        pisteNaytto.Y = Screen.Top - 100;
291        pisteNaytto.TextColor = Color.White;
292        pisteNaytto.Title = "Hiiruja syöty";
293        pisteNaytto.BindTo(pisteLaskuri);
294        Add(pisteNaytto);
295    }
296}
297
Note: See TracBrowser for help on using the repository browser.