source: 2016/27/PaavoH/Adventure/Adventure/Adventure/Adventure.cs @ 7948

Revision 7948, 7.9 KB checked in by tesatapa, 4 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 Adventure : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14    IntMeter pisteLaskuri;
15    int kenttanumero = 1;
16    PlatformCharacter pelaaja1;
17
18    DoubleMeter elamaLaskuri;
19
20    Image pelaajanKuva = LoadImage("pelaaja");
21    Image kolikkoKuva = LoadImage("kolikko");
22    Image laavaKuva = LoadImage("laava");
23    Image jaaKuva = LoadImage("jaa");
24    Image autoKuva = LoadImage("car");
25    Image maaKuva = LoadImage("maa");
26    Image setelikuva = LoadImage("seteli");
27    Image vuorenkuva = LoadImage("vuori");
28    SoundEffect maaliAani = LoadSoundEffect("voitto");
29    Image maalinkuva = LoadImage("maali");
30
31    public override void Begin()
32    {
33        AlkuValikko();
34       
35    }
36
37    void LuoKentta()
38    {
39        TileMap kentta = TileMap.FromLevelAsset("kentta"+ kenttanumero);
40        kentta.SetTileMethod('#', LisaaTaso);
41        kentta.SetTileMethod('*', LisaaKolikko);
42        kentta.SetTileMethod('N', LisaaPelaaja);
43        kentta.SetTileMethod('L', LisaaLaava);
44        kentta.SetTileMethod('J', LisaaJaa);
45        kentta.SetTileMethod('M', LisaaMaali);
46        kentta.SetTileMethod('A', LisaaAuto);
47        kentta.SetTileMethod('S', LisaaSeteli);
48        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
49        Level.CreateBorders();
50        Level.Background.Color = Color.SkyBlue;
51    }
52
53    void LisaaTaso(Vector paikka, double leveys, double korkeus)
54    {
55        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
56        taso.Position = paikka;
57        taso.Image = maaKuva;
58        Add(taso);
59    }
60
61    void LisaaKolikko(Vector paikka, double leveys, double korkeus)
62    {
63        PhysicsObject kolikko = PhysicsObject.CreateStaticObject(leveys, korkeus);
64        kolikko.IgnoresCollisionResponse = true;
65        kolikko.Position = paikka;
66        kolikko.Image = kolikkoKuva;
67        kolikko.Tag = "kolikko";
68        Add(kolikko);
69    }
70
71    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
72    {
73        pelaaja1 = new PlatformCharacter(leveys / 2, korkeus);
74        pelaaja1.Position = paikka;
75        pelaaja1.Mass = 4.0;
76        pelaaja1.Image = pelaajanKuva;
77        AddCollisionHandler(pelaaja1, "kolikko", TormaaKolikkoon);
78        AddCollisionHandler(pelaaja1, "seteli", TormaaSeteliin);
79        AddCollisionHandler(pelaaja1, "auto", autoontormataan);
80        AddCollisionHandler(pelaaja1, "laava", laavaantormataan);
81        AddCollisionHandler(pelaaja1, "maali", maaliintormataan);
82        Add(pelaaja1);
83    }
84    void LisaaLaava(Vector paikka, double leveys, double korkeus)
85    {
86        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
87        taso.Position = paikka;
88        taso.Image = laavaKuva;
89        taso.Tag = "laava";
90        Add(taso);
91    }
92
93    void LisaaJaa(Vector paikka, double leveys, double korkeus)
94    {
95        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
96        taso.Position = paikka;
97        taso.Image = jaaKuva;
98        taso.KineticFriction = -300;
99        Add(taso);
100    }
101    void LisaaMaali(Vector paikka, double leveys, double korkeus)
102    {
103        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
104        maali.IgnoresCollisionResponse = true;
105        maali.Position = paikka;
106        maali.Image = maalinkuva;
107        maali.Tag = "maali";
108        Add(maali);
109    }
110    void LisaaAuto(Vector paikka, double leveys, double korkeus)
111    {
112        PhysicsObject auto = new PhysicsObject(leveys + 10, korkeus);
113        //auto.IgnoresCollisionResponse = true;
114        auto.Position = paikka;
115        auto.Image = autoKuva;
116        auto.Tag = "auto";
117        Add(auto);
118    }
119    void LisaaSeteli(Vector paikka, double leveys, double korkeus)
120    {
121        PhysicsObject seteli = PhysicsObject.CreateStaticObject(leveys, korkeus);
122        seteli.IgnoresCollisionResponse = true;
123        seteli.Position = paikka;
124        seteli.Image = setelikuva;
125        seteli.Tag = "seteli";
126        Add(seteli);
127    }
128    void LisaaNappaimet()
129    {
130
131        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
132        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
133
134        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
135        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
136        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
137
138        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
139
140        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
141        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
142        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
143
144        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
145    }
146
147    void Liikuta(PlatformCharacter hahmo, double nopeus)
148    {
149        hahmo.Walk(nopeus);
150    }
151
152    void Hyppaa(PlatformCharacter hahmo, double nopeus)
153    {
154        hahmo.Jump(nopeus);
155    }
156
157    void TormaaKolikkoon(PhysicsObject hahmo, PhysicsObject kolikko)
158    {
159        maaliAani.Play();
160        pisteLaskuri.Value += 1;
161        kolikko.Destroy();
162    }
163    void autoontormataan(PhysicsObject hahmo, PhysicsObject auto)
164    {
165        // auto.Move(new Vector(20.0, 0));
166    }
167
168    void TormaaSeteliin(PhysicsObject hahmo, PhysicsObject seteli)
169    {
170        maaliAani.Play();
171        pisteLaskuri.Value += 10;
172        seteli.Destroy();
173    }
174
175    void maaliintormataan(PhysicsObject hahmo, PhysicsObject maali)
176    {       
177        maali.Destroy();
178       
179    }
180    void LuoPistelaskuri()
181    {
182        pisteLaskuri = new IntMeter(0);
183
184        Label pisteNaytto = new Label();
185        pisteNaytto.X = Screen.Left + 100;
186        pisteNaytto.Y = Screen.Top - 100;
187        pisteNaytto.TextColor = Color.Black;
188       
189
190        pisteNaytto.BindTo(pisteLaskuri);
191        Add(pisteNaytto);
192
193        IntMeter laskuri = new IntMeter(0, 0, 300);
194        pisteNaytto.Title = "Raha";
195    }
196    void LuoElamaLaskuri()
197    {
198        elamaLaskuri = new DoubleMeter(10,0,10);
199        elamaLaskuri.LowerLimit += ElamaLoppui;
200
201        ProgressBar elamaPalkki = new ProgressBar(150, 20);
202        elamaPalkki.X = Screen.Left + 150;
203        elamaPalkki.Y = Screen.Top - 20;
204        elamaPalkki.BindTo(elamaLaskuri);
205        Add(elamaPalkki);
206    }
207
208    void ElamaLoppui()
209    {
210        MessageDisplay.Add("HÄVISIT");
211        pelaaja1.Destroy();
212    }
213    void AlkuValikko()
214    {
215        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko","Aloita peli", "Lopeta");
216        Add(alkuValikko);
217        alkuValikko.AddItemHandler(0, AloitaPeli);
218        alkuValikko.AddItemHandler(1, Exit);
219        //alkuValikko.Color = Color.White;
220        GameObject tausta = new GameObject(Window.Width, Window.Height);
221        Add(tausta,-3);
222        tausta.Image = vuorenkuva;
223    }
224    void AloitaPeli()
225    {
226        //kenttanumero.Value = 1;
227        ClearAll();
228        Gravity = new Vector(0, -1000);
229
230        LuoKentta();
231        LisaaNappaimet();
232        LuoPistelaskuri();
233        LuoElamaLaskuri();
234
235        Camera.Follow(pelaaja1);
236        Camera.ZoomFactor = 1.2;
237        Camera.StayInLevel = true;
238    }
239    void laavaantormataan(PhysicsObject pelaaja, PhysicsObject laava)
240    {
241        elamaLaskuri.Value = elamaLaskuri.Value - 3;
242    }
243}
Note: See TracBrowser for help on using the repository browser.