source: 2018/23/EETIL/omapeli/peli/Omapeli/Omapeli/Omapeli.cs @ 9620

Revision 9620, 7.6 KB checked in by eelinjam, 21 months ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Widgets;
7using System.Collections.Generic;
8public class Omapeli : PhysicsGame
9{
10
11    private Image[] pelaaja1liikkuu = LoadImages("päähenkilö kävelee1", "päähenkilö kävelee2", "päähenkilö kävelee3", "päähenkilö kävelee4");
12
13    const double nopeus = 200;
14    const double hyppyNopeus = 750;
15    const int RUUDUN_KOKO = 40;
16
17    PlatformCharacter pelaaja1;
18
19    Image pelaajanKuva = LoadImage("päähenkilö seisomassa");
20    Image tahtiKuva = LoadImage("ammus");
21    Image taustaKuva = LoadImage("taustakuva");
22
23   
24
25    SoundEffect maaliAani = LoadSoundEffect("maali");
26
27    public override void Begin()
28    {
29
30        aloitapeli();
31    }
32    void aloitapeli()
33    {
34        Gravity = new Vector(0, -1000);
35
36        LuoKentta();
37        LisaaNappaimet();
38
39        Level.Background.Image = taustaKuva;
40        Camera.Follow(pelaaja1);
41        Camera.ZoomFactor = 1.2;
42        Camera.StayInLevel = true;
43    }
44
45    void LuoKentta()
46    {
47        TileMap kentta = TileMap.FromLevelAsset("kentta1");
48        kentta.SetTileMethod('#', LisaaTaso);
49        kentta.SetTileMethod('*', LisaaTahti);
50        kentta.SetTileMethod('N', LisaaPelaaja);
51        kentta.SetTileMethod('I', LisaaKaktus1);
52        kentta.SetTileMethod('L', LisaaKaktus2);
53        kentta.SetTileMethod('H', LisaaHyena);
54        kentta.SetTileMethod('P', Lisaalentolisko);
55        kentta.SetTileMethod('¤', Lisaapalikka3);
56        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
57        Level.CreateBorders();
58        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
59    }
60
61    void LisaaTaso(Vector paikka, double leveys, double korkeus)
62    {
63        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
64        taso.Position = paikka;
65        taso.Color = Color.Green;
66        Add(taso);
67        taso.Image = LoadImage("palikka2");
68    }
69
70    void LisaaTahti(Vector paikka, double leveys, double korkeus)
71    {
72        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
73        tahti.IgnoresCollisionResponse = true;
74        tahti.Position = paikka;
75        tahti.Image = tahtiKuva;
76        tahti.Tag = "tahti";
77        Add(tahti);
78    }
79
80    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
81    {
82        pelaaja1 = new PlatformCharacter(leveys, korkeus);
83        pelaaja1.Position = paikka;
84        pelaaja1.Mass = 4.0;
85        pelaaja1.Image = pelaajanKuva;
86        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
87        AddCollisionHandler(pelaaja1, "kaktus1", TormaaKaktukseen);
88        AddCollisionHandler(pelaaja1, "kaktus", TormaaKaktukseen);
89        AddCollisionHandler(pelaaja1, "hyena", TormaaHyenaan);
90        Add(pelaaja1);
91        pelaaja1.AnimWalk = new Animation(pelaaja1liikkuu);
92        pelaaja1.AnimIdle = new Animation(pelaajanKuva);   
93        pelaaja1.AnimWalk.FPS = 3;
94    }
95    void LisaaKaktus1(Vector paikka, double leveys, double korkeus)
96    {
97        PhysicsObject kaktus = PhysicsObject.CreateStaticObject(leveys, korkeus);
98        kaktus.IgnoresCollisionResponse = true;
99        kaktus.Position = paikka;
100        Add(kaktus);
101        kaktus.Image = LoadImage("kaktus");
102        kaktus.Tag = "kaktus1";
103    }
104    void LisaaKaktus2(Vector paikka, double leveys, double korkeus)
105    {
106        PhysicsObject kaktus2 = PhysicsObject.CreateStaticObject(leveys, korkeus);
107        kaktus2.IgnoresCollisionResponse = true;
108        kaktus2.Position = paikka;
109        Add(kaktus2);
110        kaktus2.Image = LoadImage("kaktus2");
111        kaktus2.Tag = "kaktus1";
112    }
113    void LisaaHyena(Vector paikka, double leveys, double korkeus)
114    {
115        PhysicsObject hyena = PhysicsObject.CreateStaticObject(leveys*2, korkeus*2);
116        hyena.IgnoresCollisionResponse = true;
117        hyena.Position = paikka;
118        Add(hyena);
119        hyena.Image = LoadImage("hyena");
120        hyena.Tag = "hyena";
121        PathFollowerBrain tasoAivot = new PathFollowerBrain();
122        List<Vector> polku = new List<Vector>();
123        polku.Add(new Vector(paikka.X - 20, paikka.Y));
124        polku.Add(new Vector(paikka.X + 20, paikka.Y));
125        tasoAivot.Path = polku;
126        tasoAivot.Active = true;
127        tasoAivot.Loop = true;
128        hyena.Brain = tasoAivot;
129    }
130    void Lisaalentolisko(Vector paikka, double leveys, double korkeus)
131    {
132        PhysicsObject lentolisko = new PhysicsObject(leveys * 2, korkeus * 2);
133        lentolisko.IgnoresCollisionResponse = true;
134        lentolisko.Position = paikka;
135        Add(lentolisko);
136        lentolisko.Image = LoadImage("lentolisko");
137        lentolisko.Tag = "lentolisko";
138        PathFollowerBrain tasoAivot = new PathFollowerBrain();
139        List<Vector> polku = new List<Vector>();
140        polku.Add(new Vector(paikka.X-200, paikka.Y));
141        polku.Add(new Vector(paikka.X+200, paikka.Y));
142        tasoAivot.Path = polku;
143        tasoAivot.Active = true;
144        tasoAivot.Loop = true;
145        lentolisko.Brain = tasoAivot;
146       
147    }
148    void Lisaapalikka3(Vector paikka, double leveys, double korkeus)
149    {
150        PhysicsObject palikka3 = PhysicsObject.CreateStaticObject(leveys * 2, korkeus * 2);
151        palikka3.IgnoresCollisionResponse = true;
152        palikka3.Position = paikka;
153        Add(palikka3);
154        palikka3.Image = LoadImage("palikka3");
155        palikka3.Tag = "palikka3";
156 
157    }
158        void LisaaNappaimet()
159    {
160        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
161        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
162
163        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
164        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
165        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
166        Keyboard.Listen(Key.R, ButtonState.Pressed, AloitaAlusta, "peli alkaa alusta");
167        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
168
169        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
170        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
171        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
172
173        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
174    }
175
176    void Liikuta(PlatformCharacter hahmo, double nopeus)
177    {
178       
179        hahmo.Walk(nopeus);
180     
181    }
182
183    void Hyppaa(PlatformCharacter hahmo, double nopeus)
184    {
185        hahmo.Jump(nopeus);
186    }
187
188    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
189    {
190        maaliAani.Play();
191        MessageDisplay.Add("SAIT AMMUKSEN!");
192        tahti.Destroy();
193    }
194    void TormaaKaktukseen(PhysicsObject hahmo, PhysicsObject kaktus)
195    {
196        maaliAani.Play();
197        MessageDisplay.Add("KUOLIT!");
198        pelaaja1.Destroy();
199    }
200    void PelaajaOsuu(PhysicsObject hahmo, PhysicsObject kaktus1)
201    {
202        pelaaja1.Destroy();
203        maaliAani.Play();
204        MessageDisplay.Add("KUOLIT!");
205    }
206    void TormaaHyenaan(PhysicsObject hahmo, PhysicsObject hyena)
207    {
208        pelaaja1.Destroy();
209        maaliAani.Play();
210        MessageDisplay.Add("KUOLIT!");
211    }
212    void AloitaAlusta()
213    {
214        ClearAll();
215        aloitapeli();
216    }
217}
Note: See TracBrowser for help on using the repository browser.