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

Revision 8688, 7.3 KB checked in by npo17_5, 5 years ago (diff)

ydinpommi lisätty

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