source: 2016/27/TomiR/OmaPeli/OmaPeli/OmaPeli/OmaPeli.cs @ 8040

Revision 8040, 8.1 KB checked in by tomamira, 3 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 OmaPeli : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16
17
18    Animation KävelyAnimaatio;
19    Animation HahmoHyppy;
20    Animation TaloAnimaatio;
21
22    Image pelaajanKuva = LoadImage("Hahmo3");
23    Image tahtiKuva = LoadImage("tahti");
24    Image Haamunkuva = LoadImage("Haamu");
25    Image Piikkikuva = LoadImage("Piikki");
26    Image Ruohoblokinkuva = LoadImage("Ruohoblokki");
27
28    SoundEffect Kolikkoaani = LoadSoundEffect("Kolikkoaani");
29    SoundEffect Hyppyaani = LoadSoundEffect("Hyppyaani");
30    SoundEffect Kuolemaaani = LoadSoundEffect("Kuolemaaani");
31
32
33    public override void Begin()
34    {
35        ClearAll();
36        LuoPaavalikko();
37        IsFullScreen = true;
38
39    }
40
41    void LuoPaavalikko(Window ikkuna) { LuoPaavalikko(); }
42
43
44    void LuoPaavalikko()
45    {
46        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
47      "Aloita peli", "Lopeta");
48        alkuValikko.AddItemHandler(0, AloitaPeli);
49        alkuValikko.AddItemHandler(1, Exit);
50        alkuValikko.BorderColor = Color.Black;
51        Level.Background.CreateGradient(Color.Blue, Color.DarkRed);
52        Add(alkuValikko);
53    }
54    void AloitaPeli()
55    {
56        ClearAll();
57
58
59       
60
61        Gravity = new Vector(0, -1000);
62        HahmoHyppy = LoadAnimation("AnimaatioHyppy");
63        KävelyAnimaatio = LoadAnimation("Animaatio");
64        TaloAnimaatio = LoadAnimation("AnimaatioTalo");
65        for (int i = 0; i < 10; i++)
66        {
67            LisaaVihollinen();
68        }
69
70
71        LuoKentta();
72        LisaaNappaimet();
73
74        Camera.Follow(pelaaja1);
75        Camera.ZoomFactor = 2;
76        Camera.StayInLevel = true;
77       
78    }
79    void PainettiinValikonNappia(int valinta)
80    {
81        switch (valinta)
82        {
83            case 0:
84                // AloitaPeli();
85                break;
86            case 1:
87                // ParhaatPisteet();
88                break;
89            case 2:
90                Exit();
91                break;
92        }
93    }
94    void LuoKentta()
95    {
96        TileMap kentta = TileMap.FromLevelAsset("kentta1");
97        kentta.SetTileMethod('#', LisaaTaso);
98        kentta.SetTileMethod('*', LisaaTahti);
99        kentta.SetTileMethod('N', LisaaPelaaja);
100        kentta.SetTileMethod('P', LisaaPiikki);
101        kentta.SetTileMethod('T', LisaaTalo);
102        kentta.SetTileMethod('O', LisaaOvi);
103        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
104        Level.CreateBorders();
105        Level.Background.CreateGradient(Color.Blue, Color.DarkRed);
106    }
107
108    void LisaaTaso(Vector paikka, double leveys, double korkeus)
109    {
110        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
111        taso.Position = paikka;
112        taso.CollisionIgnoreGroup = 1;
113        // taso.Color = Color.Green;
114        taso.Image = Ruohoblokinkuva;
115        Add(taso, -1);
116    }
117
118    void LisaaTahti(Vector paikka, double leveys, double korkeus)
119    {
120        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
121        tahti.IgnoresCollisionResponse = true;
122        tahti.CollisionIgnoreGroup = 1;
123        tahti.Position = paikka;
124        tahti.Image = tahtiKuva;
125        tahti.Tag = "tahti";
126        Add(tahti, -1);
127
128        //Ruohoblokki.Image = Ruohoblokinkuva;
129    }
130
131    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
132    {
133        pelaaja1 = new PlatformCharacter(leveys, korkeus);
134        pelaaja1.Position = paikka;
135        pelaaja1.AnimIdle = new Animation(pelaajanKuva);
136        pelaaja1.CollisionIgnoreGroup = 3;
137        pelaaja1.Mass = 4.0;
138        pelaaja1.AnimWalk = KävelyAnimaatio;
139        pelaaja1.AnimJump = HahmoHyppy;
140        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
141        AddCollisionHandler(pelaaja1, "Piikki", TormaaPiikkiin);
142        AddCollisionHandler(pelaaja1, "Haamu", TormaaViholliseen);
143        AddCollisionHandler(pelaaja1, "ovi", TormaaOveen);
144        Add(pelaaja1);
145    }
146
147    void LisaaPiikki(Vector paikka, double leveys, double korkeus)
148    {
149        PhysicsObject Piikki = new PhysicsObject(30, 20);
150
151        Piikki.Tag = "Piikki";
152        Piikki.CollisionIgnoreGroup = 1;
153        Piikki.MakeStatic();
154        Piikki.Image = Piikkikuva;
155        Piikki.Position = paikka + new Vector(0, -korkeus * 0.3);
156        Add(Piikki, -1);
157
158    }
159
160
161    void LisaaNappaimet()
162    {
163        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
164        Keyboard.Listen(Key.Escape, ButtonState.Pressed, LuoPaavalikko, "Pelin alkuvalikko");
165
166        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
167        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
168        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
169        Keyboard.Listen(Key.P, ButtonState.Pressed, Pause, "Pysäyttää pelin");
170        Keyboard.Listen(Key.R, ButtonState.Pressed, AloitaPeli, "Aloittaa Pelin Alusta");
171        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
172        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
173        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
174        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
175
176        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
177    }
178
179    void TormaaOveen(PhysicsObject pelaaja1, PhysicsObject ovi)
180    {
181       
182        ClearAll();
183        MessageWindow voitto = new MessageWindow("Voitit!");
184        Add(voitto);
185        voitto.Closed += LuoPaavalikko;
186    }
187
188    void Liikuta(PlatformCharacter hahmo, double nopeus)
189    {
190        hahmo.Walk(nopeus);
191    }
192
193    void Hyppaa(PlatformCharacter hahmo, double nopeus)
194    {
195        Hyppyaani.Play();
196        hahmo.Jump(nopeus);
197    }
198
199    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
200    {
201        Kolikkoaani.Play();
202        MessageDisplay.Add("Keräsit tähden!");
203        tahti.Destroy();
204    }
205
206    void TormaaPiikkiin(PhysicsObject hahmo, PhysicsObject Piikki)
207    {
208        pelaaja1.Destroy();
209        MessageDisplay.Add("Try Again!");
210        AloitaPeli();
211       
212
213       
214    }
215    void TormaaViholliseen(PhysicsObject hahmo, PhysicsObject randomOlio)
216    {
217        Kuolemaaani.Play();
218        pelaaja1.Destroy();
219        MessageDisplay.Add("Try Again!");
220        AloitaPeli();
221
222
223
224    }
225
226   
227   
228    void LisaaTalo(Vector paikka, double leveys, double korkeus)
229    {
230       GameObject talo = new GameObject(leveys*5, korkeus*5);
231        talo.Position = paikka;
232       
233        talo.Animation = TaloAnimaatio;
234        talo.Animation.Start();
235        Add(talo, -1);
236
237
238
239
240    }
241
242
243    void LisaaVihollinen()
244    {
245        PhysicsObject Haamu = new PhysicsObject(50.0, 50.0);
246        Haamu.Tag = "Haamu";
247        Haamu.Image = Haamunkuva;
248        Add(Haamu);
249
250        //Tehdään uudet satunnaisaivot, jotka liikkuvat nopeudella...
251        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(600);
252        satunnaisAivot.Speed = 300;
253        //Ominaisuuksien muokkaaminen
254        satunnaisAivot.ChangeMovementSeconds = 3;
255        //satunnaisAivot.TurnWhileMoving = true;
256        Haamu.CollisionIgnoreGroup = 1;
257        Haamu.CanRotate = false;
258        //Aivot käyttöön oliolle
259        Haamu.Brain = satunnaisAivot;
260
261    }
262
263    void LisaaOvi(Vector paikka, Double leveys , Double korkeus)
264    {
265        PhysicsObject ovi = PhysicsObject.CreateStaticObject(leveys*0.75, korkeus);
266
267        ovi.Color = Color.Transparent;
268        ovi.Position = new Vector(paikka.X - leveys*0.35, paikka.Y);
269        ovi.Tag = "ovi";
270        ovi.CollisionIgnoreGroup = 1;
271        Add(ovi, -1);
272    }
273
274}
Note: See TracBrowser for help on using the repository browser.