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

Revision 4229, 5.2 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 tahtiKuva = LoadImage("tahti");
20    Image kalterit = LoadImage("Kalterit");
21    Image kivi = LoadImage("Kivi");
22    Image hajonnutKalteri = LoadImage("Kalterit");
23
24    SoundEffect maaliAani = LoadSoundEffect("maali");
25
26    Light valo;
27
28    public override void Begin()
29    {
30        Gravity = new Vector(0, -1000);
31
32        LuoKentta();
33        LisaaNappaimet();
34
35        Camera.Follow(pelaaja1);
36        Camera.ZoomFactor = 2.2;
37        Camera.StayInLevel = true;
38    }
39
40    void LuoKentta()
41    {
42        ColorTileMap kentta = ColorTileMap.FromLevelAsset("Kartta3");
43        kentta.SetTileMethod(Color.Black, LisaaTaso);
44        kentta.SetTileMethod(Color.Gold, LisaaTahti);
45        kentta.SetTileMethod(Color.Red, LisaaPelaaja);
46        kentta.SetTileMethod(Color.Orange, LisaaKalteri);
47        kentta.Optimize(Color.Orange);
48        kentta.SetTileMethod(Color.YellowGreen, LisaaHajonnutKalteri);
49        kentta.Optimize(Color.YellowGreen);
50        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
51        Level.CreateBorders();
52        Level.Background.Color = Color.Black;
53
54        Level.AmbientLight = -1.0;
55
56        valo = new Light();
57        valo.Intensity = 2.0;
58        valo.Distance = 250;
59        valo.Position = pelaaja1.Position;
60
61        Add(valo);
62    }
63
64    protected override void Update(Microsoft.Xna.Framework.GameTime gameTime)
65    {
66        valo.Position = pelaaja1.AbsolutePosition;
67        base.Update(gameTime);
68    }
69
70    void LisaaTaso(Vector paikka, double leveys, double korkeus)
71    {
72        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
73        taso.Position = paikka;
74        taso.Image = Tiili;
75        Add(taso);
76    }
77
78    void LisaaKalteri(Vector paikka, double leveys, double korkeus)
79    {
80        PhysicsObject kalteri = PhysicsObject.CreateStaticObject(leveys, korkeus);
81        kalteri.Position = paikka;
82        kalteri.Image = kalterit;
83        kalteri.Tag = "Kalterit";
84        Add(kalteri);
85    }
86
87    void LisaaHajonnutKalteri(Vector paikka, double leveys, double korkeus)
88    {
89        PhysicsObject hajoavaKalteri = PhysicsObject.CreateStaticObject(leveys, korkeus);
90        hajoavaKalteri.Position = paikka;
91        hajoavaKalteri.Image = kalterit;
92        hajoavaKalteri.Tag = "HajoavatKalterit";
93        Add(hajoavaKalteri);
94    }
95
96
97    void LisaaTahti(Vector paikka, double leveys, double korkeus)
98    {
99        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
100        tahti.IgnoresCollisionResponse = true;
101        tahti.Position = paikka;
102        tahti.Image = tahtiKuva;
103        tahti.Tag = "tahti";
104        Add(tahti);
105    }
106
107    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
108    {
109        pelaaja1 = new PlatformCharacter(leveys-9, korkeus-6);
110        pelaaja1.Position = paikka;
111        pelaaja1.Mass = 4.0;
112        pelaaja1.Image = pelaajanKuva;
113        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
114        AddCollisionHandler(pelaaja1, "Kalterit", TormaaKalteriin);
115        AddCollisionHandler(pelaaja1, "HajoavatKalterit", rikoKalterit);
116        Add(pelaaja1);
117    }
118
119    void LisaaNappaimet()
120    {
121        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
122        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
123
124        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
125        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
126        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
127
128        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
129
130        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
131        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
132        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
133
134        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
135    }
136
137    void Liikuta(PlatformCharacter hahmo, double nopeus)
138    {
139        hahmo.Walk(nopeus);
140    }
141
142    void Hyppaa(PlatformCharacter hahmo, double nopeus)
143    {
144        hahmo.Jump(nopeus);
145    }
146
147  void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
148  {
149      maaliAani.Play();
150      MessageDisplay.Add("Löysit esineen");
151      tahti.Destroy();
152  }
153
154  void TormaaKalteriin(PhysicsObject hahmo, PhysicsObject kalteri)
155  {
156      MessageDisplay.Add("Jumissa");
157  }
158
159  void rikoKalterit(PhysicsObject hahmo, PhysicsObject hajoavaKalteri)
160  {
161      hajoavaKalteri.Destroy();
162  }
163}
Note: See TracBrowser for help on using the repository browser.