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

Revision 8717, 9.1 KB checked in by npo17_7, 2 years ago (diff)

MMMMMMMMMMMMMMMMMMMMMMMelkeen valmis

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