source: 2016/30/LauriT/FysiikkaPeli1/FysiikkaPeli1/FysiikkaPeli1/FysiikkaPeli1.cs @ 8232

Revision 8232, 8.6 KB checked in by laturune, 3 years ago (diff)

peli valmis

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9class charma : PlatformCharacter
10{
11   public AssaultRifle charmaase;
12    private IntMeter elamaLaskuri = new IntMeter(3, 0, 100);
13   
14    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
15
16    public charma(double leveys, double korkeus)
17        : base(leveys, korkeus)
18    {
19        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
20    }
21}
22
23
24class Pika : PlatformCharacter
25{
26    public int Elamat { get; set; }
27    public double Firerate = 7;
28    public Timer KranaattiAjastin = new Timer();
29    private bool voiheittaa = true;
30    private IntMeter elamaLaskuri1 = new IntMeter(3, 0, 100);
31    public IntMeter ElamaLaskuri { get { return elamaLaskuri1; } }
32
33    public Pika(double X, double Y)
34        : base(X, Y)
35    {
36        Elamat = 3;
37
38
39        elamaLaskuri1.LowerLimit += delegate { this.Destroy(); };
40    }
41
42    public Grenade HeitaKranaatti()
43    {
44
45        if (voiheittaa)
46        {
47            Grenade kranu = new Grenade(10.0);
48            KranaattiAjastin.Interval = Firerate;
49            KranaattiAjastin.Start(1);
50            KranaattiAjastin.Timeout += delegate { voiheittaa = true; };
51            voiheittaa = false;
52
53            return kranu;
54        }
55        else
56        {
57            return null;
58        }
59
60    }
61}
62public class FysiikkaPeli1 : PhysicsGame
63{
64
65    Image fire = LoadImage("fire");
66    Image kranukuva = LoadImage("thunder");
67    Image electrokuva = LoadImage("electro");
68
69    charma charmander;
70    Pika pikachu = new Pika(100, 200);
71    Image pikaKuva = LoadImage("Pikachu2");
72    Image charmand = LoadImage("charma");
73    Image taustaKuva = LoadImage("peliareena");
74    Image fireb1 = LoadImage("fireb");
75    public override void Begin()
76    {
77
78
79
80
81        Camera.Zoom(1.7);
82       
83        Level.CreateBorders(false);
84        MediaPlayer.Play("battle");
85
86        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
87        "Aloita peli", "Lopeta");
88        alkuValikko.AddItemHandler(0, AloitaPeli);
89        alkuValikko.AddItemHandler(1, Exit);
90
91        Add(alkuValikko);
92
93        Surface alaReuna = Surface.CreateBottom(Level);
94        alaReuna.X = 0;
95        alaReuna.Y = -374;
96        Add(alaReuna);
97
98        Gravity = new Vector(0.0, -800.0);
99
100        pikachu = new Pika(100, 200);
101        pikachu.Image = Image.Mirror(pikaKuva);
102        pikachu.Shape = Shape.FromImage(pikaKuva);
103        pikachu.Mass = 0.1;
104        pikachu.X = 400;
105        pikachu.Y = -190;
106        pikachu.CanRotate = false;
107        pikachu.Weapon = new AssaultRifle(0.01, 0.01);
108        pikachu.Weapon.Ammo.Value = 10000;
109        pikachu.Weapon.ProjectileCollision = delegate (PhysicsObject a, PhysicsObject b) { AmmusOsui(a, b, 3); }; ;
110        pikachu.ElamaLaskuri.Value = 300;
111        pikachu.Tag = "Pikachu";
112
113        Add(pikachu);
114        pikachu.Turn(Direction.Left);
115
116        ProgressBar elamapalkki1 = new ProgressBar(150, 20);
117        elamapalkki1.X = Screen.Right - 150;
118        elamapalkki1.Y = Screen.Top - 20;
119        elamapalkki1.BindTo(pikachu.ElamaLaskuri);
120        Add(elamapalkki1);
121
122        Keyboard.Listen(Key.Left, ButtonState.Down,
123   LiikutaPelaajaa, null, new Vector(-1000, 0), pikachu);
124        Keyboard.Listen(Key.Right, ButtonState.Down,
125          LiikutaPelaajaa, null, new Vector(1000, 0), pikachu);
126        Keyboard.Listen(Key.Up, ButtonState.Down,
127            hyppaa, null, new Vector(0, 100), pikachu);
128        Keyboard.Listen(Key.L, ButtonState.Pressed,
129        HeitaKranaatti, "heita", pikachu);
130        Keyboard.Listen(Key.K, ButtonState.Pressed,
131                    AmmuAseella, "ammu", pikachu);
132
133
134        charmander = new charma(100, 200);
135        charmander.Image = charmand;
136        charmander.Shape = Shape.FromImage(charmand);
137        charmander.Mass = 10.0;
138        charmander.X = -400;
139        charmander.Y = -190;
140        charmander.CanRotate = false;
141        charmander.Weapon = new AssaultRifle(0.01, 0.01);
142        charmander.Weapon.ProjectileCollision = delegate (PhysicsObject a, PhysicsObject b) { AmmusOsui(a, b, 3); };
143        charmander.Weapon.Ammo.Value = 10000;
144        charmander.ElamaLaskuri.Value = 300;
145
146        charmander.Tag = "Charmander";
147        charmander.Destroyed += delegate ()
148        {
149            Voitto(pikachu.Tag.ToString());
150        };
151       
152        charmander.charmaase = new AssaultRifle(0.01, 0.01);
153        charmander.charmaase.FireRate = 0.5;
154        charmander.charmaase.ProjectileCollision = delegate(PhysicsObject a, PhysicsObject b) { AmmusOsui(a, b, 5); };
155        charmander.Add(charmander.charmaase);
156
157       
158        Add(charmander);
159
160        pikachu.Destroyed += delegate ()
161        {
162            Voitto(charmander.Tag.ToString());
163        };
164
165        ProgressBar elamapalkki = new ProgressBar(150, 20);
166        elamapalkki.X = Screen.Left + 150;
167        elamapalkki.Y = Screen.Top - 20;
168        elamapalkki.BindTo(charmander.ElamaLaskuri);
169        Add(elamapalkki);
170
171        Keyboard.Listen(Key.A, ButtonState.Down,
172   LiikutaPelaajaa, null, new Vector(-1000, 0), charmander);
173        Keyboard.Listen(Key.D, ButtonState.Down,
174          LiikutaPelaajaa, null, new Vector(1000, 0), charmander);
175        Keyboard.Listen(Key.W, ButtonState.Down,
176          hyppaa, null, new Vector(0, 100), charmander);
177        Keyboard.Listen(Key.G, ButtonState.Pressed, AmmuAseellacharmander, "ammu", charmander);
178        Keyboard.Listen(Key.F, ButtonState.Down, AmmuEmber, "Ammu1", charmander);
179
180        Level.Background.Image = taustaKuva;
181
182        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
183
184    }
185    void AloitaPeli()
186    {
187        Label tekstikentta = new Label(1000.0, 500.0, "FIGHT!");
188        tekstikentta.X = -100;
189
190        tekstikentta.TextScale = new Vector(4, 3);
191        tekstikentta.MaximumLifetime = TimeSpan.FromSeconds(5);
192
193        tekstikentta.TextColor = Color.Red;
194        Add(tekstikentta);
195    }
196    void LopetaPeli()
197    {
198
199    }
200    void ElamaLoppui()
201    {
202        MessageDisplay.Add("you're dead");
203    }
204    void LiikutaPelaajaa(Vector vektori, PlatformCharacter poke)
205    {
206        poke.Walk(vektori.X);
207    }
208    void hyppaa(Vector vektori, PlatformCharacter poke)
209    {
210        poke.Jump(vektori.Y);
211    }
212
213    void AmmusOsui1(PhysicsObject ammus, PhysicsObject kohde)
214    {
215       
216    }
217
218
219
220    void HeitaKranaatti(Pika pikachu)
221    {
222        Grenade kranu = pikachu.HeitaKranaatti();
223        if (kranu != null)
224        {
225            kranu.Image = kranukuva;
226            pikachu.Throw(kranu, Angle.FromDegrees(01), 10000);
227            kranu.Explosion.ShockwaveReachesObject += KranaattiOsui;
228            MessageDisplay.Add("Pikachu used Thunderbolt");
229            kranu.Restitution = 0.0;
230            kranu.IgnoresGravity = true;
231        }
232
233
234    }
235    void KranaattiOsui(IPhysicsObject rajahdyksenKohde, Vector v)
236    {
237        //rajahdyksenKohde.Destroy();
238        if (rajahdyksenKohde.Tag.Equals("Charmander"))
239        {
240            (rajahdyksenKohde as charma).ElamaLaskuri.Value -= 10;
241        }
242    }
243
244    void AmmuAseella(PlatformCharacter pikachu)
245    {
246
247        PhysicsObject ammus = pikachu.Weapon.Shoot();
248        if (ammus != null)
249        {
250            ammus.Image = electrokuva;
251
252        }
253
254    }
255
256    void AmmuEmber(charma charmander)
257    {
258        PhysicsObject ammus1 = charmander.charmaase.Shoot();
259
260        if (ammus1 != null)
261        {
262            ammus1.Image = fireb1;
263            ammus1.Size *= 10;
264        }
265    }
266
267    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde, int vahinko)
268    {
269        ammus.Destroy();
270
271        if (kohde.Tag.Equals("Charmander"))
272        {
273            (kohde as charma).ElamaLaskuri.Value -= vahinko;
274        }
275        if (kohde.Tag.Equals("Pikachu"))
276        {
277            (kohde as Pika).ElamaLaskuri.Value -= vahinko;
278        }
279
280    }
281    void AmmuAseellacharmander(charma charmander)
282    {
283        PhysicsObject ammus1 = charmander.Weapon.Shoot();
284
285        if (ammus1 != null)
286        {
287            ammus1.Image = fire;
288        }
289    }
290   
291
292
293       
294   
295
296   
297    void Voitto(String voittajannimi)
298    {
299        Label tekstikentta = new Label(voittajannimi + " wins!");
300        tekstikentta.TextScale = new Vector(4, 3);
301        tekstikentta.Color = Color.Blue;
302        Add(tekstikentta);
303        Timer.SingleShot(5, Exit);
304    }
305   
306   
307}
Note: See TracBrowser for help on using the repository browser.