source: 2016/27/TaneliL/viikko27peli/viikko27peli/viikko27peli/viikko27peli.cs @ 7922

Revision 7922, 8.5 KB checked in by TaLiimat, 3 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 viikko27peli : PhysicsGame
10{
11
12    private Animation pelaajanKavely;
13    private Animation pelaajanHyppy;
14    private Animation pelaajanOdottelu;
15    private Animation pelajaanPutoaminen;
16
17    Image tikkaatKuva = LoadImage("Tikkaat");
18    Image palloKuva = LoadImage("jalkapallo");
19
20    PlatformCharacter pelaaja;
21
22    GameObject kiipeilija;
23
24    Timer pommiAjastin;
25
26    IntMeter pisteet;
27    IntMeter kenttaNro;
28
29    public override void Begin()
30    {
31        pelaajanKavely = LoadAnimation("kavely");
32        pelaajanHyppy = LoadAnimation("hyppy");
33        pelaajanOdottelu = LoadAnimation("odottelu");
34        pelajaanPutoaminen = LoadAnimation("putoaminen");
35
36        Window.Width = 1280;
37        Window.Height = 720;
38
39        luoMaailma();
40        nappaimet();
41    }
42
43    void nappaimet()
44    {
45        Keyboard.Listen(Key.W, ButtonState.Pressed, pelaajaHyppaa, null, 700.0);
46        Keyboard.Listen(Key.A, ButtonState.Down, liikutaPelaajaa, null, -200.0);
47        Keyboard.Listen(Key.D, ButtonState.Down, liikutaPelaajaa, null, 200.0);
48        Keyboard.Listen(Key.E, ButtonState.Pressed, kiipea, null);
49        Keyboard.Listen(Key.T, ButtonState.Pressed, luoKonsoli, "");
50        Keyboard.Listen(Key.Space, ButtonState.Pressed, ammuAseella, "Ammu", pelaaja);
51
52        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
53        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
54    }
55
56    void luoMaailma()
57    {
58        ColorTileMap kentta = ColorTileMap.FromLevelAsset("Kentta1");
59        kentta.SetTileMethod(Color.YellowGreen, luoPelaaja);
60        kentta.SetTileMethod(Color.Red, luoPiikki);
61        kentta.SetTileMethod(Color.Gold, luoKerailyEsine);
62        kentta.SetTileMethod(Color.DarkGray, luoOhutPalikka);
63        kentta.SetTileMethod(Color.Black, luoPaksuPalikka);
64        kentta.SetTileMethod(Color.Blue, luoTikkaat);
65        kentta.SetTileMethod(Color.White, luoMaali);
66        kentta.Execute(60, 60);
67
68        Gravity = new Vector(0.0, -800.0);
69
70        Camera.Follow(pelaaja);
71        Camera.Zoom(1.25);
72
73        luoPisteet();
74    }
75
76    void luoPelaaja(Vector paikka, double leveys, double korkeus)
77    {
78
79        pelaaja = new PlatformCharacter(40, 70);
80        pelaaja.Position = paikka;
81        pelaaja.Color = Color.YellowGreen;
82        pelaaja.Tag = "pelaaja";
83        pelaaja.CanRotate = false;
84        pelaaja.AnimWalk = new Animation(pelaajanKavely);
85        pelaaja.AnimWalk.FPS = 25;
86        pelaaja.AnimJump = new Animation(pelaajanHyppy);
87        pelaaja.AnimJump.FPS = 37;
88        pelaaja.AnimIdle = new Animation(pelaajanOdottelu);
89        pelaaja.LoopJumpAnim = true;
90        pelaaja.AnimFall = new Animation(pelajaanPutoaminen);
91        pelaaja.LoopFallAnim = true;
92        AddCollisionHandler(pelaaja, pelaajaTormaa);
93        Add(pelaaja);
94    }
95
96    void luoPaksuPalikka(Vector paikka, double leveys, double korkeus)
97    {
98        PhysicsObject paksuPalikka = PhysicsObject.CreateStaticObject(60, 60);
99        paksuPalikka.Position = paikka;
100        paksuPalikka.Tag = "paksu";
101        paksuPalikka.Color = Color.Black;
102        Add(paksuPalikka);
103    }
104
105    void luoOhutPalikka(Vector paikka, double leveys, double korkeus)
106    {
107        PhysicsObject ohutPalikka = PhysicsObject.CreateStaticObject(60, 10);
108        ohutPalikka.Position = paikka;
109        ohutPalikka.Tag = "ohut";
110        ohutPalikka.Color = Color.DarkGray;
111        Add(ohutPalikka);
112    }
113
114    void luoPiikki(Vector paikka, double leveys, double korkeus)
115    {
116        PhysicsObject piikit = PhysicsObject.CreateStaticObject(60, 60);
117        piikit.Position = paikka;
118        piikit.Tag = "piikki";
119        piikit.Color = Color.Red;
120        Add(piikit);
121    }
122    void luoKerailyEsine(Vector paikka, double leveys, double korkeus)
123    {
124        PhysicsObject kerailyEsine = PhysicsObject.CreateStaticObject(60, 60);
125        kerailyEsine.Position = paikka;
126        kerailyEsine.Tag = "aarre";
127        kerailyEsine.Color = Color.Gold;
128        Add(kerailyEsine);
129    }
130
131    void luoMaali(Vector paikka, double leveys, double korkeus)
132    {
133        PhysicsObject maali = PhysicsObject.CreateStaticObject(60, 60);
134        maali.Tag = "maali";
135        maali.Position = paikka;
136        maali.Color = Color.White;
137        Add(maali);
138
139    }
140
141    void luoTikkaat(Vector paikka, double leveys, double korkeus)
142    {
143        PhysicsObject tikkaat = PhysicsObject.CreateStaticObject(60, 4 * 60);
144        tikkaat.IgnoresCollisionResponse = true;
145        tikkaat.Position = paikka;
146        tikkaat.Bottom = paikka.Y - korkeus / 2;
147        tikkaat.Tag = "tikas";
148        tikkaat.Color = Color.Blue;
149        tikkaat.Image = tikkaatKuva;
150        Add(tikkaat, -1);
151    }
152
153    void liikutaPelaajaa(double suunta)
154    {
155        pelaaja.Walk(suunta);
156    }
157    void pelaajaHyppaa(double nopeus)
158    {
159        pelaaja.Jump(nopeus);
160    }
161
162    void kiipea()
163    {
164        List<GameObject> tikkaat = GetObjectsWithTag("tikas");
165        bool voiKiiveta = false;
166
167        foreach (var tikas in tikkaat)
168        {
169            if (Vector.Distance(pelaaja.Position, new Vector(tikas.X, tikas.Bottom + 30)) < 30)
170            {
171                voiKiiveta = true;
172                break;
173            }
174        }
175
176        if (!voiKiiveta)
177            return;
178        if (kiipeilija != null)
179            return;
180
181        kiipeilija = new GameObject(pelaaja.Width, pelaaja.Height);
182        kiipeilija.Color = pelaaja.Color;
183        kiipeilija.Position = pelaaja.Position;
184        Add(kiipeilija, 1);
185
186        Camera.Follow(kiipeilija);
187
188        pelaaja.IsVisible = false;
189
190        kiipeilija.MoveTo(pelaaja.Position + new Vector(0, 4*60), 300, delegate
191        {
192            pelaaja.Position = kiipeilija.Position;
193            pelaaja.IsVisible = true;
194            kiipeilija.Destroy();
195            kiipeilija = null;
196            Camera.Follow(pelaaja);
197        });
198    }
199
200    void luoPisteet()
201    {
202        pisteet = new IntMeter(0);
203
204        Label pisteNaytto = new Label();
205        pisteNaytto.X = Screen.Left + 100;
206        pisteNaytto.Y = Screen.Top - 100;
207        pisteNaytto.TextColor = Color.Black;
208        pisteNaytto.Color = Color.White;
209        pisteNaytto.BindTo(pisteet);
210        Add(pisteNaytto);
211    }
212
213    void luoKonsoli()
214    {
215        InputWindow konsoli = new InputWindow("Konsoli");
216        konsoli.TextEntered += ProcessInput;
217        Add(konsoli);
218    }
219
220    void ProcessInput(InputWindow ikkuna)
221    {
222        string vastaus = ikkuna.InputBox.Text;
223        // tehdään jotain vastauksella
224        if (vastaus == "pallo")
225        {
226            luoPallo();
227        }
228
229        if (vastaus == "ase")
230        {
231            luoAse();
232        }
233
234        if (vastaus == "pommi")
235        {
236            luoPommi();
237        }
238
239        if (vastaus == "megahyppy")
240        {
241            megaHyppy();
242        }
243    }
244
245    void ammuAseella(PlatformCharacter pelaaja)
246    {
247        PhysicsObject ammus = pelaaja.Weapon.Shoot();
248
249        if (ammus != null)
250        {
251
252        }
253    }
254
255    void ammusOsui(PhysicsObject ammus, PhysicsObject kohde)
256    {
257        ammus.Destroy();
258
259        if (kohde.Tag == "ohut")
260        {
261            kohde.Destroy();
262        }
263    }
264
265    void pelaajaTormaa(PhysicsObject pelaaja, PhysicsObject kohde)
266    {
267        if (kohde.Tag == "piikki")
268        {
269            pelaaja.Destroy();
270        }
271
272        if (kohde.Tag == "aarre")
273        {
274            kohde.Destroy();
275
276            pisteet.Value += 10;
277        }
278    }
279
280    void luoPallo()
281    {
282        PhysicsObject pallo = new PhysicsObject(20, 20);
283        pallo.Shape = Shape.Circle;
284        pallo.Position = pelaaja.Position;
285        pallo.Mass = 1;
286        pallo.Restitution = 1;
287        pallo.Image = palloKuva;
288        Add(pallo);
289    }
290
291    void luoAse()
292    {
293        pelaaja.Weapon = new AssaultRifle(10, 10);
294        pelaaja.Weapon.ProjectileCollision = ammusOsui;
295    }
296
297    void luoPommi()
298    {
299        PhysicsObject pommi = new PhysicsObject(20, 20);
300        pommi.Shape = Shape.Circle;
301        pommi.Position = pelaaja.Position;
302        Vector impulssi = new Vector(500.0, 0.0);
303        pommi.Hit(impulssi);
304        Add(pommi);
305    }
306
307    void megaHyppy()
308    {
309        Vector megaHyppy = new Vector(0, 2000);
310        pelaaja.Hit(megaHyppy);
311    }
312}
Note: See TracBrowser for help on using the repository browser.