source: 2014/24/TommiA/FysiikkaPeli3/FysiikkaPeli3/FysiikkaPeli3/Peli.cs @ 5009

Revision 5009, 7.2 KB checked in by topeanti, 6 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 FysiikkaPeli3 : PhysicsGame
10{
11    PhysicsObject Tommi;
12    Weapon ase;
13    Image TomminKuva = LoadImage("Untitled");
14    Image TommiJuoksee = LoadImage("juoksu");
15    Image Taustakuva = LoadImage("Untitled2");
16    Image Zombikuva = LoadImage("Zombie");
17    Image Zombimaski = LoadImage("Zombiemask");
18    Image Zombiseuraa = LoadImage("Zombie2");
19    Image tausta = LoadImage("tausta");
20    Image tahtainkuva = LoadImage("tahtain");
21    Image ak = LoadImage("ak47_3");
22    Image M4Kuva = LoadImage("M4");
23    Image luoti = LoadImage("kuti");
24    Image Elamamittari = LoadImage("hp metter");
25    Image Tyhjaelamamittari = LoadImage("hp metter2");
26
27    EasyHighScore topLista = new EasyHighScore();
28
29    DoubleMeter elamaLaskuri;
30    IntMeter pisteLaskuri;
31    bool kaannetty = false;
32
33    public override void Begin()
34    {
35        topLista.HighScoreWindow.Closed += delegate(Window sender) { AlkuValikko(); };
36        AlkuValikko();
37    }
38
39    void AlkuValikko()
40    {
41        ClearAll();
42        MediaPlayer.Play("left");
43        Mouse.IsCursorVisible = true;
44        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko", "Aloita peli", "Parhaat pisteet", "Lopeta");
45        alkuValikko.ItemSelected += ValikkoValinta;
46        alkuValikko.IsModal = false;
47        Add(alkuValikko);
48
49        // TODO: Kirjoita ohjelmakoodisi tähän
50    }
51
52    void ValikkoValinta(int valinta)
53    {
54        switch (valinta)
55        {
56            case 0:
57                AloitaPeli();
58                break;
59            case 1:
60                //topLista.
61                topLista.Show();
62                break;
63            default:
64                Exit();
65                break;
66        }
67    }
68
69
70    void AloitaPeli()
71    {
72        Tommi = new PhysicsObject(80, 140);
73        Tommi.Shape = Shape.FromImage(Zombimaski);
74        Tommi.LinearDamping = 0.95;
75        Tommi.Animation = new Animation(TomminKuva, TommiJuoksee);
76        Tommi.Animation.Stop();
77        Tommi.Animation.StopOnLastFrame = false;
78        AddCollisionHandler(Tommi, "zombie", TormaaZombiin);
79        ase = new AssaultRifle(100, 45);
80        Tommi.Add(ase);
81        ase.Image = ak;
82        ase.FireRate = 100;
83        ase.Position += new Vector(0, -30);
84        Tommi.CanRotate = false;
85        Add(Tommi);
86
87        LuoZombie();
88
89        Level.BackgroundColor = Color.BrightGreen;
90        Level.Background.Image = Taustakuva;
91        Level.Background.FitToLevel();
92        Level.CreateBorders(false);
93        Timer ajastin = new Timer();
94        ajastin.Interval = 2;
95        ajastin.Timeout += delegate { LuoZombie(); };
96        ajastin.Start();
97        LuoElamaLaskuri();
98        LuoPistelaskuri();
99
100        IsMouseVisible = false;
101        GameObject tahtain = new GameObject(tahtainkuva);
102        Add(tahtain);
103
104        Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-1000, 0));
105        Keyboard.Listen(Key.A, ButtonState.Released, PysaytaPelaaja, null);
106        Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa, null, new Vector(1000, 0));
107        Keyboard.Listen(Key.D, ButtonState.Released, PysaytaPelaaja, null);
108        Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, 1000));
109        Keyboard.Listen(Key.W, ButtonState.Released, PysaytaPelaaja, null);
110        Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -1000));
111        Keyboard.Listen(Key.S, ButtonState.Released, PysaytaPelaaja, null);
112
113        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", Tommi);
114
115        Mouse.ListenMovement(0.1, SeuraaHiirta, null, tahtain);
116        Mouse.Listen(MouseButton.Left, ButtonState.Released, AmmuHiiresta, null);
117        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
118        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
119
120
121    }
122
123
124    void TormaaZombiin(PhysicsObject pelaaja, PhysicsObject zombie)
125    {
126        elamaLaskuri.Value += -0.1;
127    }
128
129    void SeuraaHiirta(AnalogState hiiri, GameObject tahtain)
130    {
131        tahtain.Position = Mouse.PositionOnWorld;
132
133        Vector suunta = (Mouse.PositionOnWorld - ase.AbsolutePosition).Normalize();
134        ase.Angle = suunta.Angle;
135        if (((suunta.Angle.Degrees > 90 && suunta.Angle.Degrees <= 180) || (suunta.Angle.Degrees <= -90 && suunta.Angle.Degrees >= -180)) && !kaannetty)
136        {
137            kaannetty = true;
138            ase.FlipImage();
139            return;
140        }
141        if (kaannetty && (suunta.Angle.Degrees >= -90 && suunta.Angle.Degrees <= 90))
142        {
143            kaannetty = false;
144            ase.FlipImage();
145        }
146    }
147
148
149    void AmmuHiiresta()
150    {
151        PhysicsObject ammus = ase.Shoot();
152        if (ammus == null) return;
153        ammus.Tag = "ammus";
154        ammus.Image = luoti;
155    }
156
157
158    void AmmuAseella(PhysicsObject pelaaja)
159    {
160        PhysicsObject ammus = ase.Shoot();
161
162        if (ammus != null)
163        {
164            //ammus.Size *= 3;
165            //ammus.Image = ...
166            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
167        }
168
169    }
170
171    void LuoElamaLaskuri()
172    {
173        elamaLaskuri = new DoubleMeter(10, 0, 10);
174        elamaLaskuri.LowerLimit += ElamaLoppui;
175
176        ProgressBar elamaPalkki = new ProgressBar(150, 20);
177        elamaPalkki.X = Screen.Left + 150;
178        elamaPalkki.Y = Screen.Top - 20;
179        elamaPalkki.Image = Tyhjaelamamittari;
180        elamaPalkki.BarImage = Elamamittari;
181        elamaPalkki.BindTo(elamaLaskuri);
182        Add(elamaPalkki);
183    }
184
185
186    void ElamaLoppui()
187    {
188        Tommi.Destroy();
189
190        topLista.EnterAndShow(pisteLaskuri.Value);
191
192    }
193
194    void LuoZombie()
195    {
196        PhysicsObject Zombi = new PhysicsObject(90, 150);
197        Zombi.Shape = Shape.Circle;
198        Zombi.Animation = new Animation(Zombikuva, Zombiseuraa);
199        Zombi.Animation.Start();
200        Zombi.Position += new Vector(120, 0);
201        Zombi.LinearDamping = 0.95;
202        Zombi.Tag = "zombie";
203        Zombi.CanRotate = false;
204        AddCollisionHandler(Zombi, "ammus", OsuuZombiin);
205        FollowerBrain seuraajanAivot = new FollowerBrain(Tommi);
206        Zombi.Brain = seuraajanAivot;
207        Add(Zombi);
208
209    }
210
211
212    void OsuuZombiin(PhysicsObject zombi, PhysicsObject ammus)
213    {
214        zombi.Destroy();
215        ammus.Destroy();
216        pisteLaskuri.Value += 1;
217    }
218
219    void PysaytaPelaaja()
220    {
221        Tommi.Animation.Stop();
222    }
223
224    void LiikutaPelaajaa(Vector vektori)
225    {
226        Tommi.Push(vektori);
227        Tommi.Animation.Resume();
228    }
229
230    void LuoPistelaskuri()
231    {
232        pisteLaskuri = new IntMeter(0);
233
234        Label pisteNaytto = new Label();
235        pisteNaytto.X = Screen.Left + 100;
236        pisteNaytto.Y = Screen.Top - 100;
237        pisteNaytto.TextColor = Color.Black;
238        pisteNaytto.Color = Color.White;
239
240        pisteNaytto.BindTo(pisteLaskuri);
241        Add(pisteNaytto);
242    }
243
244
245}
Note: See TracBrowser for help on using the repository browser.