source: 2012/27/NikoKa/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1.cs @ 3838

Revision 3838, 7.1 KB checked in by sieerinn, 9 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 Tasohyppelypeli1 : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 1000;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16    PlatformCharacter Nuunuu;
17
18    IntMeter elamat = new IntMeter(50);
19    IntMeter nuunuuElamat = new IntMeter(50);
20
21    Image pelaajanKuva = LoadImage("Spyro");
22    Image viholliskuva= LoadImage("Teletapit");
23    Image pääviholliskuva = LoadImage("Nuunuu");
24    Image timanttikuva = LoadImage("Timantti");
25
26    SoundEffect maaliAani = LoadSoundEffect("maali"); 
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 = 1.2;
37        Camera.StayInLevel = true;
38    }
39
40    void LuoKentta()
41    {
42        TileMap kentta = TileMap.FromLevelAsset("kentta1");
43        kentta.SetTileMethod('#', LisaaTaso);
44        kentta.SetTileMethod('T', LisaaTeletapit);
45        kentta.SetTileMethod('S', LisaaPelaaja);
46        kentta.SetTileMethod('N', LisaaNuunuu);
47        kentta.SetTileMethod('Y', LisaaTimantti);
48        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
49        Level.CreateBorders();
50        Level.Background.Image = LoadImage("Teletappimaa");
51
52        elamat.MaxValue = 50;
53        elamat.MinValue = 0;
54        elamat.LowerLimit += PelaajaKuolee;
55
56        nuunuuElamat.MaxValue = 50;
57        nuunuuElamat.MinValue = 0;
58        nuunuuElamat.LowerLimit += nuunuuKuolee;
59       
60        ProgressBar elamaPalkki = new ProgressBar(150, 20);
61        elamaPalkki.X = Screen.Left + 150;
62        elamaPalkki.Y = Screen.Top - 20;
63        elamaPalkki.Color = Color.Red;
64        elamaPalkki.BarColor = Color.LimeGreen;
65        elamaPalkki.BindTo(elamat);
66
67        ProgressBar elamaPalkki2 = new ProgressBar(150, 20);
68        elamaPalkki2.X = Screen.Right - 150;
69        elamaPalkki2.Y = Screen.Top - 20;
70        elamaPalkki2.Color = Color.DarkViolet;
71        elamaPalkki2.BarColor = Color.Black;
72        elamaPalkki2.BindTo(nuunuuElamat);
73       
74        Add(elamaPalkki);
75        Add(elamaPalkki2);
76    }
77
78    void LisaaTaso(Vector paikka, double leveys, double korkeus)
79    {
80        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
81        taso.Position = paikka;
82        taso.Color = Color.Purple;
83        Add(taso);
84    }   
85
86    void LisaaTeletapit(Vector paikka, double leveys, double korkeus)
87    {
88        PlatformCharacter Teletapit = new PlatformCharacter(leveys, korkeus);
89        //Teletapit.IgnoresCollisionResponse = true;
90        Teletapit.Position = paikka;
91        Teletapit.Image = viholliskuva;
92        Teletapit.Tag = "Teletapit";
93        Add(Teletapit);
94        //Teletapit.CollisionIgnoreGroup = 2;
95        PlatformWandererBrain aivo = new PlatformWandererBrain();
96        Teletapit.Brain = aivo;
97    }
98
99    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
100    {
101        pelaaja1 = new PlatformCharacter(leveys, korkeus);
102        pelaaja1.Position = paikka;
103        pelaaja1.Mass = 4.0;
104        pelaaja1.Image = pelaajanKuva;
105        pelaaja1.AnimWalk = new Animation(pelaajanKuva);
106        //pelaaja1.LeftWalkingAnimation = new Animation(Image.Mirror(pelaajanKuva));
107        AddCollisionHandler(pelaaja1, "Timantti", TormaaTahteen);
108        AddCollisionHandler(pelaaja1, "Teletapit", PelaajaanOsuu);
109
110       
111       
112        Keyboard.Listen( Key.Space, ButtonState.Down, ammutulella, "Ammu" );
113        pelaaja1.CollisionIgnoreGroup = 1;
114        Add(pelaaja1);
115    }
116
117    void PelaajaKuolee()
118    {
119        pelaaja1.Destroy();
120    }
121
122    void PelaajaanOsuu(PhysicsObject hahmo, PhysicsObject vihollinen)
123    {
124        elamat.Value--;
125    }
126
127    void nuunuuKuolee()
128    {
129        Nuunuu.Destroy();
130    }
131
132    void ammutulella()
133    {
134        PhysicsObject tuli = new PhysicsObject(10, 10);
135        tuli.Color = Color.OrangeRed;
136        Add(tuli);
137        tuli.Position = pelaaja1.Position;
138        tuli.IgnoresGravity = true;
139        Vector suunta = new Vector(pelaaja1.FacingDirection.GetVector().X * 200, 0);
140        tuli.Hit(suunta);
141        tuli.CollisionIgnoreGroup = 1;
142        tuli.MaximumLifetime = TimeSpan.FromSeconds(1.0);
143        AddCollisionHandler(tuli, "Teletapit", tuliosuu);
144        AddCollisionHandler(tuli, "Nuunuu", tuliosuuNuunuu);
145    }
146
147    void tuliosuu(PhysicsObject tuli, PhysicsObject Teletapit)
148    {
149        Teletapit.Destroy();
150    }
151
152    void tuliosuuNuunuu(PhysicsObject tuli, PhysicsObject Nuunuu)
153    {
154
155
156        nuunuuElamat.Value--;
157    }
158
159    void LisaaNuunuu(Vector paikka, double leveys, double korkeus)
160    {
161        Nuunuu = new PlatformCharacter(leveys, korkeus);
162        //Nuunuu.IgnoresCollisionResponse = true;
163        Nuunuu.Position = paikka;
164        Nuunuu.Image = pääviholliskuva;
165        Nuunuu.Tag = "Nuunuu";
166        Add(Nuunuu);
167        //Teletapit.CollisionIgnoreGroup = 2;
168        PlatformWandererBrain aivo = new PlatformWandererBrain();
169        Nuunuu.Brain = aivo;
170    }
171
172    void LisaaTimantti(Vector paikka, double leveys, double korkeus)
173    {
174        PhysicsObject Timantti = PhysicsObject.CreateStaticObject(leveys, korkeus);
175        Timantti.IgnoresCollisionResponse = true;
176        Timantti.Position = paikka;
177        Timantti.Image = timanttikuva;
178        Timantti.Tag = "Timantti";
179        Add(Timantti);
180    }
181
182    void LisaaNappaimet()
183    {
184        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
185        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
186        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
187
188        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
189        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
190        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
191
192        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
193
194        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
195        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
196        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
197
198        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
199    }
200
201    void Liikuta(PlatformCharacter hahmo, double nopeus)
202    {
203        hahmo.Walk(nopeus);
204    }
205
206    void Hyppaa(PlatformCharacter hahmo, double nopeus)
207    {
208        hahmo.Jump(nopeus);
209    }
210
211    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject Timantti)
212    {
213        maaliAani.Play();
214        MessageDisplay.Add("Keräsit Timantin!");
215        Timantti.Destroy();
216       
217       
218    }
219}   
220   
Note: See TracBrowser for help on using the repository browser.