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

Revision 9189, 7.4 KB checked in by npo17_65, 2 years ago (diff)

Musa toimii

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