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

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