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

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