source: 2012/24/AnnaS/Hiiripeli/Hiiripeli/Hiiripeli/Hiiripeli.cs @ 3038

Revision 3038, 10.9 KB checked in by anmasavo, 7 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Hiiripeli : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 1000;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16
17    Image kissaKuva = LoadImage("Kissa");
18    Image tahtiKuva = LoadImage("Tahti");
19    Image lahtoKuva = LoadImage("Lahto");
20    Image maaliKuva = LoadImage("Maali");
21    Image ruohonKuva = LoadImage("Ruoho");
22    Image pelaajanKuva = LoadImage("Hiiri");
23    Image lentokoneKuva = LoadImage("Lentokone");
24    Image kuuKuva = LoadImage("Kuu");
25    Image pelaajanvasenKuva;
26    Image juustoKuva = LoadImage("Juusto");
27    Image lintuKuva = LoadImage("Lintu");
28    Image ufoKuva = LoadImage("Ufo");
29    Image pilviKuva1 = LoadImage("Pilvi");
30    Image planeettaKuva = LoadImage("Planeetta");
31    SoundEffect maaliAani = LoadSoundEffect("Maaliaani");
32
33    Vector lentokonepaikka;
34
35    public override void Begin()
36    {
37        Gravity = new Vector(0, -1000);
38        pelaajanvasenKuva = Image.Mirror(pelaajanKuva);
39        kissaKuva = Image.Mirror(kissaKuva);
40
41        luoKentta();
42        lisaaNappaimet();
43
44        Camera.Follow(pelaaja1);
45        Camera.ZoomFactor = 1.2;
46        Camera.StayInLevel = true;
47    }
48
49    void luoKentta()
50    {
51        TileMap kentta = TileMap.FromFile("kentta1.txt");
52        kentta.SetTileMethod('#', lisaaPilvi);
53        kentta.SetTileMethod('*', lisaaJuusto);
54        kentta.SetTileMethod('N', lisaaPelaaja);
55        kentta.SetTileMethod('R', lisaaRuoho);
56        kentta.SetTileMethod('L', lisaaLahto);
57        kentta.SetTileMethod('T', lisaaTahti);
58        kentta.SetTileMethod('K', lisaaKissa);
59        kentta.SetTileMethod('P', lisaaLentokoneajastin);
60        kentta.SetTileMethod('O', lisaaKuu);
61        kentta.SetTileMethod('T', lisaaTahti);
62        kentta.SetTileMethod('M', lisaaMaali);
63        kentta.SetTileMethod('I', lisaaEste);
64
65        kentta.SetTileMethod('o', lisaaPlaneetta);
66        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
67        Level.CreateBorders();
68        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
69        lisaaLintuajastin();
70        lisaaUfojastin();
71    }
72
73    void lisaaPilvi(Vector paikka, double leveys, double korkeus)
74    {
75        PhysicsObject Pilvi = PhysicsObject.CreateStaticObject(leveys * 2, korkeus);
76        Pilvi.Position = paikka;
77        Pilvi.Image = pilviKuva1;
78        Add(Pilvi);
79    }
80
81    void lisaaLentokoneajastin(Vector paikka, double leveys, double korkeus)
82    {
83        Timer ajastin = new Timer();
84        ajastin.Interval = 5;
85        ajastin.Timeout += lisaaLentokone;
86        ajastin.Start();
87        lentokonepaikka = paikka;
88    }
89
90    void lisaaLentokone()
91    {
92        PhysicsObject Lentokone = PhysicsObject.CreateStaticObject(lentokoneKuva);
93        // PhysicsObject Lentokone = new PhysicsObject(lentokoneKuva);
94        //Lentokone.Shape = Shape.FromImage(lentokoneKuva);
95        Lentokone.Position = lentokonepaikka;
96        Lentokone.IgnoresGravity = true;
97        //Lentokone.Hit(new Vector(10000, 0));
98        Lentokone.Velocity = new Vector(100, 0);
99        //Lentokone.Image = lentokoneKuva;
100        Add(Lentokone);
101    }
102
103    void lisaaTahti(Vector paikka, double leveys, double korkeus)
104    {
105        PhysicsObject Tahti = PhysicsObject.CreateStaticObject(leveys * 2, korkeus * 2);
106        Tahti.Position = paikka;
107        Tahti.Image = tahtiKuva;
108        Add(Tahti);
109    }
110
111
112    void lisaaJuusto(Vector paikka, double leveys, double korkeus)
113    {
114        PhysicsObject juusto = PhysicsObject.CreateStaticObject(leveys * 0.8, korkeus * 0.8);
115        juusto.IgnoresCollisionResponse = true;
116        juusto.Position = paikka;
117        juusto.Image = juustoKuva;
118        juusto.Tag = "Juusto";
119        Add(juusto);
120    }
121
122    void lisaaPelaaja(Vector paikka, double leveys, double korkeus)
123    {
124        pelaaja1 = new PlatformCharacter(leveys * 0.8, korkeus * 0.8);
125        pelaaja1.Position = paikka;
126        pelaaja1.Mass = 4.0;
127        pelaaja1.Image = pelaajanKuva;
128        AddCollisionHandler(pelaaja1, kasittelePelaajanTormays);
129        Add(pelaaja1);
130        pelaaja1.LeftWalkingAnimation = pelaajanvasenKuva;
131        pelaaja1.RightWalkingAnimation = pelaajanKuva;
132    }
133    void lisaaRuoho(Vector paikka, double leveys, double korkeus)
134    {
135        PhysicsObject Ruoho = PhysicsObject.CreateStaticObject(leveys * 2, korkeus);
136        Ruoho.Position = paikka;
137        Ruoho.Image = ruohonKuva;
138        Add(Ruoho);
139
140    }
141    void lisaaEste(Vector paikka, double leveys, double korkeus)
142    {
143        PhysicsObject Este = new PhysicsObject(leveys, korkeus);
144        Este.Position = paikka;
145        Este.Color = Color.Transparent;
146        Este.IgnoresCollisionResponse = true;
147        Este.IgnoresGravity = true;
148        //Este.IgnoresCollisionResponse = true;
149        Este.Tag = "este";
150        Add(Este);
151
152    }
153    void lisaaKissa(Vector paikka, double leveys, double korkeus)
154    {
155        PhysicsObject Kissa = PhysicsObject.CreateStaticObject(leveys, korkeus);
156        Kissa.Position = paikka;
157        Kissa.Image = kissaKuva;
158        Add(Kissa);
159        Kissa.Velocity = new Vector(-200, 0);
160        AddCollisionHandler(Kissa, "este", kissakaantyy);
161    }
162
163    void kissakaantyy(PhysicsObject Kissa, PhysicsObject este)
164    {
165        Kissa.Velocity = new Vector(Kissa.Velocity.X * -1, 0);
166        Kissa.Image = Image.Mirror(Kissa.Image);
167    }
168
169    void lisaaKissa2(Vector paikka, double leveys, double korkeus)
170    {
171
172
173        PhysicsObject Kissa = PhysicsObject.CreateStaticObject(leveys, korkeus);
174        Kissa.Image = Image.Mirror(kissaKuva);
175        Kissa.Hit(new Vector(0, -250));
176        Kissa.X = Level.Right;
177        Kissa.Y = RandomGen.NextDouble(Level.Bottom, Level.Bottom + 1000);
178        Add(Kissa);
179        Kissa.IgnoresCollisionResponse = true;
180
181    }
182    void lisaaMaali(Vector paikka, double leveys, double korkeus)
183    {
184        PhysicsObject Maali = PhysicsObject.CreateStaticObject(leveys * 2, korkeus);
185        Maali.Position = paikka;
186        Maali.Image = maaliKuva;
187        Add(Maali);
188        Maali.IgnoresCollisionResponse = true;
189
190    }
191
192
193    void lisaaPlaneetta(Vector paikka, double leveys, double korkeus)
194    {
195        PhysicsObject Planeetta = PhysicsObject.CreateStaticObject(leveys*3, korkeus*2);
196        Planeetta.Position = paikka;
197        Planeetta.Image = planeettaKuva;
198        Add(Planeetta);
199    }
200
201
202    void lisaaLintuajastin()
203    {
204        Timer lintuajastin = new Timer();
205        lintuajastin.Interval = 4;
206        lintuajastin.Timeout += delegate
207        {
208            lisaaLintu(RUUDUN_KOKO, RUUDUN_KOKO);
209            lisaaLintu2(RUUDUN_KOKO, RUUDUN_KOKO);
210        };
211        lintuajastin.Start();
212    }
213
214
215    void lisaaUfojastin()
216    {
217        Timer ufoajastin = new Timer();
218        ufoajastin.Interval = 2;
219        ufoajastin.Timeout += delegate
220        {
221            lisaaUfo(RUUDUN_KOKO, RUUDUN_KOKO);
222
223        };
224        ufoajastin.Start();
225    }
226
227
228
229
230
231
232
233
234
235
236    void lisaaKuu(Vector paikka, double leveys, double korkeus)
237    {
238        PhysicsObject Kuu = PhysicsObject.CreateStaticObject(leveys * 6, korkeus * 6);
239        Kuu.Position = paikka;
240        Kuu.Image = kuuKuva;
241        Add(Kuu);
242    }
243
244
245    void lisaaLahto(Vector paikka, double leveys, double korkeus)
246    {
247        PhysicsObject Lahto = PhysicsObject.CreateStaticObject(leveys * 2, korkeus);
248        Lahto.Position = paikka;
249        Lahto.Image = lahtoKuva;
250        Add(Lahto);
251        Lahto.IgnoresCollisionResponse = true;
252    }
253
254
255    void lisaaLintu2(double leveys, double korkeus)
256    {
257        PhysicsObject Lintu = PhysicsObject.CreateStaticObject(leveys, korkeus);
258
259        Lintu.Image = Image.Mirror(lintuKuva);
260        Lintu.Hit(new Vector(0, -250));
261        Lintu.X = Level.Right;
262        Lintu.Y = RandomGen.NextDouble(Level.Bottom, Level.Bottom + 1000);
263        Add(Lintu);
264        Lintu.IgnoresCollisionResponse = true;
265        Lintu.IgnoresGravity = true;
266        Lintu.Velocity = new Vector(-100, 0);
267        Add(Lintu);
268    }
269
270    void lisaaLintu(double leveys, double korkeus)
271    {
272        PhysicsObject Lintu = PhysicsObject.CreateStaticObject(leveys, korkeus);
273        Lintu.Image = lintuKuva;
274        Lintu.Hit(new Vector(0, 250));
275        Lintu.X = Level.Left;
276        Lintu.Y = RandomGen.NextDouble(Level.Bottom, Level.Bottom + 1000);
277        Add(Lintu);
278        Lintu.IgnoresCollisionResponse = true;
279        Lintu.IgnoresGravity = true;
280        Lintu.Velocity = new Vector(100, 0);
281        Add(Lintu);
282    }
283    void lisaaUfo(double leveys, double korkeus)
284    {
285        PhysicsObject Ufo = new PhysicsObject(leveys * 3, korkeus * 2);
286        Ufo.IgnoresGravity = true;
287        Ufo.Hit(new Vector(10,10));
288        Ufo.Image = ufoKuva;
289        Ufo.X = (200);
290        //Ufo.Y = (200);
291        Ufo.Bottom = Level.Bottom + 300;
292        Add(Ufo);
293        Ufo.IgnoresCollisionResponse = true;
294
295        RandomMoverBrain satunnaisAivot = new RandomMoverBrain();
296        satunnaisAivot.ChangeMovementSeconds = 3;
297        satunnaisAivot.Speed = 1500;
298        satunnaisAivot.Active = true;
299        Ufo.Brain = satunnaisAivot;
300        Ufo.Hit(new Vector(-500, 20));
301    }
302
303    void lisaaNappaimet()
304    {
305        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
306        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
307        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
308
309        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
310        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
311        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
312
313        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
314
315        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
316        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
317        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
318
319        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
320    }
321
322    void liikuta(PlatformCharacter hahmo, double nopeus)
323    {
324        hahmo.Walk(nopeus);
325    }
326
327    void hyppaa(PlatformCharacter hahmo, double nopeus)
328    {
329        hahmo.Jump(nopeus);
330    }
331
332    void kasittelePelaajanTormays(PhysicsObject hahmo, PhysicsObject kohde)
333    {
334        if (kohde.Tag.ToString() == "Juusto")
335        {
336            maaliAani.Play();
337            MessageDisplay.Add("Keräsit juuston!");
338            kohde.Destroy();
339
340        }
341    }
342}
Note: See TracBrowser for help on using the repository browser.