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

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