source: 2014/26/JimiR/RunAway/RunAway/RunAway/RunAway/RunAway.cs @ 5092

Revision 5092, 6.2 KB checked in by tihaapas, 7 years ago (diff)

Tein 2 uutta kenttää

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class RunAway : PhysicsGame
10{
11    Image taustaKuva = LoadImage("energydrink");
12
13    Image pelaajanKuva = LoadImage("ukkeli");
14    PhysicsObject pelaaja;
15
16    Image vihollisenKuva = LoadImage("slenderman");
17
18    Image asekuva = LoadImage("Rifle");
19
20    AssaultRifle ase;
21
22    bool vihuAmmuttu = false;
23    int kenttaNro = 1;
24    int maxKenttaNro = 3;
25
26    public override void Begin()
27    {
28        kenttaNro = 1;
29        LuoAlkuValikko();
30    }
31
32
33    void LuoAlkuValikko()
34    {
35        MultiSelectWindow alkuValikko = new MultiSelectWindow("RunAway", "Start", "Quit");
36        Add(alkuValikko);
37
38        alkuValikko.AddItemHandler(0, AloitaPeli);
39        alkuValikko.AddItemHandler(1, Exit);
40    }
41
42    void AloitaPeli()
43    {
44        SmoothTextures = false;
45        vihuAmmuttu = false;
46        LuoKentta();
47        LisaaOhjaimet();
48        Camera.FollowedObject = pelaaja;
49        Camera.StayInLevel = true;
50
51
52    }
53
54    void LuoKentta()
55    {
56
57        Camera.Follow(pelaaja);
58
59        TileMap ruudut = TileMap.FromLevelAsset("Map" + kenttaNro);
60        ruudut.SetTileMethod('#', LuoPalikka);
61        ruudut.SetTileMethod('P', LuoPelaaja);
62        ruudut.SetTileMethod('S', LuoVihu);
63        ruudut.SetTileMethod('A', LuoKerattavaAse);
64        ruudut.SetTileMethod('O', LuoOvi);
65        ruudut.Execute(40,40);
66
67        Level.Background.Image = taustaKuva;
68        Level.Background.TileToLevel();
69    }
70
71    void LisaaOhjaimet()
72    {
73        Keyboard.Listen(Key.A, ButtonState.Down,
74          LiikutaPelaajaa, null, new Vector(-1000, 0));
75        Keyboard.Listen(Key.A, ButtonState.Up,
76          LiikutaPelaajaa, null, Vector.Zero);
77        Keyboard.Listen(Key.D, ButtonState.Down,
78          LiikutaPelaajaa, null, new Vector(1000, 0));
79        Keyboard.Listen(Key.D, ButtonState.Up,
80          LiikutaPelaajaa, null, Vector.Zero);
81        Keyboard.Listen(Key.W, ButtonState.Down,
82          LiikutaPelaajaa, null, new Vector(0, 1000));
83        Keyboard.Listen(Key.W, ButtonState.Down,
84          LiikutaPelaajaa, null, Vector.Zero);
85        Keyboard.Listen(Key.S, ButtonState.Down,
86          LiikutaPelaajaa, null, new Vector(0, -1000));
87        Keyboard.Listen(Key.S, ButtonState.Up,
88         LiikutaPelaajaa, null, Vector.Zero);
89        Keyboard.Listen(Key.O, ButtonState.Pressed, Pause, "Pysäyttää pelin");
90        Keyboard.Listen(Key.P, ButtonState.Down, AmmuAseella, "Ammu");
91        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
92        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
93    }
94
95    void LiikutaPelaajaa(Vector vektori)
96    {
97        pelaaja.Push(vektori);
98    }
99
100
101
102    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
103    {
104         pelaaja = new PhysicsObject(30, 30);
105         pelaaja.Image = pelaajanKuva;
106         pelaaja.Position = paikka;
107         pelaaja.Restitution = 0;
108         pelaaja.CanRotate = false;
109         Add(pelaaja);
110         AddCollisionHandler(pelaaja, "vihu", PelaajaTormasi);
111         AddCollisionHandler(pelaaja, "Ase", PelaajaSaaAseen);
112         AddCollisionHandler(pelaaja, "ovi", SeuraavaKentta);
113
114         
115
116         
117    }
118
119    void LuoPalikka(Vector paikka, double leveys, double korkeus)
120    {
121        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
122        palikka.Position = paikka;
123        palikka.Color = Color.BrownGreen;
124        Add(palikka);
125
126    }
127
128    void LuoOvi(Vector paikka, double leveys, double korkeus)
129    {
130        PhysicsObject ovi = PhysicsObject.CreateStaticObject(leveys, korkeus);
131        ovi.Position = paikka;
132        ovi.Image = LoadImage("ovi");
133        ovi.Tag = "ovi";
134        Add(ovi);
135
136    }
137
138    void LuoVihu(Vector paikka, double leveys, double korkeus)
139    {
140        PhysicsObject vihu = new PhysicsObject(50, 100);
141        vihu.Position = paikka;
142        vihu.Image = vihollisenKuva;
143        vihu.Tag = "vihu";
144        Add(vihu);
145
146        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
147        seuraajanAivot.Speed = 400;           
148        seuraajanAivot.DistanceClose = 900;         
149        seuraajanAivot.StopWhenTargetClose = false;
150
151        vihu.Brain = seuraajanAivot;
152        vihu.Brain.Active = true;
153    }
154
155    void PelaajaTormasi(PhysicsObject pelaaja, PhysicsObject kohde)
156    {
157        if (kohde.Tag == "vihu")
158        {
159            pelaaja.Destroy();
160            ClearAll();
161            LuoAlkuValikko();
162        }
163
164    }
165
166    void LuoKerattavaAse(Vector paikka, double leveys, double korkeus)
167    {
168        PhysicsObject kerattavaAse = new PhysicsObject(leveys, korkeus);
169        kerattavaAse.Position = paikka;
170        kerattavaAse.Image = asekuva;
171        Add(kerattavaAse);
172        kerattavaAse.Tag = "Ase";
173 
174    }
175
176    void PelaajaSaaAseen(PhysicsObject pelaaja, PhysicsObject kohde)
177    {
178        kohde.Destroy();
179        ase = new AssaultRifle(50, 10);
180        ase.Ammo.Value = 10;
181        ase.ProjectileCollision = AmmusOsui;
182        pelaaja.Add(ase);
183    }
184
185    void AmmuAseella()
186    {
187        PhysicsObject ammus = ase.Shoot();
188
189        if (ammus != null)
190        {
191            ammus.Size *= 0.9;
192           
193            //ammus.Image = ...
194            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
195        }
196    }
197
198    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
199    {
200        ammus.Destroy();
201        if (kohde.Tag == "vihu")
202        {
203            //kohde.Destroy();
204
205            kohde.Move(new Vector(1000000,1000000));
206            vihuAmmuttu = true;
207        }
208    }
209
210    void SeuraavaKentta(PhysicsObject pelaaja, PhysicsObject kohde)
211    {
212        if (kohde.Tag == "ovi")
213        {
214            if (!vihuAmmuttu) return;
215
216            kenttaNro++;
217            if (kenttaNro > maxKenttaNro) PeliLoppui();
218            else
219            {
220                ClearAll();
221                AloitaPeli();
222            }
223        }
224    }
225
226    void PeliLoppui()
227    {
228        ClearAll();
229        LuoAlkuValikko();
230    }
231         
232}
233
234
235
236
Note: See TracBrowser for help on using the repository browser.