source: 2017/24/JuhaniP/FysiikkaPeli1/FysiikkaPeli1/FysiikkaPeli1/FysiikkaPeli1.cs @ 8795

Revision 8795, 8.2 KB checked in by npo17_5, 5 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class FysiikkaPeli1 : PhysicsGame
10{
11    Vector nopeusYlos = new Vector(0, 200);
12    Vector nopeusAlas = new Vector(0, -200);
13
14    Image tuhoajankuva = LoadImage("tuhoaja");
15    Image taustaKuva = LoadImage("maailma");
16
17    EasyHighScore topLista = new EasyHighScore();
18
19    SoundEffect laukausaani = LoadSoundEffect("sarjatuli");
20    IntMeter laskuri;
21
22    IntMeter sniperinPisteet;
23
24   
25
26
27    AssaultRifle sniperAse;
28    PhysicsObject sniper;
29
30    public override void Begin()
31    {
32        LuoAikaLaskuri();
33        LisaaLaskurit();
34
35
36        Camera.Zoom(1.2);
37
38        Level.Background.Image = taustaKuva;
39        Level.Background.FitToLevel();
40        Level.CreateBorders(6.0, false);
41
42        Grenade kranaatti = new Grenade(4.0);
43        Add(kranaatti);
44
45        ClusterGrenade ydinpommi = new ClusterGrenade(4.0, 2);
46        ydinpommi.NumberOfClusters = 10;
47        Add(ydinpommi);
48
49        Timer ajastin = new Timer();
50        ajastin.Interval = 1.5;
51        ajastin.Timeout += Lisaamaali;
52        ajastin.Timeout += Lisaatuhoaja;
53        ajastin.Start();
54
55
56        Timer pommiajastin = new Timer();
57        pommiajastin.Interval = 5.0;
58        pommiajastin.Timeout += Lisaaydinpommi;
59        pommiajastin.Timeout += Lisaakranaatti;
60        pommiajastin.Start();
61
62        PhysicsObject luoti = new PhysicsObject(15.0, 7.0);
63        luoti.Color = Color.DarkRed;
64        luoti.X = 700.0;
65        luoti.Y = 0.0;
66       
67
68
69        sniper = new PhysicsObject(70, 60.0);
70        sniper.X = -400.0;
71        sniper.Y = 0.0;
72        sniperAse = new AssaultRifle(120, 45);
73        sniperAse.Angle += Angle.FromDegrees(1);
74        sniperAse.Ammo.Value = 9000000;
75        sniperAse.X = 30.0;
76        sniperAse.Y = 5.0;
77        Grenade sniperkranaatti = new Grenade(14.0);
78        sniperAse.ProjectileCollision = AmmusOsui;
79        sniperAse.ProjectileCollision = AmmusOsui;
80        sniper.CanRotate = false;
81        sniper.Image = LoadImage("sniper");
82        Add(sniper);
83        sniper.Add(sniperAse);
84        AddCollisionHandler(sniper, "vihollinen", PelaajatTormaavat);
85
86        AsetaOhjaimet();
87
88    }
89    void AsetaOhjaimet()
90    {
91        Mouse.ListenMovement(0.01, Tahtaa, "Tähtää aseella");
92        Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, "Ammu", sniperAse);
93        Keyboard.Listen(Key.W, ButtonState.Down, liikutasniper, "Pelaaja 1: Liikuta mailaa ylös", new Vector(0, 100));
94        Keyboard.Listen(Key.S, ButtonState.Down, liikutasniper, "Pelaaja 1: Liikuta mailaa alas", new Vector(0, -100));
95        Keyboard.Listen(Key.D, ButtonState.Down, liikutasniper, "Pelaaja 1: Liikuta mailaa oikealle", new Vector(100, 0));
96        Keyboard.Listen(Key.A, ButtonState.Down, liikutasniper, "Pelaaja 1: Liikuta mailaa vasemalle", new Vector(-100, 0));
97        Keyboard.Listen(Key.W, ButtonState.Released, liikutasniper, "Pelaaja 1: Liikuta mailaa ylös", new Vector(0, 0));
98        Keyboard.Listen(Key.S, ButtonState.Released, liikutasniper, "Pelaaja 1: Liikuta mailaa alas", new Vector(0, 0));
99        Keyboard.Listen(Key.D, ButtonState.Released, liikutasniper, "Pelaaja 1: Liikuta mailaa ylös", new Vector(0, 0));
100        Keyboard.Listen(Key.A, ButtonState.Released, liikutasniper, "Pelaaja 1: Liikuta mailaa alas", new Vector(0, 0));
101        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
102
103    }
104
105    void AsetaNopeus(PhysicsObject sniper, Vector nopeus)
106    {
107        sniper.Velocity = nopeus;
108    }
109
110    void liikutasniper(Vector nopeus)
111    {
112        AsetaNopeus(sniper, nopeus);
113    }
114    void Lisaamaali()
115    {
116        PhysicsObject maali = new PhysicsObject(70.0, 50.0);
117        maali.Color = Color.Harlequin;
118        maali.Color = Color.Black;
119        maali.Image = LoadImage("nakkivene");
120        maali.X = 200.0;
121        maali.Y = -300.0;
122        maali.Tag = "vihollinen";
123        Add(maali);
124        Vector impulssi = new Vector(500.0, 0.0);
125        maali.Hit(impulssi);
126
127    }
128    void Lisaatuhoaja()
129    {
130        PhysicsObject tuhoaja = new PhysicsObject(40.0, 100.0);
131        tuhoaja.Color = Color.DarkRed;
132        tuhoaja.Image = LoadImage("tuhoaja");
133        tuhoaja.X = -140.0;
134        tuhoaja.Y = -30.0;
135        tuhoaja.Tag = "vihollinen";
136        Add(tuhoaja);
137        Vector impulssi = new Vector(500.0, 0.0);
138        tuhoaja.Hit(impulssi);
139    }
140    void Lisaaydinpommi()
141    {
142        ClusterGrenade ydinpommi = new ClusterGrenade(5.0, 2);
143        ydinpommi.NumberOfClusters = 10;
144        ydinpommi.Tag = "vihollinen";
145        Add(ydinpommi);
146        Vector impulssi = new Vector(500.0, 0.0);
147        ydinpommi.Hit(impulssi);
148    }
149
150
151
152
153
154
155
156
157    void AmmuAseella(Weapon ase)
158    {
159        PhysicsObject ammus = ase.Shoot();
160       
161
162        if (ammus != null)
163        {
164            laukausaani.Play();
165            //ammus.Size *= 3;
166            //ammus.Image = ...
167            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
168
169        }
170    }
171    DoubleMeter alaspainLaskuri;
172    Timer aikaLaskuri;
173
174    void LuoAikaLaskuri()
175    {
176        alaspainLaskuri = new DoubleMeter(120);
177
178        aikaLaskuri = new Timer();
179        aikaLaskuri.Interval = 0.1;
180        aikaLaskuri.Timeout += LaskeAlaspain;
181        aikaLaskuri.Start();
182
183        Label aikaNaytto = new Label();
184        aikaNaytto.TextColor = Color.White;
185        aikaNaytto.DecimalPlaces = 1;
186        aikaNaytto.BindTo(alaspainLaskuri);
187        Add(aikaNaytto);
188    }
189
190    void LaskeAlaspain()
191    {
192        alaspainLaskuri.Value -= 0.1;
193
194        if (alaspainLaskuri.Value <= 0)
195        {
196            MessageDisplay.Add("Aika loppui...");
197            aikaLaskuri.Stop();
198
199            NayttaaParhaatPistet();
200
201        }
202    }
203
204    void NaytaAlkuvalikko()
205    {
206        ClearAll();
207        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
208"Aloita peli", "Parhaat pisteet", "Lopeta");
209        alkuValikko.Color = Color.Red;
210        Add(alkuValikko);
211    }
212    void PelaajatTormaavat(PhysicsObject tormaaja, PhysicsObject kohde)
213
214    {
215        sniper.Destroy();
216        aikaLaskuri.Stop();
217        MessageDisplay.Add("Mee kotiis");
218        MessageDisplay.Add("no nyt kävi näin että kuolit");
219        MessageDisplay.Add("Haista vittu sitte");
220        MessageDisplay.Add("Voi jumalauta");
221        NayttaaParhaatPistet();
222     
223       
224    }
225    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
226    {
227        ammus.Destroy();
228        if (kohde.Tag.Equals("vihollinen"))
229        {
230            kohde.Destroy();
231            sniperinPisteet.Value += 1;
232        }
233
234
235
236
237    }
238
239    void LisaaLaskurit()
240    {
241        sniperinPisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0);
242
243
244    }
245
246
247
248
249    IntMeter LuoPisteLaskuri(double x, double y)
250    {
251        laskuri = new IntMeter(0);
252
253        laskuri.MaxValue = 100000;
254        Label naytto = new Label();
255        naytto.BindTo(laskuri);
256        naytto.X = x;
257        naytto.Y = y;
258        naytto.TextColor = Color.White;
259        naytto.BorderColor = Level.Background.Color;
260        naytto.Color = Level.Background.Color;
261        Add(naytto);
262
263        return laskuri;
264    }
265    void Tahtaa(AnalogState hiirenLiike)
266    {
267        Vector suunta = (Mouse.PositionOnWorld - sniperAse.AbsolutePosition).Normalize();
268        sniperAse.Angle = suunta.Angle;
269        sniper.Angle = suunta.Angle;
270    }
271    void KranaattiOsui(IPhysicsObject rajahdyksenKohde, Vector v)
272    {
273        rajahdyksenKohde.Destroy();
274    }
275    void PelaajaKuoli()
276    {
277        sniper.Destroy();
278        aikaLaskuri.Stop();
279       
280    }
281    public void AloitaPeli(Window sender)
282    {
283        // ...
284    }
285    void NayttaaParhaatPistet()
286    {   
287
288        topLista.EnterAndShow(laskuri.Value);
289        topLista.HighScoreWindow.Closed += AloitaPeli;
290        IsPaused = true;
291        alaspainLaskuri = new DoubleMeter(120);
292    }
293    void Lisaakranaatti()
294    {
295
296        Grenade kranaatti = new Grenade(4.0);
297        Add(kranaatti);
298
299    }
300
301}
302
303
304   
305
306
307
308
309
Note: See TracBrowser for help on using the repository browser.