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

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