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

Revision 9230, 8.4 KB checked in by npo17_65, 2 years ago (diff)

Xbox controller works

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