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

Revision 8217, 8.5 KB checked in by laturune, 4 years ago (diff)

pokefight melkein 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        IsFullScreen = true;
83        Level.CreateBorders(false);
84
85        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
86        "Aloita peli", "Lopeta");
87        alkuValikko.AddItemHandler(0, AloitaPeli);
88        alkuValikko.AddItemHandler(1, Exit);
89
90        Add(alkuValikko);
91
92        Surface alaReuna = Surface.CreateBottom(Level);
93        alaReuna.X = 0;
94        alaReuna.Y = -374;
95        Add(alaReuna);
96
97        Gravity = new Vector(0.0, -800.0);
98
99        pikachu = new Pika(100, 200);
100        pikachu.Image = Image.Mirror(pikaKuva);
101        pikachu.Shape = Shape.FromImage(pikaKuva);
102        pikachu.Mass = 0.1;
103        pikachu.X = 400;
104        pikachu.Y = -190;
105        pikachu.CanRotate = false;
106        pikachu.Weapon = new AssaultRifle(0.01, 0.01);
107        pikachu.Weapon.Ammo.Value = 10000;
108        pikachu.Weapon.ProjectileCollision = delegate (PhysicsObject a, PhysicsObject b) { AmmusOsui(a, b, 3); }; ;
109        pikachu.ElamaLaskuri.Value = 300;
110        pikachu.Tag = "Pikachu";
111
112        Add(pikachu);
113        pikachu.Turn(Direction.Left);
114
115        ProgressBar elamapalkki1 = new ProgressBar(150, 20);
116        elamapalkki1.X = Screen.Right - 150;
117        elamapalkki1.Y = Screen.Top - 20;
118        elamapalkki1.BindTo(pikachu.ElamaLaskuri);
119        Add(elamapalkki1);
120
121        Keyboard.Listen(Key.Left, ButtonState.Down,
122   LiikutaPelaajaa, null, new Vector(-1000, 0), pikachu);
123        Keyboard.Listen(Key.Right, ButtonState.Down,
124          LiikutaPelaajaa, null, new Vector(1000, 0), pikachu);
125        Keyboard.Listen(Key.Up, ButtonState.Down,
126            hyppaa, null, new Vector(0, 100), pikachu);
127        Keyboard.Listen(Key.L, ButtonState.Pressed,
128        HeitaKranaatti, "heita", pikachu);
129        Keyboard.Listen(Key.K, ButtonState.Pressed,
130                    AmmuAseella, "ammu", pikachu);
131
132
133        charmander = new charma(100, 200);
134        charmander.Image = charmand;
135        charmander.Shape = Shape.FromImage(charmand);
136        charmander.Mass = 10.0;
137        charmander.X = -400;
138        charmander.Y = -190;
139        charmander.CanRotate = false;
140        charmander.Weapon = new AssaultRifle(0.01, 0.01);
141        charmander.Weapon.ProjectileCollision = delegate (PhysicsObject a, PhysicsObject b) { AmmusOsui(a, b, 3); };
142        charmander.Weapon.Ammo.Value = 10000;
143        charmander.ElamaLaskuri.Value = 300;
144
145        charmander.Tag = "Charmander";
146        charmander.Destroyed += delegate ()
147        {
148            Voitto(pikachu.Tag.ToString());
149        };
150       
151        charmander.charmaase = new AssaultRifle(0.01, 0.01);
152        charmander.charmaase.FireRate = 0.25;
153        charmander.charmaase.ProjectileCollision = delegate(PhysicsObject a, PhysicsObject b) { AmmusOsui(a, b, 5); };
154        charmander.Add(charmander.charmaase);
155
156       
157        Add(charmander);
158
159        pikachu.Destroyed += delegate ()
160        {
161            Voitto(charmander.Tag.ToString());
162        };
163
164        ProgressBar elamapalkki = new ProgressBar(150, 20);
165        elamapalkki.X = Screen.Left + 150;
166        elamapalkki.Y = Screen.Top - 20;
167        elamapalkki.BindTo(charmander.ElamaLaskuri);
168        Add(elamapalkki);
169
170        Keyboard.Listen(Key.A, ButtonState.Down,
171   LiikutaPelaajaa, null, new Vector(-1000, 0), charmander);
172        Keyboard.Listen(Key.D, ButtonState.Down,
173          LiikutaPelaajaa, null, new Vector(1000, 0), charmander);
174        Keyboard.Listen(Key.W, ButtonState.Down,
175          hyppaa, null, new Vector(0, 100), charmander);
176        Keyboard.Listen(Key.G, ButtonState.Pressed, AmmuAseellacharmander, "ammu", charmander);
177        Keyboard.Listen(Key.F, ButtonState.Down, AmmuEmber, "Ammu1", charmander);
178
179        Level.Background.Image = taustaKuva;
180
181        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
182
183    }
184    void AloitaPeli()
185    {
186        Label tekstikentta = new Label(1000.0, 500.0, "FIGHT!");
187        tekstikentta.X = -100;
188
189        tekstikentta.TextScale = new Vector(4, 3);
190        tekstikentta.MaximumLifetime = TimeSpan.FromSeconds(5);
191
192        tekstikentta.TextColor = Color.Red;
193        Add(tekstikentta);
194    }
195    void LopetaPeli()
196    {
197
198    }
199    void ElamaLoppui()
200    {
201        MessageDisplay.Add("you're dead");
202    }
203    void LiikutaPelaajaa(Vector vektori, PlatformCharacter poke)
204    {
205        poke.Walk(vektori.X);
206    }
207    void hyppaa(Vector vektori, PlatformCharacter poke)
208    {
209        poke.Jump(vektori.Y);
210    }
211
212    void AmmusOsui1(PhysicsObject ammus, PhysicsObject kohde)
213    {
214       
215    }
216
217
218
219    void HeitaKranaatti(Pika pikachu)
220    {
221        Grenade kranu = pikachu.HeitaKranaatti();
222        if (kranu != null)
223        {
224            kranu.Image = kranukuva;
225            pikachu.Throw(kranu, Angle.FromDegrees(01), 10000);
226            kranu.Explosion.ShockwaveReachesObject += KranaattiOsui;
227            MessageDisplay.Add("Pikachu used Thunderbolt");
228            kranu.Restitution = 0.0;
229            kranu.IgnoresGravity = true;
230        }
231
232
233    }
234    void KranaattiOsui(IPhysicsObject rajahdyksenKohde, Vector v)
235    {
236        //rajahdyksenKohde.Destroy();
237        if (rajahdyksenKohde.Tag.Equals("Charmander"))
238        {
239            (rajahdyksenKohde as charma).ElamaLaskuri.Value -= 10;
240        }
241    }
242
243    void AmmuAseella(PlatformCharacter pikachu)
244    {
245
246        PhysicsObject ammus = pikachu.Weapon.Shoot();
247        if (ammus != null)
248        {
249            ammus.Image = electrokuva;
250
251        }
252
253    }
254
255    void AmmuEmber(charma charmander)
256    {
257        PhysicsObject ammus1 = charmander.charmaase.Shoot();
258
259        if (ammus1 != null)
260        {
261            ammus1.Image = fireb1;
262            ammus1.Size *= 10;
263        }
264    }
265
266    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde, int vahinko)
267    {
268        ammus.Destroy();
269
270        if (kohde.Tag.Equals("Charmander"))
271        {
272            (kohde as charma).ElamaLaskuri.Value -= vahinko;
273        }
274        if (kohde.Tag.Equals("Pikachu"))
275        {
276            (kohde as Pika).ElamaLaskuri.Value -= vahinko;
277        }
278
279    }
280    void AmmuAseellacharmander(charma charmander)
281    {
282        PhysicsObject ammus1 = charmander.Weapon.Shoot();
283
284        if (ammus1 != null)
285        {
286            ammus1.Image = fire;
287        }
288    }
289   
290
291
292       
293   
294
295   
296    void Voitto(String voittajannimi)
297    {
298        Label tekstikentta = new Label(voittajannimi + " wins!");
299        tekstikentta.TextScale = new Vector(4, 3);
300        tekstikentta.Color = Color.Blue;
301        Add(tekstikentta);
302        Timer.SingleShot(5, Exit);
303    }
304   
305   
306}
Note: See TracBrowser for help on using the repository browser.