source: 2018/26/KaapoH/jjjjjjeeeeben/jjjjjjeeeeben/jjjjjjeeeeben.cs @ 9807

Revision 9807, 9.4 KB checked in by eetynkky, 14 months ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Widgets;
7
8class Vihu : PhysicsObject
9{
10    public IntMeter Elamat = new IntMeter(100, 0, 100);
11
12    public Vihu(double leveys, double korkeus)
13        : base(leveys, korkeus)
14    {
15        Elamat.LowerLimit += delegate { this.Destroy(); };
16    }
17}
18
19public class jjjjjjeeeeben : PhysicsGame
20{
21
22   
23    int kenttaNro = 1;
24    const double nopeus = 150;
25    const double hyppyNopeus = 750;
26
27    const int RUUDUN_KOKO = 40;
28   
29    AssaultRifle pelaajan1ase;
30    PlatformCharacter pelaaja1;
31    private Image[] Kavely = LoadImages("muumipappaaskel1", "muumipappaaskel2", "muumipappaaskel3", "muumipappaaskel4");
32    private Image[] Seisominen = LoadImages("muumipappa");
33    Image tahtiKuva = LoadImage("tahti");
34    Image hatti = LoadImage("hattivatti");
35    Image norsu = LoadImage("norsu");
36    Image luoti = LoadImage("Luoti");
37    Image maa = LoadImage("maa");
38    Image backG = LoadImage("tausta");
39    Image vatti = LoadImage("lentavavatti");
40    Image backG2 = LoadImage("muumitalopalaa");
41    Image hemuli = LoadImage("hemuli");
42    Image kyltti = LoadImage("kyltti");
43    Image loppu = LoadImage("muumilaakso");
44    SoundEffect maaliAani = LoadSoundEffect("maali");
45
46
47    public override void Begin()
48    {
49
50        MessageDisplay.Add("Demonit ovat saapuneet Muumilaaksoon");
51        MessageDisplay.Add("MOOM paappa on tullut tunkemaan ne takaisin sinne mistä ne tulivatkin");
52 
53
54        seuraavakentta();
55
56        Level.CreateLeftBorder();
57        Level.CreateRightBorder();
58        Level.CreateTopBorder();
59
60        Camera.Follow(pelaaja1);
61        Camera.ZoomFactor = 1.2;
62        Camera.StayInLevel = true;
63    }
64
65    void seuraavakentta()
66    {
67        ClearAll();
68        Gravity = new Vector(0, -1000);
69        if (kenttaNro == 1)
70        {
71            luokentta("kentta1");
72        }
73        else if (kenttaNro == 2)
74        {
75            luokentta("kentta2");
76            Level.CreateBorders();
77
78        }
79        else if (kenttaNro >= 3) {
80            ClearAll();
81            Level.Background.Image = loppu;
82        }
83        LisaaNappaimet();
84
85    }
86
87
88    void luokentta(string taso) {
89
90
91
92        TileMap kentta = TileMap.FromLevelAsset(taso);
93
94
95        kentta.SetTileMethod('H', LisaaHatti);
96        kentta.SetTileMethod('#', LisaaTaso);
97        kentta.SetTileMethod('*', LisaaTahti);
98        kentta.SetTileMethod('N', LisaaPelaaja);
99        kentta.SetTileMethod('Y', LisaaPiikki);
100        kentta.SetTileMethod('E', LisaaHemuli);
101        kentta.SetTileMethod('F', LisaaMaali);
102        kentta.SetTileMethod('2', LisaaPiikki2);
103        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
104
105
106        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
107        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
108        if (kenttaNro == 1)
109        {
110            Level.Background.Image = backG;
111        }
112        else if (kenttaNro == 2)
113        {
114            Level.Background.Image = backG2;
115        }
116
117
118
119
120    }
121
122    void LisaaMaali(Vector paikka, double leveys, double korkeus)
123    {
124        PhysicsObject maali = new PhysicsObject(50, 67);
125        maali.Position = paikka;
126        maali.CollisionIgnoreGroup = 2;
127        maali.IgnoresExplosions = true;
128        maali.IgnoresGravity = true;
129        maali.Mass = 99999999999999;
130        AddCollisionHandler(maali, pelaaja1, kenttaup);
131        maali.Image = kyltti;
132        Add(maali);
133
134    }
135    void kenttaup(PhysicsObject maali, PhysicsObject pelaaja1) {
136        kenttaNro++;
137        seuraavakentta();
138    }
139    void LisaaHemuli(Vector paikka, double leveys, double korkeus)
140    {
141
142        Vihu Hemuli = new Vihu(200, 500);
143        Hemuli.Position = paikka;
144        Hemuli.CollisionIgnoreGroup = 2;
145        Hemuli.Mass = 9999999;
146        Hemuli.IgnoresExplosions = true;
147        Hemuli.Image = hemuli;
148        Hemuli.Tag = "Hvihu";
149        Add(Hemuli);
150
151    }
152    void LisaaPiikki2(Vector paikka, double leveys, double korkeus)
153    {
154
155        PhysicsObject piikki2 = new PhysicsObject(25, 25);
156        piikki2.Position = paikka;
157        piikki2.IgnoresGravity = true;
158        piikki2.Image = vatti;
159        piikki2.CanRotate = false;
160        piikki2.Tag = "Lvihu";
161        piikki2.CollisionIgnoreGroup = 1;
162        piikki2.Mass = 1;
163        FollowerBrain Lvattiaiv = new FollowerBrain(pelaaja1);
164        Lvattiaiv.Speed = 100;
165
166        piikki2.Brain = Lvattiaiv;
167
168        Add(piikki2);
169    }
170
171    void LisaaPiikki(Vector paikka, double leveys, double korkeus) {
172
173        PhysicsObject piikki = new PhysicsObject(200, 200);
174        piikki.Position = paikka;
175        piikki.IgnoresGravity = true;
176        piikki.Image = vatti;
177        piikki.CanRotate = false;
178        piikki.Tag = "Lvihu";
179        piikki.CollisionIgnoreGroup = 1;
180        FollowerBrain Lvattiaiv = new FollowerBrain(pelaaja1);
181        Lvattiaiv.Speed = 135;
182
183        piikki.Brain = Lvattiaiv;
184
185        Add(piikki);
186    }
187
188    void LisaaTaso(Vector paikka, double leveys, double korkeus)
189    {
190        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
191        taso.Position = paikka;
192        taso.CollisionIgnoreGroup = 1;
193        taso.Color = Color.Green;
194        taso.Image = maa;
195        Add(taso);
196    }
197    void LisaaHatti(Vector paikka, double leveys, double korkeus) {
198        PlatformCharacter Hatti = new PlatformCharacter(35, 55);
199        Hatti.Position = paikka;
200        Hatti.Image = hatti;
201        Hatti.Tag = "Vihu";
202        Hatti.CanRotate = false; 
203        PlatformWandererBrain vattiaiv = new PlatformWandererBrain();
204        vattiaiv.Speed = 100;
205        Hatti.Brain = vattiaiv;
206        Add(Hatti);
207
208    }
209
210    void LisaaTahti(Vector paikka, double leveys, double korkeus)
211    {
212        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
213        tahti.IgnoresCollisionResponse = true;
214        tahti.Position = paikka;
215        tahti.Image = tahtiKuva;
216        tahti.Tag = "tahti";
217        Add(tahti);
218    }
219
220    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
221    {
222        pelaajan1ase = new AssaultRifle(1, 1);
223        pelaaja1 = new PlatformCharacter(35, 58);
224        pelaaja1.Position = paikka;
225        pelaaja1.Mass = 5.0;
226        //pelaaja1.Image = pelaajanKuva;
227        AddCollisionHandler(pelaaja1, "Vihu", TormaaVihuun);
228        AddCollisionHandler(pelaaja1 ,"Lvihu", TormaaVihuun);
229        pelaaja1.AnimWalk = new Animation(Kavely);
230        pelaaja1.AnimIdle = new Animation(Seisominen);
231        pelaaja1.AnimJump = new Animation(Seisominen);
232        pelaaja1.AnimFall = new Animation(Seisominen);
233        pelaaja1.AnimWalk.FPS = 15;
234        pelaajan1ase.Color = Color.Orange;
235        pelaajan1ase.ProjectileCollision = Osuma;
236        Add(pelaaja1);
237        pelaaja1.Add(pelaajan1ase);
238
239 
240    }
241
242    void Osuma(PhysicsObject ammus,PhysicsObject  kohde) {
243        ammus.Destroy();
244        Explosion ex = new Explosion(100);
245        ex.Speed = 1000;
246        ex.Position = ammus.Position;
247        Add(ex);
248    }
249    void LisaaNappaimet()
250    {
251        Keyboard.Listen(Key.R, ButtonState.Pressed, Reset, "Aloittaa uudestaan");
252        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
253        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
254
255        Mouse.ListenMovement(0.1, Tahtaa, "MOOMpaappa tähtää");
256        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
257        Keyboard.Listen(Key.D , ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
258        Keyboard.Listen(Key.Space, ButtonState.Down, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
259        Keyboard.Listen(Key.W, ButtonState.Down, Ammu, "MOOMpaappa ammuskelee mörssärillään");
260
261    }
262
263    void Tahtaa() {
264       
265        Vector suunta = (Mouse.PositionOnWorld - pelaajan1ase.AbsolutePosition).Normalize();
266        pelaajan1ase.Angle = suunta.Angle;
267
268    }
269    void Ammu() {
270       
271
272        PhysicsObject ammus = pelaajan1ase.Shoot();
273        if (ammus != null)
274
275        {
276            AddCollisionHandler(ammus, "Vihu",osuma);
277            AddCollisionHandler(ammus, "Hvihu", Losuma);
278            ammus.Size *= 1;
279            ammus.Image = luoti;
280            ammus.MaximumLifetime = TimeSpan.FromSeconds(3);
281
282        }
283
284    }
285    void Losuma(PhysicsObject ammus, PhysicsObject kohde)
286    {
287        var v = kohde as Vihu;
288        if (v == null) return;
289        v.Elamat.AddValue(-1);
290
291    }
292    void osuma(PhysicsObject ammus, PhysicsObject kohde) {
293        ammus.Destroy();
294        kohde.Destroy();
295
296    }
297    void Liikuta(PlatformCharacter hahmo, double nopeus)
298    {
299        hahmo.Walk(nopeus);
300    }
301
302
303   
304    void Hyppaa(PlatformCharacter hahmo, double nopeus)
305    {
306        Vector Liito = new Vector(0, 50);
307        hahmo.Jump(hyppyNopeus);
308        hahmo.Hit(Liito);
309    }
310
311   
312    void TormaaVihuun(PhysicsObject hahmo, PhysicsObject hatti)
313    {
314
315        MessageDisplay.Add("Kuolit - Paina R");
316        hahmo.Destroy();
317        Explosion ex = new Explosion(100);
318        ex.Position = pelaaja1.Position;
319        Add(ex);
320
321    }
322    void Reset()
323    {
324        ClearAll();
325        kenttaNro = 1;
326        Begin();
327    }
328 }
Note: See TracBrowser for help on using the repository browser.