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

Revision 9149, 4.9 KB checked in by npo17_65, 23 months ago (diff)

Alkuvalikko

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