source: 2016/23/EetuK/CoolDuckMassacre/CoolDuckMassacre/CoolDuckMassacre/CoolDuckMassacre.cs @ 7226

Revision 7226, 7.0 KB checked in by sieerinn, 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 CoolDuckMassacre : PhysicsGame
10
11
12{
13    const double nopeus = 200;
14    const double hyppyNopeus = 500;
15    const int RUUDUN_KOKO = 40;
16
17    int Kenttanumero = 1;
18
19    PlatformCharacter pelaaja;
20
21    Image pelaajanKuva = LoadImage("CoolDuck");
22    Image tahtiKuva = LoadImage("tahti");
23    Image ZombieAnkka = LoadImage("Zombieankka");
24    Image Background = LoadImage("Background");
25    SoundEffect maaliAani = LoadSoundEffect("maali");
26
27    IntMeter Laskuri;
28
29   
30
31    public override void Begin()
32    {
33        Valikko();
34    }
35   
36     void Valikko()
37        {
38            ClearAll(); // Tyhjennetään kenttä kaikista peliolioista
39
40   
41
42 
43        MultiSelectWindow alkuValikko = new MultiSelectWindow("Cool Duck Massacre", "Aloita peli", "Lopeta");
44        Add(alkuValikko);
45        alkuValikko.AddItemHandler(0, Aloitapeli);
46       
47        alkuValikko.AddItemHandler(1, Exit);
48        alkuValikko.Color = Color.MediumVioletRed;
49   
50    }
51
52
53
54    void Aloitapeli()
55    {
56        ClearAll();
57        Gravity = new Vector(0, -1000);
58
59        Laskuri = new IntMeter(0);
60        Laskuri.LowerLimit += SeuraavaKentta;
61
62        LuoKentta();
63        LisaaNappaimet();
64
65        Camera.Follow(pelaaja);
66        Camera.ZoomFactor = 2.5;
67        Camera.StayInLevel = true;
68    }
69
70    void LuoKentta()
71    {
72        if (Kenttanumero >2)
73        {
74            Exit();
75        }
76        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("Kentta"+Kenttanumero);
77        ruudut.SetTileMethod(Color.Black, LisaaTaso);
78        ruudut.SetTileMethod(Color.Red, Vihollinen);
79        ruudut.SetTileMethod(Color.FromHexCode("B200FF"), LuoPelaaja);
80        ruudut.SetTileMethod(Color.FromHexCode("00FF21"), LuoTrampoliini);
81        ruudut.SetTileMethod(Color.FromHexCode("FF00DC"), LuoMaali);
82        ruudut.Execute(20, 20);
83        GameObject Background1 = new GameObject(Level.Width, Level.Height);
84        Add(Background1,-3);
85        Background1.Image = Background;
86
87    }
88
89    void SeuraavaKentta()
90    {
91        Kenttanumero++;
92        Aloitapeli();
93    }
94
95    void LuoMaali(Vector paikka, double leveys, double korkeus)
96    {
97        PhysicsObject lippu = new PhysicsObject(leveys, korkeus * 1.5);
98        lippu.Color = Color.HotPink;
99        lippu.Position = paikka;
100        Add(lippu);
101        lippu.MakeStatic();
102    }
103
104    void Vihollinen(Vector paikka, double leveys, double korkeus)
105    {
106        PlatformCharacter vihollinen = new PlatformCharacter(20, 20);
107        vihollinen.Color = Color.Red;
108        vihollinen.Position = paikka;
109        Add(vihollinen);
110        vihollinen.Image = ZombieAnkka;
111        vihollinen.Tag = "pahis";
112
113        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
114        tasoAivot.Speed = 100;
115
116        vihollinen.Brain = tasoAivot;
117        tasoAivot.JumpSpeed = 300;
118        tasoAivot.TriesToJump = true;
119        tasoAivot.FallsOffPlatforms = false;
120
121        Laskuri.Value++;
122    }
123    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
124    {
125        pelaaja = new PlatformCharacter(30, 30);
126        pelaaja.Position = paikka;
127        AddCollisionHandler(pelaaja, "tahti", TormaaTahteen);
128        Add(pelaaja);
129        pelaaja.Color = Color.Blue;
130        pelaaja.Image = pelaajanKuva;
131        AddCollisionHandler(pelaaja, "Trampoliini", OsuuTrampoliiniin);
132        AddCollisionHandler(pelaaja, "pahis", OsuuZombiin);
133
134        pelaaja.Weapon = new AssaultRifle(30, 10);
135        pelaaja.Weapon.Ammo.Value = 1000;
136        pelaaja.Weapon.ProjectileCollision = AmmusOsui;
137        pelaaja.Weapon.IsVisible = false;
138
139
140
141    }
142
143    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
144    {
145        ammus.Destroy();
146        if(kohde.Tag=="pahis")
147        {
148            kohde.Destroy();
149            Laskuri.Value--;
150        }
151    }
152
153    void OsuuZombiin(PhysicsObject pelaaja, PhysicsObject pahis)
154    {
155        pelaaja.Destroy();
156        Timer.SingleShot(1.5, delegate
157        {
158            ClearAll();
159            Begin();
160
161        });
162
163    }
164
165
166    void LisaaTaso(Vector paikka, double leveys, double korkeus)
167    {
168        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
169        taso.Position = paikka;
170        taso.Color = Color.Black;
171        Add(taso);
172    }
173
174    void LisaaTahti(Vector paikka, double leveys, double korkeus)
175    {
176        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
177        tahti.IgnoresCollisionResponse = true;
178        tahti.Position = paikka;
179        tahti.Image = tahtiKuva;
180        tahti.Tag = "tahti";
181        Add(tahti);
182    }
183
184
185    void LisaaNappaimet()
186    {
187        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
188        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
189
190        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja, -nopeus);
191        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja, nopeus);
192        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja, hyppyNopeus);
193
194        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja);
195
196        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
197
198        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja, -nopeus);
199        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja, nopeus);
200        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja, hyppyNopeus);
201
202        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
203    }
204
205    void AmmuAseella(PlatformCharacter pelaaja)
206    {
207        PhysicsObject ammus = pelaaja.Weapon.Shoot();
208
209        if (ammus != null)
210        {
211            //ammus.Size *= 3;
212            //ammus.Image = ...
213            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
214        }
215   
216   
217    }
218
219
220     
221
222    void Liikuta(PlatformCharacter hahmo, double nopeus)
223    {
224        hahmo.Walk(nopeus);
225    }
226
227    void Hyppaa(PlatformCharacter hahmo, double nopeus)
228    {
229        hahmo.Jump(nopeus);
230    }
231
232    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
233    {
234        maaliAani.Play();
235        tahti.Destroy();
236    }
237    void LuoTrampoliini(Vector paikka, double leveys, double korkeus)
238    {
239        PhysicsObject Trampoliini = PhysicsObject.CreateStaticObject(20, 20);
240        Trampoliini.Color = Color.Green;
241        Trampoliini.Position = paikka;
242        Add(Trampoliini);
243        Trampoliini.Tag = "Trampoliini";
244
245    }
246    void OsuuTrampoliiniin(PhysicsObject hahmo, PhysicsObject Trampoliini)
247    {
248        pelaaja.ForceJump(1000);
249
250    }
251
252}
253
Note: See TracBrowser for help on using the repository browser.