source: 2014/24/OttoH/TasoHyppyV1/TasoHyppyV1/TasoHyppyV1/TasoHyppyV1.cs @ 4942

Revision 4942, 6.4 KB checked in by ottjerju, 5 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 TasoHyppyV1 : PhysicsGame
10{
11
12   
13   
14    const double nopeus = 200;
15    const double hyppyNopeus = 550;
16    const int RUUDUN_KOKO = 20;
17
18    PlatformCharacter pelaaja1;
19    Image piikinKuva = LoadImage("piikki2");
20    Image vihunKuva = LoadImage("pommi2");
21    Image pelaajanKuva = LoadImage("sieni4");
22    Image tahtiKuva = LoadImage("mariostar2");
23
24    SoundEffect maaliAani = LoadSoundEffect("maali");
25
26    public override void Begin()
27    {
28       
29        LuoAlkuValikko();
30    }
31
32    void LuoAlkuValikko()
33    {
34        ClearAll();
35
36        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
37            "Aloita alusta", "Lopeta");
38        Add(alkuValikko);
39
40
41        alkuValikko.AddItemHandler(0, AloitaPeli);
42        alkuValikko.AddItemHandler(1, Exit);
43    }
44
45    void AloitaPeli()
46    {
47        Gravity = new Vector(0, -1000);
48
49        LuoKentta();
50        LisaaNappaimet();
51
52        Camera.Follow(pelaaja1);
53        Camera.ZoomFactor = 1.2;
54        Camera.StayInLevel = true;
55    }
56
57    void LuoKentta()
58    {
59        TileMap kentta = TileMap.FromLevelAsset("kentta1");
60       
61        kentta.SetTileMethod('#', LisaaTaso);
62        kentta.SetTileMethod('*', LisaaTahti);
63        kentta.SetTileMethod('o', LisaaTayteTaso);
64        kentta.SetTileMethod('N', LisaaPelaaja);
65        kentta.SetTileMethod('V', LisaaVihu);
66        kentta.SetTileMethod('P', LisaaPiikki);
67        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
68        Level.CreateBorders();
69        Level.Background.CreateStars( 2500 );
70        Level.Background.FitToLevel();
71    }
72
73    void LisaaPiikki(Vector paikka, double leveys, double korkeus)
74    {
75        PhysicsObject piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);
76        piikki.Position = paikka;
77        piikki.Image = piikinKuva;
78        Add(piikki);
79
80        piikki.Tag = "piikki";
81    }
82   
83
84    void LisaaTaso(Vector paikka, double leveys, double korkeus)
85    {
86       PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
87        taso.Position = paikka;
88        taso.Color = Color.DarkGray;
89        taso.Tag = "taso";
90        Add(taso);
91    }
92
93    void LisaaTahti(Vector paikka, double leveys, double korkeus)
94    {
95        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
96        tahti.IgnoresCollisionResponse = true;
97        tahti.Position = paikka;
98        tahti.Image = tahtiKuva;
99        tahti.Tag = "mariostar2";
100        Add(tahti);
101    }
102
103    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
104    {
105        pelaaja1 = new PlatformCharacter(leveys, korkeus);
106        pelaaja1.Position = paikka;
107        pelaaja1.Mass = 4.0;
108        pelaaja1.Image = pelaajanKuva;
109        AddCollisionHandler(pelaaja1, "mariostar2", TormaaTahteen);
110        AddCollisionHandler(pelaaja1, "vihu", TormaaVihuun);
111        Add(pelaaja1);
112        AddCollisionHandler(pelaaja1, "piikki", TormaaVihuun);
113        pelaaja1.Weapon = new AssaultRifle (30, 10);
114        pelaaja1.Weapon.Ammo.Value = 70; 
115        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
116       
117
118    }
119
120    void TormaaVihuun(PhysicsObject pelaaja, PhysicsObject vihu)
121    {
122        if (vihu.Tag == "vihu")
123        {
124            pelaaja.Destroy();
125            LuoAlkuValikko();
126        }
127        else if (vihu.Tag == "piikki")
128        {
129            pelaaja.Destroy();
130            LuoAlkuValikko();
131        }
132    }
133
134    void LisaaVihu(Vector paikka, double leveys, double korkeus)
135    {
136        PlatformCharacter vihu = new PlatformCharacter(leveys, korkeus);
137        vihu.Position = paikka;
138        vihu.Mass = 4.0;
139        vihu.Image = vihunKuva;
140        vihu.Tag = "vihu";
141        AddCollisionHandler(vihu, "sieni4", TormaaTahteen);
142        Add(vihu);
143       
144
145       
146    }
147    void LisaaNappaimet()
148    {
149        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
150        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
151
152        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
153        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
154        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
155
156        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
157
158        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
159        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
160        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
161
162        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
163        Keyboard.Listen(Key.P, ButtonState.Pressed, Pause, "Pysäyttää pelin");
164        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
165    }
166
167    void Liikuta(PlatformCharacter hahmo, double nopeus)
168    {
169        hahmo.Walk(nopeus);
170    }
171
172    void Hyppaa(PlatformCharacter hahmo, double nopeus)
173    {
174        hahmo.Jump(nopeus);
175    }
176
177    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
178    {
179        maaliAani.Play();
180        MessageDisplay.Add("Pelastit tähden!");
181        tahti.Destroy();
182    }
183
184    void LisaaTayteTaso(Vector paikka, double leveys, double korkeus)
185    {
186        GameObject taso = new GameObject(leveys, korkeus);
187        taso.Position = paikka;
188        taso.Color = Color.DarkGray;
189        Add(taso);
190    }
191   
192
193    void AmmusOsui (PhysicsObject ammus, PhysicsObject kohde)
194    {
195        //Destroy();
196     
197    }
198
199    void AmmuAseella(PlatformCharacter pelaaja)
200    {
201        PhysicsObject ammus = pelaaja.Weapon.Shoot();
202
203        if (ammus != null)
204        {
205            //ammus.Size *= 3;
206            //ammus.Image = ...
207            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
208            AddCollisionHandler(ammus, "vihu", CollisionHandler.DestroyBoth);
209            AddCollisionHandler(ammus, "taso", CollisionHandler.DestroyObject);
210        }
211    }
212   
213   }
214
Note: See TracBrowser for help on using the repository browser.