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

Revision 7942, 6.8 KB checked in by tesatapa, 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 Adventure : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16
17    DoubleMeter elamaLaskuri;
18
19    Image pelaajanKuva = LoadImage("pelaaja");
20    Image kolikkoKuva = LoadImage("kolikko");
21    Image laavaKuva = LoadImage("laava");
22    Image jaaKuva = LoadImage("jaa");
23    Image autoKuva = LoadImage("car");
24    Image maaKuva = LoadImage("maa");
25    Image setelikuva = LoadImage("seteli");
26    SoundEffect maaliAani = LoadSoundEffect("voitto");
27    Image maalinkuva = LoadImage("maali");
28
29    public override void Begin()
30    {
31        Gravity = new Vector(0, -1000);
32
33        LuoKentta();
34        LisaaNappaimet();
35        LuoPistelaskuri();
36        LuoElamaLaskuri();
37
38        Camera.Follow(pelaaja1);
39        Camera.ZoomFactor = 1.2;
40        Camera.StayInLevel = true;
41    }
42
43    void LuoKentta()
44    {
45        TileMap kentta = TileMap.FromLevelAsset("kentta4");
46        kentta.SetTileMethod('#', LisaaTaso);
47        kentta.SetTileMethod('*', LisaaKolikko);
48        kentta.SetTileMethod('N', LisaaPelaaja);
49        kentta.SetTileMethod('L', LisaaLaava);
50        kentta.SetTileMethod('J', LisaaJaa);
51        kentta.SetTileMethod('M', LisaaMaali);
52        kentta.SetTileMethod('A', LisaaAuto);
53        kentta.SetTileMethod('S', LisaaSeteli);
54        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
55        Level.CreateBorders();
56        Level.Background.Color = Color.SkyBlue;
57    }
58
59    void LisaaTaso(Vector paikka, double leveys, double korkeus)
60    {
61        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
62        taso.Position = paikka;
63        taso.Image = maaKuva;
64        Add(taso);
65    }
66
67    void LisaaKolikko(Vector paikka, double leveys, double korkeus)
68    {
69        PhysicsObject kolikko = PhysicsObject.CreateStaticObject(leveys, korkeus);
70        kolikko.IgnoresCollisionResponse = true;
71        kolikko.Position = paikka;
72        kolikko.Image = kolikkoKuva;
73        kolikko.Tag = "kolikko";
74        Add(kolikko);
75    }
76
77    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
78    {
79        pelaaja1 = new PlatformCharacter(leveys / 2, korkeus);
80        pelaaja1.Position = paikka;
81        pelaaja1.Mass = 4.0;
82        pelaaja1.Image = pelaajanKuva;
83        AddCollisionHandler(pelaaja1, "kolikko", TormaaKolikkoon);
84        AddCollisionHandler(pelaaja1, "seteli", TormaaSeteliin);
85        AddCollisionHandler(pelaaja1, "auto", autoontormataan);
86        Add(pelaaja1);
87    }
88    void LisaaLaava(Vector paikka, double leveys, double korkeus)
89    {
90        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
91        taso.Position = paikka;
92        taso.Image = laavaKuva;
93        Add(taso);
94    }
95
96    void LisaaJaa(Vector paikka, double leveys, double korkeus)
97    {
98        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
99        taso.Position = paikka;
100        taso.Image = jaaKuva;
101        taso.KineticFriction = -300;
102        Add(taso);
103    }
104    void LisaaMaali(Vector paikka, double leveys, double korkeus)
105    {
106        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
107        maali.IgnoresCollisionResponse = true;
108        maali.Position = paikka;
109        maali.Image = maalinkuva;
110        maali.Tag = "maali";
111        Add(maali);
112    }
113    void LisaaAuto(Vector paikka, double leveys, double korkeus)
114    {
115        PhysicsObject auto = new PhysicsObject(leveys + 10, korkeus);
116        //auto.IgnoresCollisionResponse = true;
117        auto.Position = paikka;
118        auto.Image = autoKuva;
119        auto.Tag = "auto";
120        Add(auto);
121    }
122    void LisaaSeteli(Vector paikka, double leveys, double korkeus)
123    {
124        PhysicsObject seteli = PhysicsObject.CreateStaticObject(leveys, korkeus);
125        seteli.IgnoresCollisionResponse = true;
126        seteli.Position = paikka;
127        seteli.Image = setelikuva;
128        seteli.Tag = "seteli";
129        Add(seteli);
130    }
131    void LisaaNappaimet()
132    {
133
134        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
135        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
136
137        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
138        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
139        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
140
141        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
142
143        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
144        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
145        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
146
147        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
148    }
149
150    void Liikuta(PlatformCharacter hahmo, double nopeus)
151    {
152        hahmo.Walk(nopeus);
153    }
154
155    void Hyppaa(PlatformCharacter hahmo, double nopeus)
156    {
157        hahmo.Jump(nopeus);
158    }
159
160    void TormaaKolikkoon(PhysicsObject hahmo, PhysicsObject kolikko)
161    {
162        maaliAani.Play();
163        pisteLaskuri.Value += 1;
164        kolikko.Destroy();
165    }
166    void autoontormataan(PhysicsObject hahmo, PhysicsObject auto)
167    {
168        // auto.Move(new Vector(20.0, 0));
169    }
170
171    void TormaaSeteliin(PhysicsObject hahmo, PhysicsObject seteli)
172    {
173        maaliAani.Play();
174        pisteLaskuri.Value += 10;
175        seteli.Destroy();
176    }
177
178    IntMeter pisteLaskuri;
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("Elämät loppuivat, voi voi.");
211    }
212
213}
Note: See TracBrowser for help on using the repository browser.