source: 2017/27/OskariK/OK/OK/OK/OK.cs @ 8990

Revision 8990, 15.9 KB checked in by npo17_42, 2 years ago (diff)

peli valmis. Mietipä sitä.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class OK : PhysicsGame
10{
11    GameObject command; //UI-ruutu, jossa pelikomennot
12    GameObject feed; //UI-ruutu, johon tulee combat log
13    GameObject portrait; //ruutu, jossa pelihahmon HP ja kauniit kasvot
14    GameObject tappio; //ruutu, joka ilmaantuu pelaajan hävitessä
15
16    GameObject foe1; //ruutu, jossa pahis 1
17    GameObject foe2; //ruutu, jossa pahis 2
18    GameObject foe3; //ruutu, jossa pahis 3
19
20    double textheight = -220;
21    double textwidth = -750;
22
23    GameObject inventory; //ruutu, jossa kamasi näkyvät
24
25    bool potionmeni = false;
26    bool pommimeni = false;
27
28    GameObject transition; //ruutu, jolla peli menee eteenpäin
29    GameObject voitto; //ruutu, joka tulee kun voitat pelin
30
31    int vihollisNro = 1;
32
33    PhysicsObject Pointer; //jolla valitaan schaibaa
34    Timer ajastin;
35
36    bool pelaajatoiminut = false;  //tarkistaa, että onko pelaaja käyttänyt vuoronsa, että hän ei pääse rikkomaan peliä
37
38    IntMeter goopHP; //ekan vihollisen hp
39    IntMeter skeleHP; //tokan vihollisen hp
40    IntMeter snekHP; //kolmannen vihollisen HP
41    IntMeter HP; //pelaajan hp
42
43    int playerdamage = 10; //pelaajan tehot
44    int enemy1damage = 5; //ekan vihollisen tehot
45    int enemy2damage = 20; //tokan vihollisen tehot
46    int enemy3damage = 24; //kolmannen vihollisen tehot
47
48    Label foeHP; // eka vihu
49    Label foe2HP; //toka vihu
50    Label playerHP;
51    Label feedtext;
52
53    Vector nopeusYlos = new Vector(0, 100);
54    Vector nopeusAlas = new Vector(0, -100);
55    Vector nopeusVasen = new Vector(-200, 0);
56    Vector nopeusOikea = new Vector(200, 0);
57
58    public override void Begin()
59    {
60        LuoAlue();
61        luopelaaja();
62        LuoHP();
63        Kontrollit();
64
65
66        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
67    }
68
69    void LuoAlue()
70    {
71        Level.Background.Color = Color.White;
72
73        command = new GameObject(450.0, 300.0);
74        command.Shape = Shape.Rectangle;
75        command.Color = Color.Black;
76        command.X = 370.00;
77        command.Y = -330.00;
78        command.Image = LoadImage("Kökkö");
79        Add(command, 1);
80
81        feed = new GameObject(1000.00, 300.00);
82        feed.Shape = Shape.Rectangle;
83        feed.Color = Color.Black;
84        feed.X = -400.00;
85        feed.Y = -330.00;
86        Add(feed);
87
88        feedtext = new Label();
89        feedtext.X = textwidth;
90        feedtext.Y = textheight;
91        feedtext.TextColor = Color.White;
92        feedtext.Color = Color.Transparent;
93        Add(feedtext, 2);
94
95
96        portrait = new GameObject(250.00, 300.00);
97        portrait.Shape = Shape.Rectangle;
98        portrait.Color = Color.Black;
99        portrait.X = 750.00;
100        portrait.Y = -330.00;
101        portrait.Image = LoadImage("Portretti");
102        Add(portrait);
103
104        foe1 = new GameObject(1800.00, 700.00);
105        foe1.Shape = Shape.Rectangle;
106        foe1.Color = Color.Aqua;
107        foe1.X = -10.00;
108        foe1.Y = 200.00;
109        foe1.Image = LoadImage("köntsä");
110        Add(foe1);
111    }
112
113    PhysicsObject luopelaaja()
114    {
115        Pointer = new PhysicsObject(5.0, 5.0);
116        Pointer.Color = Color.White;
117        Pointer.X = 190.00;
118        Pointer.Y = -220.00;
119        Add(Pointer, 2);
120        Pointer.IgnoresExplosions = true;
121        return Pointer;
122    }
123
124    void LuoHP()
125    {
126        goopHP = new IntMeter(20);
127
128        foeHP = new Label();
129
130        foeHP.X = 150.00;
131        foeHP.Y = Screen.Top - 40.00;
132        foeHP.TextColor = Color.Red;
133        foeHP.Color = Color.Transparent;
134
135        foeHP.BindTo(goopHP);
136        Add(foeHP, 2);
137
138        HP = new IntMeter(65);
139        HP.MaxValue = 65;
140
141        Label playerHP = new Label();
142
143        playerHP.X = 660.00;
144        playerHP.Y = -200.00;
145        playerHP.TextColor = Color.LightGreen;
146        playerHP.Color = Color.Transparent;
147
148        playerHP.BindTo(HP);
149        Add(playerHP, 2);
150
151        skeleHP = new IntMeter(40);
152
153
154
155
156    }
157    void AsetaNopeus(PhysicsObject Pointer, Vector nopeus)
158    {
159        PlaySound("blip");
160
161        if (Pointer.Velocity.Magnitude > 0) return;
162
163        Vector sijainti = Pointer.Position + nopeus;
164        if (sijainti.Y > command.Top) return;
165        else if (sijainti.Y < command.Bottom) return;
166
167        Pointer.MoveTo(Pointer.Position + nopeus, 1000.00);
168
169    }
170    void Kontrollit()
171    {
172        Keyboard.Clear();
173        Keyboard.Listen(Key.Down, ButtonState.Pressed, AsetaNopeus, "liikkuu", Pointer, nopeusAlas);
174        //Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, Pointer, Vector.Zero);
175
176        Keyboard.Listen(Key.Up, ButtonState.Pressed, AsetaNopeus, "liikkuu", Pointer, nopeusYlos);
177        //Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, Pointer, Vector.Zero);
178
179
180        Keyboard.Listen(Key.Z, ButtonState.Pressed, Valitse, null);
181
182        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
183
184    }
185
186    void Valitse()
187
188    {
189
190        if (pelaajatoiminut) return;
191        pelaajatoiminut = true;
192        if (Pointer.Y > command.Top - command.Height / 3) Attack();
193        else if (Pointer.Y < command.Bottom + command.Height / 3) Exit();
194        else Items();
195    }
196
197    void Items()
198    {
199
200        pelaajatoiminut = false;
201        inventory = new GameObject(450.0, 300.0);
202        command.Shape = Shape.Rectangle;
203        inventory.Color = Color.Black;
204        inventory.X = 370.00;
205        inventory.Y = -330.00;
206        inventory.Image = LoadImage("Items");
207        Add(inventory, 1);
208
209        Keyboard.Clear();
210        Keyboard.Listen(Key.Down, ButtonState.Pressed, AsetaNopeus, "liikkuu", Pointer, nopeusAlas);
211        Keyboard.Listen(Key.Up, ButtonState.Pressed, AsetaNopeus, "liikkuu", Pointer, nopeusYlos);
212        Keyboard.Listen(Key.Z, ButtonState.Pressed, Itemvalitse, null);
213        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
214    }
215
216    void Itemvalitse()
217    {
218        if (Pointer.Y > command.Top - command.Height / 3) Potion();
219        else if (Pointer.Y < command.Bottom + command.Height / 3) poistainventory();
220        else Bomb();
221    }
222
223    void poistainventory()
224
225    {
226        Kontrollit();
227        inventory.Destroy();
228    }
229
230
231    void Potion()
232    {
233        if (potionmeni)
234        {
235            PlaySound("eipysty");
236            return;
237        }
238        potionmeni = true;
239
240        pelaajatoiminut = true;
241
242        HP.Value = HP.MaxValue;
243
244        feedtext.Y = textheight - feedtext.Height / 2;
245        feedtext.Text = "Potion recovers your HP. \n" + feedtext.Text;
246        PlaySound("potion");
247        Kontrollit();
248
249        switch (vihollisNro)
250        {
251            case 1:
252                if (goopHP > 0) Timer.SingleShot(1.0, Enemy1attack);
253                else Transition();
254                break;
255
256            case 2:
257                if (skeleHP > 0) Timer.SingleShot(1.0, Enemy2attack);
258                else Transition2();
259                break;
260
261            case 3:
262                if (snekHP > 0) Timer.SingleShot(1.0, Enemy3attack);
263                else Voitit();
264                break;
265
266        }
267
268        poistainventory();
269    }
270
271    void Bomb()
272    {
273        if (pommimeni)
274        {
275            PlaySound("eipysty");
276            return;
277        }
278        pommimeni = true;
279
280        pelaajatoiminut = true;
281
282        poistainventory();
283        pelaajatoiminut = true;
284
285        Explosion rajahdys = new Explosion(500);
286        rajahdys.Position = (foe1.Position);
287        Add(rajahdys, 3);
288
289        feedtext.Text = "The bomb explodes! \n" + feedtext.Text;
290        feedtext.Y = textheight - feedtext.Height / 2;
291
292        Timer.SingleShot (3.0, Bomb2);
293
294    }
295
296    void Bomb2()
297    {
298        switch (vihollisNro)
299        {
300            case 1:
301                goopHP.Value -= 20;
302                Transition();
303
304                break;
305
306            case 2:
307                skeleHP.Value -= 40;
308                Transition2();
309
310                break;
311
312            case 3:
313                snekHP.Value -= 100;
314                Voitit();
315
316                break;
317        };
318
319    }
320    void Attack() //mitä tapahtuu jos painaa attackkia
321    {
322        if (goopHP.Value > 0) attackenemy1();
323        else if (skeleHP.Value > 0) attackenemy2();
324        else if (snekHP.Value > 0) attackenemy3();
325    }
326
327    void attackenemy1()
328    {
329        goopHP.Value -= playerdamage;
330
331        GameObject hit = new GameObject(100.00, 100.00);
332        hit.Shape = Shape.Star;
333        hit.Color = Color.OrangeRed;
334        hit.X = 0.00;
335        hit.Y = Screen.Top - 60.00;
336        Add(hit, 3);
337        hit.Image = LoadImage("hitanim2");
338        hit.MaximumLifetime = new TimeSpan(0, 0, 0, 0, 50);
339
340        PlaySound("hit");
341
342        GameObject hit2 = new GameObject(100.00, 100.00);
343        hit2.Shape = Shape.Star;
344        hit2.Color = Color.OrangeRed;
345        hit2.X = 0.00;
346        hit2.Y = Screen.Top - 60.00;
347        hit2.Image = LoadImage("hitanim");
348        hit2.MaximumLifetime = new TimeSpan(0, 0, 0, 0, 100);
349        Add(hit2, 3);
350
351        Attackfeed(playerdamage);
352    }
353
354    void attackenemy2()
355    {
356        skeleHP.Value -= playerdamage;
357
358        GameObject hit = new GameObject(100.00, 100.00);
359        hit.Shape = Shape.Star;
360        hit.Color = Color.OrangeRed;
361        hit.X = 0.00;
362        hit.Y = Screen.Top - 60.00;
363        Add(hit, 3);
364        hit.Image = LoadImage("hitanim2");
365        hit.MaximumLifetime = new TimeSpan(0, 0, 0, 0, 50);
366
367        PlaySound("hit");
368
369        GameObject hit2 = new GameObject(100.00, 100.00);
370        hit2.Shape = Shape.Star;
371        hit2.Color = Color.OrangeRed;
372        hit2.X = 0.00;
373        hit2.Y = Screen.Top - 60.00;
374        hit2.Image = LoadImage("hitanim");
375        hit2.MaximumLifetime = new TimeSpan(0, 0, 0, 0, 100);
376        Add(hit2, 3);
377
378        Attackfeed(playerdamage);
379    }
380
381    void attackenemy3()
382    {
383        snekHP.Value -= playerdamage;
384
385        GameObject hit = new GameObject(100.00, 100.00);
386        hit.Shape = Shape.Star;
387        hit.Color = Color.OrangeRed;
388        hit.X = 0.00;
389        hit.Y = Screen.Top - 60.00;
390        Add(hit, 3);
391        hit.Image = LoadImage("hitanim2");
392        hit.MaximumLifetime = new TimeSpan(0, 0, 0, 0, 50);
393
394        PlaySound("hit");
395
396        GameObject hit2 = new GameObject(100.00, 100.00);
397        hit2.Shape = Shape.Star;
398        hit2.Color = Color.OrangeRed;
399        hit2.X = 0.00;
400        hit2.Y = Screen.Top - 60.00;
401        hit2.Image = LoadImage("hitanim");
402        hit2.MaximumLifetime = new TimeSpan(0, 0, 0, 0, 100);
403        Add(hit2, 3);
404
405        Attackfeed(playerdamage);
406    }
407
408    void Attackfeed(double damage) //combat login tiedot päivittyy
409    {
410        double y = feedtext.Y;
411
412        feedtext.Text = "Delivered " + damage + " damage.\n" + feedtext.Text;
413        feedtext.Y = textheight - feedtext.Height / 2;
414
415        switch (vihollisNro)
416        {
417            case 1:
418                if (goopHP > 0) Timer.SingleShot(1.0, Enemy1attack);
419                else Transition();
420                break;
421
422            case 2:
423                if (skeleHP > 0) Timer.SingleShot(1.0, Enemy2attack);
424                else Transition2();
425                break;
426
427            case 3:
428                if (snekHP > 0) Timer.SingleShot(1.0, Enemy3attack);
429                else Voitit();
430                break;
431        }
432
433       
434
435       
436
437       
438    }
439
440    void Enemy1attack() //ekan vihollisen AI
441
442    {
443        PlaySound("playertakesdamage");
444        HP.Value -= enemy1damage;
445
446        double y = feedtext.Y;
447        double x = feedtext.X;
448
449        feedtext.Text = "Received " + enemy1damage + " damage.\n" + feedtext.Text;
450        feedtext.Y = textheight - feedtext.Height / 2;
451        feedtext.X = textwidth;;
452
453        pelaajatoiminut = false;
454
455        if (HP == 0) Lose();
456    }
457   
458    void Enemy2attack() //tokan vihollisen AI
459    {
460        PlaySound("playertakesdamage");
461        HP.Value -= enemy2damage;
462
463        double y = feedtext.Y;
464        double x = feedtext.X;
465
466        feedtext.Text = "Received " + enemy2damage + " damage.\n" + feedtext.Text;
467        feedtext.Y = textheight - feedtext.Height / 2;
468        feedtext.X = textwidth; ;
469
470        pelaajatoiminut = false;
471
472        if (HP == 0) Lose();
473    }
474
475    void Enemy3attack() //kolmannen vihollisen ai
476    {
477        PlaySound("playertakesdamage");
478        HP.Value -= enemy3damage;
479
480        double y = feedtext.Y;
481        double x = feedtext.X;
482
483        feedtext.Text = "Received " + enemy3damage + " damage.\n" + feedtext.Text;
484        feedtext.Y = textheight - feedtext.Height / 2;
485        feedtext.X = textwidth; ;
486
487        pelaajatoiminut = false;
488
489        if (HP == 0) Lose();
490    }
491    void Transition() //pelin siirtyminen eteenpäin, kun pahis voitettu
492    {
493        foeHP.Destroy();
494        vihollisNro++;
495        transition = new GameObject(1800.00, 700.00);
496        transition.Shape = Shape.Rectangle;
497        transition.Color = Color.Aqua;
498        transition.X = -10.00;
499        transition.Y = 200.00;
500        transition.Image = LoadImage("transiitio");
501        Add(transition);
502
503        Timer.SingleShot(1.5, Lisaapahis2);
504    }
505
506    void Transition2() //pelin siirtyminen eteenpäin, kun toinen pahis on voitettu
507    {
508        foeHP.Destroy();
509        vihollisNro++;
510        transition = new GameObject(1800.00, 700.00);
511        transition.Shape = Shape.Rectangle;
512        transition.Color = Color.Aqua;
513        transition.X = -10.00;
514        transition.Y = 200.00;
515        transition.Image = LoadImage("transiitio");
516        Add(transition, 1);
517
518        Timer.SingleShot(1.5, Lisaapahis3);
519    }
520
521    void Lisaapahis2()
522    {
523        foe2 = new GameObject(1800.00, 700.00);
524        foe2.Shape = Shape.Rectangle;
525        foe2.Color = Color.Aqua;
526        foe2.X = -10.00;
527        foe2.Y = 200.00;
528        foe2.Image = LoadImage("luumies");
529        Add(foe2);
530
531        pelaajatoiminut = false;
532
533        skeleHP = new IntMeter(40);
534
535        foeHP = new Label();
536
537        foeHP.X = 150.00;
538        foeHP.Y = Screen.Top - 40.00;
539        foeHP.TextColor = Color.Red;
540        foeHP.Color = Color.Transparent;
541        Add(foeHP);
542
543        foeHP.BindTo(skeleHP);
544        Add(foeHP, 3);
545
546    }
547
548    void Lisaapahis3()
549
550    {
551        foe3 = new GameObject(1800.00, 700.00);
552        foe3.Shape = Shape.Rectangle;
553        foe3.Color = Color.Aqua;
554        foe3.X = -10.00;
555        foe3.Y = 200.00;
556        foe3.Image = LoadImage("snek");
557        Add(foe3, 2);
558
559        pelaajatoiminut = false;
560
561        snekHP = new IntMeter(100);
562
563        foeHP = new Label();
564
565        foeHP.X = 150.00;
566        foeHP.Y = Screen.Top - 40.00;
567        foeHP.TextColor = Color.Blue;
568        foeHP.Color = Color.Transparent;
569        Add(foeHP);
570
571        foeHP.BindTo(snekHP);
572        Add(foeHP, 2);
573    }
574
575    void Voitit() //kun pelaaja voittaa kaikki pahikset
576    {
577        pelaajatoiminut = true;
578        foeHP.Destroy();
579        voitto = new GameObject(1800.00, 700.00);
580        voitto.Shape = Shape.Rectangle;
581        voitto.Color = Color.Aqua;
582        voitto.X = -10.00;
583        voitto.Y = 200.00;
584        voitto.Image = LoadImage("voitto");
585        Add(voitto, 3);
586
587        Timer.SingleShot(10, Exit);
588    }
589
590    void Lose() //pelaajan häviö
591    {
592        pelaajatoiminut = true;
593        foeHP.Destroy();
594
595        tappio = new GameObject(Screen.Width, Screen.Height);
596        tappio.Shape = Shape.Rectangle;
597        tappio.Color = Color.Black;
598        tappio.Image = LoadImage("häviö");
599        Add(tappio, 3);
600
601    }
602}
603
Note: See TracBrowser for help on using the repository browser.