source: 2017/24/MatiasK/SimpleGame/SimpleGame/SimpleGame/SimpleGame.cs @ 8803

Revision 8803, 11.4 KB checked in by npo17_7, 2 years ago (diff)

Alotus teksti

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Astropoint : PhysicsGame
10 
11{
12    PhysicsObject pelaaja1;
13    List<Label> valikonKohdat;
14    Image olionKuva = LoadImage("Spaceship");
15    Label Teksti;
16    Timer ajastin;
17    LaserGun pelaajan1Ase;
18
19    public override void Begin()
20    {
21        Teksti = new Label(500, 200);
22        Teksti.TextColor = Color.Blue;
23        Teksti.TextScale = new Vector(2, 2);
24        Teksti.X = 0;
25        Teksti.Y = 0;
26        Add(Teksti);
27        pelaaja1 = new PlatformCharacter(200, 100);
28        AddCollisionHandler(pelaaja1, "Vihu", VihollinenOsuuPelaajaan);
29        Add(pelaaja1);
30        pelaaja1.Image = olionKuva;
31        //Valikko();
32       
33        LuoReuna(1920, 50, 0, Level.Top + 170);
34        LuoReuna(1920, 10, 0, Level.Bottom + -150);
35        LuoReuna(95, 2020, 1010, Level.Right);
36        LuoReuna(95, 2020, -1010, Level.Left);
37        LuoPistelaskuri();
38
39        Level.Background.CreateStars();
40
41        Level.Background.CreateStars(10000);
42
43        Label tekstikentta = new Label(205.0, 20.0, "Beat the score 1056");
44        Add(tekstikentta);
45
46        tekstikentta.X = Screen.Left + 130;
47        tekstikentta.Y = Screen.Top - 150;
48       
49       
50
51        tekstikentta.Color = Color.Gold;
52        tekstikentta.TextColor = Color.Maroon;
53        tekstikentta.BorderColor = Color.Green;
54
55        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Exit");
56
57        IsFullScreen = true;
58
59        Keyboard.Listen(Key.C, ButtonState.Pressed, ShowControlHelp, "Control help menu");
60
61        MediaPlayer.IsRepeating = true;
62
63        MultiSelectWindow alkuValikko = new MultiSelectWindow("Menu",
64"Start game", "Test flying", "Exit");
65        Add(alkuValikko);
66
67        alkuValikko.AddItemHandler(0, StartGame);
68        alkuValikko.AddItemHandler(1, BestScore);
69        alkuValikko.AddItemHandler(2, Exit);
70        alkuValikko.SetButtonColor(Color.DarkGreen);
71        alkuValikko.DefaultCancel = 3;
72
73        alkuValikko.DefaultCancel = -1;
74
75        alkuValikko.Color = Color.Emerald;
76
77        //LisaaVihollisia2();
78
79        Mouse.IsCursorVisible = true;
80
81        pelaajan1Ase = new LaserGun(50, 50);
82        pelaajan1Ase.IsVisible = false;
83
84        Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, "Shoot", pelaajan1Ase);
85
86        MediaPlayer.IsRepeating = true;
87
88        Label NNae = new Label(200.0, 50.0, "Astropoint(Beta)");
89        Add(NNae);
90
91        NNae.X = Screen.Left + 960;
92        NNae.Y = Screen.Top - 300;
93
94       
95
96        NNae.Color = Color.BlueGray;
97        NNae.TextColor = Color.BloodRed;
98        NNae.BorderColor = Color.DarkGray;
99
100
101        //Ammusten määrä aluksi:
102        pelaajan1Ase.Ammo.Value = 100000000;
103
104        //Mitä tapahtuu kun ammus osuu johonkin?
105        pelaajan1Ase.ProjectileCollision = AmmusOsui;
106
107        pelaaja1.Add(pelaajan1Ase);
108
109        //Mouse.ListenMovement(0.0, Tahtaa, "Aim");
110
111        //Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
112
113        MediaPlayer.Play("pixel_space-G4mMoEkO8gQ_fmt43");
114
115        const double NOPEUS = 500;
116        Keyboard.Listen(Key.A, ButtonState.Down,
117          LiikutaPelaajaa, null, new Vector(-NOPEUS, 0));
118        Keyboard.Listen(Key.D, ButtonState.Down,
119          LiikutaPelaajaa, null, new Vector(NOPEUS, 0));
120        Keyboard.Listen(Key.W, ButtonState.Down,
121          LiikutaPelaajaa, null, new Vector(0, 50));
122        Keyboard.Listen(Key.S, ButtonState.Down,
123          LiikutaPelaajaa, null, new Vector(0, -50));
124        Keyboard.Listen(Key.A, ButtonState.Released,
125          LiikutaPelaajaa, null, Vector.Zero);
126        Keyboard.Listen(Key.D, ButtonState.Released,
127          LiikutaPelaajaa, null, Vector.Zero);
128        Keyboard.Listen(Key.W, ButtonState.Released,
129          LiikutaPelaajaa, null, Vector.Zero);
130        Keyboard.Listen(Key.S, ButtonState.Released,
131          LiikutaPelaajaa, null, Vector.Zero);
132        Keyboard.Listen(Key.F, ButtonState.Pressed, Pause, "Pause");
133        Mouse.Listen(MouseButton.Right, ButtonState.Pressed, HeitaKranaatti, "Granade", pelaaja1);
134        Keyboard.Listen(Key.R, ButtonState.Pressed, AloitaAlusta, "Reset");
135        Keyboard.Listen(Key.Space, ButtonState.Pressed, Explode, "Do not press");
136       
137
138    }
139
140    void LiikutaPelaajaa(Vector vektori)
141    {
142       pelaaja1.Hit(vektori);
143    }
144
145    void AloitaAlusta()
146    {
147        ClearAll();
148        Begin();
149    }
150
151    void Explode()
152    {
153        pelaaja1.Destroy();       
154        int pMaxMaara = 200;
155        // Alustetaan räjähdysjärjestelmä
156        // Parametrit:
157        // * kuva: mitä tekstuuria räjähdyksen
158        //   hiukkasten halutaan käyttävän
159        // * pMaxMaara: räjähdyksen käyttämien
160        //   hiukkasten eli partikkeleiden maksimimäärä
161        ExplosionSystem rajahdys =
162          new ExplosionSystem(LoadImage("Boom"), pMaxMaara);
163
164        // Lisätään järjestelmä peliin
165        Add(rajahdys);
166
167        rajahdys.AddEffect(pelaaja1.X, pelaaja1.Y, 1);
168    }
169
170    void KranaattiOsui(IPhysicsObject rajahdyksenKohde, Vector v)
171    {
172        rajahdyksenKohde.Destroy();
173        pisteLaskuri.AddValue(1);
174
175    }
176
177    IntMeter pisteLaskuri;
178
179    void LuoPistelaskuri()
180    {
181        pisteLaskuri = new IntMeter(0);
182
183        Label pisteNaytto = new Label();
184        pisteNaytto.X = Screen.Left + 100;
185        pisteNaytto.Y = Screen.Top - 100;
186        pisteNaytto.TextColor = Color.Black;
187        pisteNaytto.Color = Color.White;
188
189        pisteNaytto.BindTo(pisteLaskuri);
190        Add(pisteNaytto);
191    }
192
193    void HeitaKranaatti(PhysicsObject pelaaja)
194    {
195        Grenade kranu = new Grenade(4.0);
196        pelaaja.Throw(kranu, Angle.FromDegrees(0), 10000);
197        kranu.Explosion.ShockwaveReachesObject += KranaattiOsui;
198       
199        kranu.Explosion.AddShockwaveHandler("Vihu", KranaattiOsui);
200    }
201
202    void VihollinenOsuuPelaajaan(PhysicsObject pelaaja1, PhysicsObject Vihu)
203    {
204        pelaaja1.Destroy();
205        Teksti.Text = "You died";
206    }
207    void LuoReuna(double leveys, double korkeus, double x, double y)
208    {
209        PhysicsObject reunapalikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
210        reunapalikka.X = x;
211        reunapalikka.Y = y;
212        reunapalikka.Tag = "seina";
213        reunapalikka.IgnoresExplosions = true;
214        Add(reunapalikka);
215    }
216
217   
218
219    void StartGame()
220    {
221        ajastin = new Timer();
222        ajastin.Interval = 1.5;
223        ajastin.Timeout += delegate { LisaaVihollisia(); if (ajastin.Interval > 0.1) ajastin.Interval -= 0.001; };
224
225       
226        ajastin.Timeout += LisaaVihollisia2;
227        ajastin.Start();
228    }
229
230    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
231    {
232        ammus.Destroy();
233        if (kohde.Tag.Equals("Vihu") == false) return;
234        int pMaxMaara = 200;
235        // Alustetaan räjähdysjärjestelmä
236        // Parametrit:
237        // * kuva: mitä tekstuuria räjähdyksen
238        //   hiukkasten halutaan käyttävän
239        // * pMaxMaara: räjähdyksen käyttämien
240        //   hiukkasten eli partikkeleiden maksimimäärä
241        ExplosionSystem rajahdys =
242          new ExplosionSystem(LoadImage("Boom"), pMaxMaara);
243
244        // Lisätään järjestelmä peliin
245        Add(rajahdys);
246
247        rajahdys.AddEffect(kohde.X, kohde.Y, 1);
248
249        if (kohde == null) return;
250
251       
252
253        Vihu vihu = (Vihu)kohde;
254        vihu.ElamaLaskuri.Value--;
255        if (vihu.ElamaLaskuri.Value == 0)
256        {
257            pisteLaskuri.AddValue(1); vihu.Destroy();
258        }
259        //MessageDisplay.Add("Hit Enemy");
260    }
261
262    void AmmuAseella(LaserGun ase)
263    {
264        if (IsPaused) return;
265        Vector suunta = (Mouse.PositionOnWorld - pelaajan1Ase.AbsolutePosition).Normalize();
266        pelaajan1Ase.Angle = suunta.Angle;
267
268        PhysicsObject ammus = ase.Shoot();
269        ammus.Tag = "Luoti";
270        if (ammus != null)
271        {
272            ammus.Size *= 10;
273            //ammus.Image = ...
274            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
275        }
276    }
277
278    void BestScore()
279    {
280    }
281
282    //void Tahtaa(AnalogState hiirenLiike)
283    //{
284    //    Vector suunta = (Mouse.PositionOnWorld - pelaajan1Ase.AbsolutePosition).Normalize();
285    //    pelaajan1Ase.Angle = suunta.Angle;
286    //}
287
288    void Valikko()
289    {
290        ClearAll(); // Tyhjennetään kenttä kaikista peliolioista
291
292        valikonKohdat = new List<Label>(); // Alustetaan lista, johon valikon kohdat tulevat
293
294        Label kohta1 = new Label("Start Game");  // Luodaan uusi Label-olio, joka toimii uuden pelin aloituskohtana
295        kohta1.Position = new Vector(0, 40);
296
297        valikonKohdat.Add(kohta1);  // Lisätään luotu valikon kohta listaan jossa kohtia säilytetään
298
299        Label kohta2 = new Label("Test flying");
300        kohta2.Position = new Vector(0, 0);
301        valikonKohdat.Add(kohta2);
302
303        Label kohta3 = new Label("Exit");
304        kohta3.Position = new Vector(0, -40);
305        valikonKohdat.Add(kohta3);
306
307        // Lisätään kaikki luodut kohdat peliin foreach-silmukalla
308        foreach (Label valikonKohta in valikonKohdat)
309        {
310            //Add(valikonKohta);
311        }
312        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, StartGame, null);
313        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, BestScore, null);
314        Mouse.ListenOn(kohta3, MouseButton.Left, ButtonState.Pressed, Exit, null);
315    }
316
317    void LisaaVihollisia()
318    {
319        Vihu vihollinen = new Vihu(50, 50);
320        vihollinen.X = 900;
321        vihollinen.Y = RandomGen.NextDouble(Level.Bottom, Level.Top);
322        AddCollisionHandler(vihollinen, "Luoti", LuotiOsuuViholliseen);
323        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja1);
324        vihollinen.Tag = "Vihu";
325        vihollinen.Brain = seuraajanAivot;
326        vihollinen.Shape = Shape.Hexagon;
327        vihollinen.Color = Color.Red;
328        Add(vihollinen);
329    }
330
331     void ValikossaLiikkuminen(AnalogState hiirenTila)
332        {
333            foreach (Label kohta in valikonKohdat)
334            {
335                if (Mouse.IsCursorOn(kohta))
336                {
337                    kohta.TextColor = Color.Charcoal;
338                }
339                else
340                {
341                    kohta.TextColor = Color.Aqua;
342                }
343
344            }
345        }
346
347    void LisaaVihollisia2()
348    {
349        Vihu vihollinen = new Vihu(50, 50);
350        vihollinen.X = -900;
351        vihollinen.Y = RandomGen.NextDouble(Level.Bottom, Level.Top);
352        AddCollisionHandler(vihollinen, "Luoti", LuotiOsuuViholliseen);
353        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja1);
354        vihollinen.Tag = "Vihu";
355        vihollinen.Brain = seuraajanAivot;
356        vihollinen.Shape = Shape.Hexagon;
357        vihollinen.Color = Color.Red;
358        Add(vihollinen);
359    }
360
361    void LuotiOsuuViholliseen(PhysicsObject vihollinen, PhysicsObject luoti)
362    {
363
364
365    }
366
367}
368class Vihu : PhysicsObject
369{
370    private IntMeter elamaLaskuri = new IntMeter(10, 0, 10);
371    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
372
373    public Vihu(double leveys, double korkeus)
374        : base(leveys, korkeus)
375    {
376        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
377    }
378}
Note: See TracBrowser for help on using the repository browser.