source: 2013/26/JuusoM/amnesia2d/amnesia2d/amnesia2d/amnesia2d.cs @ 10335

Revision 4303, 11.8 KB checked in by juiitamm, 6 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 amnesia2d : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16
17    Image Tiili = LoadImage("Tiili");
18    Image pelaajanKuva = LoadImage("HahmoV2");
19    Image tulitikkuKuva = LoadImage("tahti");
20    Image kalterit = LoadImage("Kalterit");
21    Image kivi = LoadImage("Kivi");
22    Image hajonnutKalteri = LoadImage("Kalterit");
23    Image venttiiliPic = LoadImage("venttiili");
24    Image tynnyriPic = LoadImage("Tynnyri");
25    Image infoPic = LoadImage("TietoLaatikko");
26    Image oviPic = LoadImage("Ovi");
27    Image tausta = LoadImage("TaustaTiili");
28    Image Kynttelikko = LoadImage("Kynttelikko");
29
30    int pMaxMaara = 250;
31    ExplosionSystem rajahdys;
32    ExplosionSystem rajahdys2;
33    ExplosionSystem rajahdys3;
34
35    SoundEffect maaliAani = LoadSoundEffect("maali");
36   
37   
38
39    Light valo;
40
41   
42
43    public override void Begin()
44    {
45        SetWindowSize(1024, 768, false);
46
47       rajahdys = new ExplosionSystem(LoadImage("rajahdys"), pMaxMaara);
48       rajahdys.MinLifetime = 0.2;
49       rajahdys.MaxLifetime = 0.5;
50       rajahdys.MinScale = 10.0;
51       rajahdys.MaxScale = 60.0;
52       rajahdys.MinVelocity = 20.0;
53       rajahdys.MaxVelocity = 50.0;
54       Add(rajahdys);
55
56       rajahdys2 = new ExplosionSystem(LoadImage("rajahdys2"), pMaxMaara);
57       rajahdys2.MinLifetime = 0.2;
58       rajahdys2.MaxLifetime = 0.5;
59       rajahdys2.MinScale = 70.0;
60       rajahdys2.MaxScale = 80.0;
61       rajahdys2.MinVelocity = 40.0;
62       rajahdys2.MaxVelocity = 70.0;
63       Add(rajahdys2);
64
65       rajahdys3 = new ExplosionSystem(LoadImage("rajahdys3"), pMaxMaara);
66       rajahdys3.MinLifetime = 0.2;
67       rajahdys3.MaxLifetime = 0.5;
68       rajahdys3.MinScale = 40.0;
69       rajahdys3.MaxScale = 60.0;
70       rajahdys3.MinVelocity = 30.0;
71       rajahdys3.MaxVelocity = 50.0;
72       Add(rajahdys3);
73
74        Gravity = new Vector(0, -1000);
75
76        LuoKentta();
77        LisaaNappaimet();
78        LuoLaskuri();
79
80        Camera.Follow(pelaaja1);
81        Camera.ZoomFactor = 1.7;
82        Camera.StayInLevel = true;
83
84       
85    }
86
87    void LuoKentta()
88    {
89        ColorTileMap kentta = ColorTileMap.FromLevelAsset("Kartta3");
90        kentta.SetTileMethod(Color.Black, LisaaTaso);
91        kentta.SetTileMethod(Color.Gold, LisaaTulitikku);
92        kentta.SetTileMethod(Color.Red, LisaaPelaaja);
93        kentta.SetTileMethod(Color.Orange, LisaaKalteri);
94        kentta.Optimize(Color.Orange);
95        kentta.SetTileMethod(Color.YellowGreen, LisaaHajonnutKalteri);
96        kentta.Optimize(Color.YellowGreen);
97        kentta.SetTileMethod(Color.Harlequin, LisaaVenttiili);
98        kentta.SetTileMethod(Color.BrightGreen, LisaaTynnyri);
99        kentta.SetTileMethod(Color.SpringGreen, LisaaKivi);
100        kentta.SetTileMethod(Color.Cyan, LisaaInfo);
101        kentta.SetTileMethod(Color.Azure, LisaaInfo2);
102        kentta.SetTileMethod(Color.PaintDotNetBlue, LisaaOvi);
103        kentta.Optimize(Color.PaintDotNetBlue);
104        kentta.SetTileMethod("808080", LisaaInfo3);
105        kentta.SetTileMethod(Color.DarkGray, LisaaKynttelikko);
106        kentta.Optimize(Color.DarkGray);
107        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
108        Level.CreateBorders();
109        Level.Background.Image = tausta;
110        Level.Background.TileToLevel();
111
112        Level.AmbientLight = -1.0;
113
114        valo = new Light();
115        valo.Intensity = 2.0;
116        valo.Distance = 300;
117        valo.Position = pelaaja1.Position;
118
119        Add(valo);
120    }
121
122    protected override void Update(Microsoft.Xna.Framework.GameTime gameTime)
123    {
124        valo.Position = pelaaja1.AbsolutePosition;
125        base.Update(gameTime);
126    }
127
128    void LisaaTaso(Vector paikka, double leveys, double korkeus)
129    {
130        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
131        taso.Position = paikka;
132        taso.Image = Tiili;
133        Add(taso);
134    }
135
136    void LisaaKynttelikko(Vector paikka, double leveys, double korkeus)
137    {
138        PhysicsObject kynttelikko = PhysicsObject.CreateStaticObject(leveys, korkeus);
139        kynttelikko.Position = paikka;
140        kynttelikko.Image = Kynttelikko;
141        kynttelikko.IgnoresCollisionResponse = true;
142        Add(kynttelikko);
143
144       
145    }
146
147    void LisaaOvi(Vector paikka, double leveys, double korkeus)
148    {
149        PhysicsObject ovi = PhysicsObject.CreateStaticObject(leveys, korkeus);
150        ovi.Position = paikka;
151        ovi.Image = oviPic;
152        ovi.Tag = "oviTag";
153        Add(ovi);
154    }
155
156    void LisaaKivi(Vector paikka, double leveys, double korkeus)
157    {
158        PhysicsObject Kivi = PhysicsObject.CreateStaticObject(leveys, korkeus);
159        Kivi.Position = paikka;
160        Kivi.Image = kivi;
161        Kivi.Tag = "kiviTag";
162        Add(Kivi);
163    }
164
165    void PelaajaTormasi(PhysicsObject pelaaja1, PhysicsObject kohde)
166    {
167        if (kohde.Tag.ToString() == "kiviTag")
168        {
169            rajahdys.AddEffect(kohde.Position.X, kohde.Position.Y, pMaxMaara);
170        }
171        if (kohde.Tag.ToString() == "HajoavatKalterit")
172        {
173            rajahdys2.AddEffect(kohde.Position.X, kohde.Position.Y, pMaxMaara);
174        }
175        if (kohde.Tag.ToString() == "venttiiliTag")
176        {
177            rajahdys3.AddEffect(kohde.Position.X, kohde.Position.Y, pMaxMaara);
178        }
179        if (kohde.Tag.ToString() == "oviTag")
180        {
181            Exit();
182        }
183    }
184
185    void LisaaTynnyri(Vector paikka, double leveys, double korkeus)
186    {
187        PhysicsObject tynnyri = PhysicsObject.CreateStaticObject(leveys, korkeus);
188        tynnyri.Position = paikka;
189        tynnyri.Image = tynnyriPic;
190        Add(tynnyri);
191    }
192
193    void LisaaKalteri(Vector paikka, double leveys, double korkeus)
194    {
195        PhysicsObject kalteri = PhysicsObject.CreateStaticObject(leveys, korkeus);
196        kalteri.Position = paikka;
197        kalteri.Image = kalterit;
198        kalteri.Tag = "Kalterit";
199        Add(kalteri);
200    }
201
202    void LisaaInfo(Vector paikka, double leveys, double korkeus)
203    {
204        PhysicsObject info = PhysicsObject.CreateStaticObject(leveys, korkeus);
205        info.IgnoresCollisionResponse = true;
206        info.Position = paikka;
207        info.Image = infoPic;
208        info.Tag = "Info";
209        Add(info);
210    }
211
212    void LisaaInfo2(Vector paikka, double leveys, double korkeus)
213    {
214        PhysicsObject info2 = PhysicsObject.CreateStaticObject(leveys, korkeus);
215        info2.IgnoresCollisionResponse = true;
216        info2.Position = paikka;
217        info2.Image = infoPic;
218        info2.Tag = "Info2";
219        Add(info2);
220    }
221
222    void LisaaInfo3(Vector paikka, double leveys, double korkeus)
223    {
224        PhysicsObject info3 = PhysicsObject.CreateStaticObject(leveys, korkeus);
225        info3.IgnoresCollisionResponse = true;
226        info3.Position = paikka;
227        info3.Image = infoPic;
228        info3.Tag = "Info3";
229        Add(info3);
230    }
231
232    void LisaaHajonnutKalteri(Vector paikka, double leveys, double korkeus)
233    {
234        PhysicsObject hajoavaKalteri = PhysicsObject.CreateStaticObject(leveys, korkeus);
235        hajoavaKalteri.Position = paikka;
236        hajoavaKalteri.Image = kalterit;
237        hajoavaKalteri.Tag = "HajoavatKalterit";
238        Add(hajoavaKalteri);
239    }
240
241    void LisaaVenttiili(Vector paikka, double leveys, double korkeus)
242    {
243        PhysicsObject hajoavaVenttiili = PhysicsObject.CreateStaticObject(leveys, korkeus);
244        hajoavaVenttiili.Position = paikka;
245        hajoavaVenttiili.Image = venttiiliPic;
246        hajoavaVenttiili.Tag = "venttiiliTag";
247        Add(hajoavaVenttiili);
248    }
249
250    void LisaaTulitikku(Vector paikka, double leveys, double korkeus)
251    {
252        PhysicsObject tulitikku = PhysicsObject.CreateStaticObject(leveys, korkeus);
253        tulitikku.IgnoresCollisionResponse = true;
254        tulitikku.Position = paikka;
255        tulitikku.Image = tulitikkuKuva;
256        tulitikku.Tag = "tulitikku";
257        Add(tulitikku);
258    }
259
260    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
261    {
262        pelaaja1 = new PlatformCharacter(leveys-9, korkeus-6);
263        pelaaja1.Position = paikka;
264        pelaaja1.Mass = 4.0;
265        pelaaja1.Image = pelaajanKuva;
266        AddCollisionHandler(pelaaja1, "tulitikku", TormaaTulitikkuun);
267        AddCollisionHandler(pelaaja1, "Kalterit", TormaaKalteriin);
268        AddCollisionHandler(pelaaja1, "HajoavatKalterit", rikoKalterit);
269        AddCollisionHandler(pelaaja1, "venttiiliTag", rikoVenttiili);
270        AddCollisionHandler(pelaaja1, "kiviTag", rikoKivi);
271        AddCollisionHandler(pelaaja1, "Info", naytaViesti);
272        AddCollisionHandler(pelaaja1, "Info2", naytaViesti2);
273        AddCollisionHandler(pelaaja1, "Info3", naytaViesti3);
274        AddCollisionHandler(pelaaja1, PelaajaTormasi);
275
276
277        Add(pelaaja1);
278    }
279
280    void LisaaNappaimet()
281    {
282        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
283        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
284
285        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
286        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
287        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
288
289        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
290
291        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
292        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
293        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
294
295        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
296    }
297
298    void Liikuta(PlatformCharacter hahmo, double nopeus)
299    {
300        hahmo.Walk(nopeus);
301    }
302
303    void Hyppaa(PlatformCharacter hahmo, double nopeus)
304    {
305        hahmo.Jump(nopeus);
306    }
307
308  void TormaaTulitikkuun(PhysicsObject hahmo, PhysicsObject tikku)
309  {
310      maaliAani.Play();
311      MessageDisplay.Add("Löysit tulitikut");
312      tikku.Destroy();
313      laskuri.Value += 1;
314  }
315
316  void rikoKivi(PhysicsObject hahmo, PhysicsObject kivi)
317  {
318      kivi.Destroy();
319  }
320
321  void TormaaKalteriin(PhysicsObject hahmo, PhysicsObject kalteri)
322  {
323      MessageDisplay.Add("Jumissa");
324  }
325
326  void rikoKalterit(PhysicsObject hahmo, PhysicsObject hajoavaKalteri)
327  {
328      hajoavaKalteri.Destroy();
329  }
330
331  void rikoVenttiili(PhysicsObject hahmo, PhysicsObject hajoavaVenttiili)
332  {
333      hajoavaVenttiili.Destroy();
334  }
335
336  void naytaViesti(PhysicsObject hahmo, PhysicsObject info)
337  {
338      MessageDisplay.Add("Hmm... Vanha tuuletuskanava. Ehkä pääsen sinne sisään...");
339
340  }
341
342  void naytaViesti2(PhysicsObject hahmo, PhysicsObject info2)
343  {
344      MessageDisplay.Add("Lisää tuuletuskanavia? Ehkä pääsen sinnekin");
345
346  }
347
348  void naytaViesti3(PhysicsObject hamo, PhysicsObject info3)
349  {
350      MessageDisplay.Add("Nämä kalterit näyttävät muita hauraammilta, voin ehkä rikkoa ne");
351  }
352
353
354  IntMeter laskuri;
355 
356  IntMeter LuoLaskuri()
357  {
358      laskuri = new IntMeter(0);
359      Label naytto = new Label();
360
361      naytto.Right = Screen.Right - 100;
362      naytto.Top  = Screen.Top - 100;
363      naytto.TextColor = Color.White;
364      naytto.BorderColor = Color.Transparent;
365      naytto.Color = Color.Transparent;
366
367      naytto.BindTo(laskuri);
368      Add(naytto);
369      return laskuri;
370  }
371}
Note: See TracBrowser for help on using the repository browser.