source: 2017/30/HugoE/HanniAndHoo/HanniAndHoo/HanniAndHoo/HanniAndHoo.cs @ 9152

Revision 9152, 5.2 KB checked in by npo17_65, 2 years ago (diff)
RevLine 
[9098]1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class HanniAndHoo : PhysicsGame
10{
[9128]11    Image HanninKuva = LoadImage("Hanni");
12    Image HoonKuva = LoadImage("Hoo");
[9098]13
[9152]14     
[9128]15    PlasmaCannon HanninAse;
[9119]16    Cannon HoonAse;
[9128]17
[9152]18   
[9128]19    PeliUkko Hanni;
20    PeliUkko Hoo;
[9098]21    public override void Begin()
22    {
[9149]23        AlkuValikko();
[9098]24    }
25
26    void LuoPelaajat()
27    {
[9149]28        Hanni = new PeliUkko(80.0, 80.0);       
[9119]29        Hanni.X = Level.Left + 100.0;
[9098]30        Hanni.Y = 0.0;
31        Hanni.Shape = Shape.Circle;
32        Hanni.Color = Color.Blue;
[9118]33        Hanni.Image = HanninKuva;
[9128]34        Hanni.CanRotate = false;
[9141]35        Hanni.Tag = "pelaaja";
[9149]36        Add(Hanni);
[9125]37        HanninAse = new PlasmaCannon(60, 20);
[9111]38        HanninAse.ProjectileCollision = AmmusOsui;
[9118]39        HanninAse.X += 50;
[9125]40        Keyboard.Listen(Key.S, ButtonState.Pressed, AmmuAseella, "Ammu", HanninAse);
[9141]41        HanninAse.CanHitOwner = false;
[9128]42        Hanni.Weapon = HanninAse;
43        Hoo = new PeliUkko(100.0, 100.0);
[9141]44        Hoo.Tag = "pelaaja";
[9119]45        Hoo.X = Level.Right - 100.0;
[9098]46        Hoo.Y = 0.0;
47        Hoo.Shape = Shape.Circle;
48        Hoo.Color = Color.Red;
[9118]49        Hoo.Image = HoonKuva;
[9111]50        Hoo.CanRotate = false;
[9128]51        Add(Hoo);
52        HoonAse = new Cannon(90, 30);
[9141]53        HoonAse.ProjectileCollision = Ammus2Osui;
[9119]54        HoonAse.X += 80;
[9125]55        Hoo.Weapon = HoonAse;
56        Keyboard.Listen(Key.Down, ButtonState.Pressed, AmmuAseella2, "Ammu2", HoonAse);
[9141]57        HoonAse.CanHitOwner = false;
[9119]58        HoonAse.Power.DefaultValue = 20000;
[9125]59        AddCollisionHandler(Hoo, Hanni, Tormaa);
[9098]60    }
[9149]61
62    void AlkuValikko()
[9152]63    { 
[9149]64        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
65        "Aloita peli", "Lopeta");
66        Level.Background.Color = Color.Gray;
67        Add(alkuValikko);
68        alkuValikko.AddItemHandler(0, AloitaPeli);
69        alkuValikko.AddItemHandler(1, Exit);
70
71
72    }
73
74    void AloitaPeli()
75    {
76        ClearAll();
77        LuoKentta();
78        LuoPelaajat();
79        LuoNappaimet();
80    }
81
82
[9142]83    void Tormaa(PhysicsObject Tormaaja, PhysicsObject Kohde)
[9149]84    {
[9142]85        if (Kohde.Tag != "pelaaja") return;
86        PeliUkko pu = (PeliUkko)Kohde;
87        pu.Elamalaskuri.AddValue(-1);
[9125]88    }
[9111]89
90    void AmmusOsui(PhysicsObject Ammus, PhysicsObject Kohde)
91    {
[9119]92        Ammus.Destroy();
[9141]93        if (Kohde.Tag != "pelaaja") return;
94        PeliUkko pu = (PeliUkko)Kohde;
[9149]95        pu.Elamalaskuri.AddValue(-4);
96
[9111]97    }
[9149]98    void Ammus2Osui(PhysicsObject Ammus2, PhysicsObject Kohde2)
[9141]99    {
100        Ammus2.Destroy();
[9149]101        if (Kohde2.Tag != "pelaaja") return;
102        PeliUkko pu = (PeliUkko)Kohde2;
103        pu.Elamalaskuri.AddValue(-7);
[9141]104    }
105
[9098]106    void LuoNappaimet()
107    {
[9125]108        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppy, null, Hanni, 1000.0);
[9128]109        Keyboard.Listen(Key.D, ButtonState.Down, Kavely, null, Hanni, 500.0);
[9125]110        Keyboard.Listen(Key.A, ButtonState.Down, Kavely, null, Hanni, -500.0);
111        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppy, null, Hoo, 1000.0);
[9149]112        Keyboard.Listen(Key.Right, ButtonState.Down, Kavely, null, Hoo, 250.0);
113        Keyboard.Listen(Key.Left, ButtonState.Down, Kavely, null, Hoo, -250.0);
[9098]114        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
115
116    }
117    void LuoKentta()
118    {
[9152]119        MediaPlayer.PlayFromURL("http://www.beepbox.com/#5sbkbl00e01t7m0a7g0fj7i0r1w1111f0000d1111c0000h0000v0000o3210b4h4h4h4h4h4i4x8i4x8i4x4h4h4h4h4h4h4h4h4h4h4p1BINOCVf1FzTkeIcA6UcDi0gFzQewt0W1Q30000");
120        MediaPlayer.IsRepeating = true;
[9128]121        Gravity = new Vector(0.0, -800.0);
122        Camera.Zoom(1.2);
[9149]123        Level.Background.Color = Color.Purple;
124        PhysicsObject AlaReuna = Level.CreateBottomBorder(0.0, true);
125        PhysicsObject OikeaReuna = Level.CreateRightBorder(0.0, true);
126        PhysicsObject VasenReuna = Level.CreateLeftBorder(0.0, true);
127        PhysicsObject YläReuna = Level.CreateTopBorder(0.0, true);
[9098]128    }
129
130
131
[9141]132    void Kavely(PeliUkko tyyppi, double liikkumisenMaara)
[9098]133    {
[9128]134
[9125]135        tyyppi.Walk(liikkumisenMaara);
[9098]136
137    }
[9141]138    void Hyppy(PeliUkko tyyppi, double hypynMaara)
[9118]139    {
[9125]140        tyyppi.Jump(hypynMaara);
[9118]141    }
[9098]142
[9125]143    void AmmuAseella(PlasmaCannon HanninAse)
[9111]144    {
[9128]145        PhysicsObject Ammus = HanninAse.Shoot();
[9125]146        HanninAse.FireRate = 2;
[9118]147        if (Ammus != null)
[9111]148        {
[9118]149            Ammus.Size *= 3;
150            Ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
[9111]151        }
152    }
[9098]153
[9119]154    void AmmuAseella2(Cannon HoonAse)
155    {
156        PhysicsObject Ammus = HoonAse.Shoot();
[9125]157        HoonAse.FireRate = 1;
[9119]158        if (Ammus != null)
159        {
160            Ammus.Size *= 4;
161            Ammus.MaximumLifetime = TimeSpan.FromSeconds(4.0);
162        }
[9111]163
[9125]164    }
[9111]165
166
167
168
169
[9128]170
171
[9149]172    class PeliUkko : PlatformCharacter
173    {
174        public IntMeter Elamalaskuri = new IntMeter(40, 0, 40);
175
[9128]176        public PeliUkko(double leveys, double korkeus)
177        : base(leveys, korkeus)
[9149]178        {
179            Elamalaskuri.LowerLimit += delegate { this.Destroy(); };
180        }
181    }
182
183
[9098]184}
[9125]185
186
[9149]187
188
189
Note: See TracBrowser for help on using the repository browser.