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

Revision 9156, 6.0 KB checked in by npo17_65, 2 years ago (diff)

hp palkit lisätty muttei toimi vielä kunnolla

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");
[9156]13
14    DoubleMeter elamaLaskuri;
[9155]15   
16         
[9128]17    PlasmaCannon HanninAse;
[9119]18    Cannon HoonAse;
[9128]19
[9155]20   
21
[9152]22   
[9128]23    PeliUkko Hanni;
24    PeliUkko Hoo;
[9098]25    public override void Begin()
26    {
[9149]27        AlkuValikko();
[9155]28     
[9098]29    }
30
31    void LuoPelaajat()
32    {
[9149]33        Hanni = new PeliUkko(80.0, 80.0);       
[9119]34        Hanni.X = Level.Left + 100.0;
[9098]35        Hanni.Y = 0.0;
36        Hanni.Shape = Shape.Circle;
37        Hanni.Color = Color.Blue;
[9118]38        Hanni.Image = HanninKuva;
[9128]39        Hanni.CanRotate = false;
[9141]40        Hanni.Tag = "pelaaja";
[9149]41        Add(Hanni);
[9125]42        HanninAse = new PlasmaCannon(60, 20);
[9111]43        HanninAse.ProjectileCollision = AmmusOsui;
[9118]44        HanninAse.X += 50;
[9125]45        Keyboard.Listen(Key.S, ButtonState.Pressed, AmmuAseella, "Ammu", HanninAse);
[9141]46        HanninAse.CanHitOwner = false;
[9128]47        Hanni.Weapon = HanninAse;
48        Hoo = new PeliUkko(100.0, 100.0);
[9141]49        Hoo.Tag = "pelaaja";
[9119]50        Hoo.X = Level.Right - 100.0;
[9098]51        Hoo.Y = 0.0;
52        Hoo.Shape = Shape.Circle;
53        Hoo.Color = Color.Red;
[9118]54        Hoo.Image = HoonKuva;
[9111]55        Hoo.CanRotate = false;
[9128]56        Add(Hoo);
57        HoonAse = new Cannon(90, 30);
[9141]58        HoonAse.ProjectileCollision = Ammus2Osui;
[9119]59        HoonAse.X += 80;
[9125]60        Hoo.Weapon = HoonAse;
61        Keyboard.Listen(Key.Down, ButtonState.Pressed, AmmuAseella2, "Ammu2", HoonAse);
[9141]62        HoonAse.CanHitOwner = false;
[9119]63        HoonAse.Power.DefaultValue = 20000;
[9125]64        AddCollisionHandler(Hoo, Hanni, Tormaa);
[9155]65
66        Hoo.Elamalaskuri.LowerLimit += LoppuValikko;
67        Hanni.Elamalaskuri.LowerLimit += LoppuValikko;
[9098]68    }
[9149]69
70    void AlkuValikko()
[9155]71    {
72        MediaPlayer.Play("taustamusiikki");
73        MediaPlayer.IsRepeating = true;
74        MultiSelectWindow alkuValikko = new MultiSelectWindow("Hanni vs. Hoo",
75        "Aloita peli", "Lopeta"); 
[9149]76        Level.Background.Color = Color.Gray;
77        Add(alkuValikko);
78        alkuValikko.AddItemHandler(0, AloitaPeli);
79        alkuValikko.AddItemHandler(1, Exit);
80
81
82    }
[9155]83    void LoppuValikko()
84    {
85        MultiSelectWindow loppuValikko = new MultiSelectWindow("Hanni vs. Hoo",
86       "Pelaa uudestaan", "Lopeta");
87        Level.Background.Color = Color.Gray;
88        Add(loppuValikko);
89        loppuValikko.AddItemHandler(0, AloitaPeli);
90        loppuValikko.AddItemHandler(1, Exit);
91    }
[9149]92
93    void AloitaPeli()
94    {
[9155]95        MediaPlayer.Stop();
[9149]96        ClearAll();
97        LuoKentta();
98        LuoPelaajat();
99        LuoNappaimet();
100    }
101
102
[9142]103    void Tormaa(PhysicsObject Tormaaja, PhysicsObject Kohde)
[9149]104    {
[9142]105        if (Kohde.Tag != "pelaaja") return;
106        PeliUkko pu = (PeliUkko)Kohde;
107        pu.Elamalaskuri.AddValue(-1);
[9125]108    }
[9111]109
110    void AmmusOsui(PhysicsObject Ammus, PhysicsObject Kohde)
111    {
[9119]112        Ammus.Destroy();
[9141]113        if (Kohde.Tag != "pelaaja") return;
114        PeliUkko pu = (PeliUkko)Kohde;
[9149]115        pu.Elamalaskuri.AddValue(-4);
116
[9111]117    }
[9149]118    void Ammus2Osui(PhysicsObject Ammus2, PhysicsObject Kohde2)
[9141]119    {
120        Ammus2.Destroy();
[9149]121        if (Kohde2.Tag != "pelaaja") return;
122        PeliUkko pu = (PeliUkko)Kohde2;
123        pu.Elamalaskuri.AddValue(-7);
[9141]124    }
125
[9098]126    void LuoNappaimet()
127    {
[9125]128        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppy, null, Hanni, 1000.0);
[9128]129        Keyboard.Listen(Key.D, ButtonState.Down, Kavely, null, Hanni, 500.0);
[9125]130        Keyboard.Listen(Key.A, ButtonState.Down, Kavely, null, Hanni, -500.0);
131        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppy, null, Hoo, 1000.0);
[9149]132        Keyboard.Listen(Key.Right, ButtonState.Down, Kavely, null, Hoo, 250.0);
133        Keyboard.Listen(Key.Left, ButtonState.Down, Kavely, null, Hoo, -250.0);
[9098]134        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
135
136    }
137    void LuoKentta()
138    {
[9128]139        Gravity = new Vector(0.0, -800.0);
140        Camera.Zoom(1.2);
[9149]141        Level.Background.Color = Color.Purple;
142        PhysicsObject AlaReuna = Level.CreateBottomBorder(0.0, true);
143        PhysicsObject OikeaReuna = Level.CreateRightBorder(0.0, true);
144        PhysicsObject VasenReuna = Level.CreateLeftBorder(0.0, true);
145        PhysicsObject YläReuna = Level.CreateTopBorder(0.0, true);
[9098]146    }
147
148
149
[9141]150    void Kavely(PeliUkko tyyppi, double liikkumisenMaara)
[9098]151    {
[9128]152
[9125]153        tyyppi.Walk(liikkumisenMaara);
[9098]154
155    }
[9141]156    void Hyppy(PeliUkko tyyppi, double hypynMaara)
[9118]157    {
[9125]158        tyyppi.Jump(hypynMaara);
[9118]159    }
[9098]160
[9125]161    void AmmuAseella(PlasmaCannon HanninAse)
[9111]162    {
[9128]163        PhysicsObject Ammus = HanninAse.Shoot();
[9125]164        HanninAse.FireRate = 2;
[9118]165        if (Ammus != null)
[9111]166        {
[9118]167            Ammus.Size *= 3;
168            Ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
[9111]169        }
170    }
[9098]171
[9119]172    void AmmuAseella2(Cannon HoonAse)
173    {
174        PhysicsObject Ammus = HoonAse.Shoot();
[9125]175        HoonAse.FireRate = 1;
[9119]176        if (Ammus != null)
177        {
178            Ammus.Size *= 4;
179            Ammus.MaximumLifetime = TimeSpan.FromSeconds(4.0);
180        }
[9111]181
[9125]182    }
[9111]183
184
185
186
187
[9128]188
189
[9149]190    class PeliUkko : PlatformCharacter
191    {
192        public IntMeter Elamalaskuri = new IntMeter(40, 0, 40);
193
[9128]194        public PeliUkko(double leveys, double korkeus)
195        : base(leveys, korkeus)
[9149]196        {
[9155]197            Elamalaskuri.LowerLimit += delegate { this.Destroy();};
198           
199
[9149]200        }
[9155]201       
[9149]202    }
[9156]203    void LuoElamaLaskuri()
204    {
205        elamaLaskuri = new DoubleMeter(10);
206        elamaLaskuri.MaxValue = 10;
207        elamaLaskuri.LowerLimit += ElamaLoppui;
[9149]208
[9156]209        ProgressBar elamaPalkki = new ProgressBar(150, 20);
210        elamaPalkki.X = Screen.Left + 150;
211        elamaPalkki.Y = Screen.Top - 20;
212        elamaPalkki.BindTo(elamaLaskuri);
213        Add(elamaPalkki);
214    }
215    void ElamaLoppui()
216    {
217        MessageDisplay.Add("Elämät loppuivat, voi voi.");
218    }
[9149]219
[9156]220
[9098]221}
[9125]222
223
[9149]224
225
226
Note: See TracBrowser for help on using the repository browser.