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

Revision 9237, 8.7 KB checked in by npo17_65, 6 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 HanniAndHoo : PhysicsGame
10{
11    Image HanninKuva = LoadImage("Hanni");
12    Image HoonKuva = LoadImage("Hoo");
13    Image taustis = LoadImage("sky1");
14    Image taustis2 = LoadImage("Space");
15
16     
17    PlasmaCannon HanninAse;
18    Cannon HoonAse;
19
20    SoundEffect hyppyAani = LoadSoundEffect("jump");
21
22   
23
24   
25    PeliUkko Hanni;
26    PeliUkko Hoo;
27    public override void Begin()
28    {
29        AlkuValikko();
30        IsFullScreen = true;
31       
32
33    }
34
35    void LuoPelaajat()
36    {
37        Hanni = new PeliUkko(80.0, 80.0);       
38        Hanni.X = Level.Left + 100.0;
39        Hanni.Y = 0.0;
40        Hanni.Shape = Shape.Circle;
41        Hanni.Color = Color.Blue;
42        Hanni.Image = HanninKuva;
43        Hanni.CanRotate = false;
44        Hanni.Tag = "pelaaja";
45        Add(Hanni);
46        HanninAse = new PlasmaCannon(60, 20);       
47        HanninAse.ProjectileCollision = AmmusOsui;
48        HanninAse.X += 50;
49        Keyboard.Listen(Key.S, ButtonState.Pressed, AmmuAseella, "Ammu", HanninAse);
50        ControllerOne.Listen(Button.RightTrigger, ButtonState.Pressed, AmmuAseella, "Ammu", HanninAse);
51        HanninAse.CanHitOwner = false;
52        Hanni.Weapon = HanninAse;
53        Hoo = new PeliUkko(100.0, 100.0);
54        Hoo.Tag = "pelaaja2";
55        Hoo.X = Level.Right - 100.0;
56        Hoo.Y = 0.0;
57        Hoo.Shape = Shape.Circle;
58        Hoo.Color = Color.Red;
59        Hoo.Image = HoonKuva;
60        Hoo.CanRotate = false;
61        Add(Hoo);
62        HoonAse = new Cannon(90, 30);
63        HoonAse.ProjectileCollision = Ammus2Osui;
64        HoonAse.X += 80;
65        Hoo.Weapon = HoonAse;
66        Keyboard.Listen(Key.Down, ButtonState.Pressed, AmmuAseella2, "Ammu2", HoonAse);
67        ControllerTwo.Listen(Button.RightTrigger, ButtonState.Pressed, AmmuAseella2, "Ammu", HoonAse);
68        HoonAse.CanHitOwner = false;
69        HoonAse.Power.DefaultValue = 25000;
70        HoonAse.Power.Value = HoonAse.Power.DefaultValue;
71        AddCollisionHandler(Hanni, "AlaReuna", ResattaaHyppyLaskuri);
72        AddCollisionHandler(Hoo, "Alareuna", ResattaaHyppyLaskuri);
73        AddCollisionHandler(Hanni, Hoo, ResattaaHyppyLaskuri);
74        AddCollisionHandler(Hoo, Hanni, Tormaa);
75        Hoo.Elamalaskuri.LowerLimit += LoppuValikko;
76        Hanni.Elamalaskuri.LowerLimit += LoppuValikko;       
77    }
78
79    void AlkuValikko()
80    {       
81        MediaPlayer.Play("taustamusiikki");
82        MediaPlayer.IsRepeating = true;
83        MultiSelectWindow alkuValikko = new MultiSelectWindow("Hanni vs. Hoo",
84        "Aloita peli", "Lopeta"); 
85        Level.Background.Color = Color.Black;
86        Add(alkuValikko);
87        alkuValikko.AddItemHandler(0, AloitaPeli);
88        alkuValikko.AddItemHandler(1, Exit);
89
90
91    }
92    void LoppuValikko()
93    {
94        MediaPlayer.Stop();
95        MultiSelectWindow loppuValikko = new MultiSelectWindow("Hanni vs. Hoo",
96       "Pelaa uudestaan", "Lopeta");
97        Level.Background.Color = Color.Black;
98        Add(loppuValikko);
99        loppuValikko.AddItemHandler(0, AloitaPeli);
100        loppuValikko.AddItemHandler(1, Exit);
101    }
102
103    void AloitaPeli()
104    {
105        MediaPlayer.Stop();
106        ClearAll();
107        LuoKentta();
108        LuoPelaajat();
109        LuoNappaimet();
110       
111    }
112
113
114    void Tormaa(PhysicsObject Tormaaja, PhysicsObject Kohde)
115    {
116        if (!Kohde.Tag.Equals("pelaaja")) return;
117        PeliUkko pu = (PeliUkko)Kohde;
118        pu.Elamalaskuri.AddValue(-1);
119        PeliUkko pu2 = (PeliUkko)Tormaaja;
120        pu2.Elamalaskuri.AddValue(1);
121       
122    }
123
124    void AmmusOsui(PhysicsObject Ammus, PhysicsObject Kohde)
125    {
126        Ammus.Destroy();
127        if (!Kohde.Tag.Equals("pelaaja2")) return;
128        PeliUkko pu = (PeliUkko)Kohde;
129       
130        pu.Elamalaskuri.AddValue(-5);
131        if (Ammus.Tag.Equals("PelaajanAmmus"))
132        {
133           Hanni.Elamalaskuri.AddValue(1);
134        }
135       
136
137    }
138    void Ammus2Osui(PhysicsObject Ammus2, PhysicsObject Kohde2)
139    {     
140        Ammus2.Destroy();
141        if (!Kohde2.Tag.Equals("pelaaja")) return;
142        PeliUkko pu = (PeliUkko)Kohde2;
143        pu.Elamalaskuri.AddValue(-7);
144
145
146    }
147
148    void LuoNappaimet()
149    {
150        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppy, null, Hanni, 1000.0);
151        Keyboard.Listen(Key.D, ButtonState.Down, Kavely, null, Hanni, 500.0);
152        Keyboard.Listen(Key.A, ButtonState.Down, Kavely, null, Hanni, -500.0);
153        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppy, null, Hoo, 1000.0);
154        Keyboard.Listen(Key.Right, ButtonState.Down, Kavely, null, Hoo, 250.0);
155        Keyboard.Listen(Key.Left, ButtonState.Down, Kavely, null, Hoo, -250.0);
156
157
158        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
159
160
161        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppy, null, Hanni, 1000.0);
162        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Kavely, null, Hanni, 500.0);
163        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Kavely, null, Hanni, -500.0);
164
165
166        ControllerTwo.Listen(Button.A, ButtonState.Down, Hyppy, null, Hoo, 500.0);
167        ControllerTwo.Listen(Button.DPadRight, ButtonState.Down, Kavely, null, Hoo, 500.0);
168        ControllerTwo.Listen(Button.DPadLeft, ButtonState.Down, Kavely, null, Hoo, -500.0);       
169    }
170    void LuoKentta()
171    {
172        MediaPlayer.Stop();
173        MediaPlayer.Volume = 0.2;
174        MediaPlayer.Play("TaistelumusaEhdokas2");
175        MediaPlayer.IsRepeating = true;
176        Level.Background.Color = Color.Gray;       
177        Level.Width = Screen.Width;
178        Level.Height = Screen.Height;
179        Level.Background.Image = taustis;
180        Level.Background.ScaleToLevelByWidth();
181        Gravity = new Vector(0.0, -800.0);       
182        PhysicsObject AlaReuna = Level.CreateBottomBorder(0.0, true);
183        AlaReuna.Tag = "AlaReuna";
184        PhysicsObject OikeaReuna = Level.CreateRightBorder(1.0, true);
185        OikeaReuna.Tag = "OikeaReuna";
186        PhysicsObject VasenReuna = Level.CreateLeftBorder(1.0, true);
187        VasenReuna.Tag = "VasenReuna";
188        PhysicsObject YlaReuna = Level.CreateTopBorder(0.0, true);
189        YlaReuna.Tag = "YlaReuna";
190    }
191
192
193
194    void Kavely(PeliUkko tyyppi, double liikkumisenMaara)
195    {
196
197        tyyppi.Walk(liikkumisenMaara);
198
199    }
200    void Hyppy(PeliUkko tyyppi, double hypynMaara)
201    {
202        if (tyyppi.Tag.Equals("pelaaja"))
203        {           
204            if (tyyppi.HyppyLaskuri.Value == tyyppi.HyppyLaskuri.MaxValue)
205            {
206               
207                return;               
208            }
209
210            tyyppi.ForceJump(hypynMaara);
211            hyppyAani.Play();
212        }
213        else
214        {           
215            bool onnistuikoHyppy = tyyppi.Jump(hypynMaara);
216            if (onnistuikoHyppy)
217            {
218                hyppyAani.Play();
219            }
220        }                     
221        tyyppi.HyppyLaskuri.AddValue(1);
222     
223    }
224
225    void ResattaaHyppyLaskuri(PhysicsObject tyyppi, PhysicsObject lattia)
226    {
227        if (lattia.Y > tyyppi.Y)
228        {
229            return;
230        }
231        (tyyppi as PeliUkko).HyppyLaskuri.Value = 0;
232    }
233
234
235
236    void AmmuAseella(PlasmaCannon HanninAse)
237    {
238        PhysicsObject Ammus = HanninAse.Shoot();       
239        HanninAse.FireRate = 2.5;
240        if (Ammus != null)
241        {
242            Ammus.Size *= 3;
243            Ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
244            Ammus.Tag = "PelaajanAmmus";
245        }
246    }
247
248    void AmmuAseella2(Cannon HoonAse)
249    {
250        PhysicsObject Ammus2 = HoonAse.Shoot();
251        HoonAse.FireRate = 1.5;
252        if (Ammus2 != null)
253        {
254            Ammus2.Size *= 4;
255            Ammus2.MaximumLifetime = TimeSpan.FromSeconds(4.0);
256            Ammus2.Tag = "Pelaajan2Ammus";
257
258        }
259
260    }
261
262    class PeliUkko : PlatformCharacter
263    {
264        public IntMeter Elamalaskuri = new IntMeter(40, 0, 40);
265        public IntMeter HyppyLaskuri = new IntMeter(0, 0, 2);
266
267        public PeliUkko(double leveys, double korkeus)
268        : base(leveys, korkeus)
269        {
270            Elamalaskuri.LowerLimit += delegate { this.Destroy();};
271            ProgressBar elamaPalkki = new ProgressBar(50, 20);
272            elamaPalkki.Color = Color.Gray;
273            elamaPalkki.X = 0.0;
274            elamaPalkki.Y = korkeus / 2.0 + korkeus / 4;
275            elamaPalkki.BindTo(Elamalaskuri);
276            Add(elamaPalkki);
277        }
278       
279    }   
280   
281   
282
283
284}
285
286
287
288
289
Note: See TracBrowser for help on using the repository browser.