source: 2015/30/EemilR/Tasohyppelypeli/Tasohyppelypeli/Tasohyppelypeli/Tasohyppelypeli.cs @ 6876

Revision 6876, 5.0 KB checked in by misakana, 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 Tasohyppelypeli : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 900;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16
17    Image pelaajanKuva = LoadImage("pallo");
18    Image tahtiKuva = LoadImage("tahti");
19    Image avainKuva = LoadImage("Key");
20    Image kyllaAvain = LoadImage("kylla_avain");
21    Image eiAvain = LoadImage("ei_avain");
22    Image ovi = LoadImage("Ristikko")
23
24
25    DoubleMeter avaintenmaara;
26
27
28   
29
30    SoundEffect maaliAani = LoadSoundEffect("maali");
31
32   
33   
34
35    public override void Begin()
36    {
37
38        //Window.Width = 800;
39        //Window.Height = 600;
40
41        IsFullScreen = true;
42
43        Gravity = new Vector(0, -1000);
44
45        LuoKentta();
46        LisaaNappaimet();
47        Asetamittari();
48
49       
50        Camera.Follow(pelaaja1);
51        Camera.ZoomFactor = 1.0;
52        Camera.StayInLevel = true;
53
54
55       
56    }
57
58    void Asetamittari()
59    {
60        avaintenmaara = new DoubleMeter(0);
61        avaintenmaara.MaxValue = 1;
62        avaintenmaara.UpperLimit += avaimetTaynna;
63
64        ProgressBar avainNaytto = new ProgressBar(150, 180);
65        avainNaytto.BindTo(avaintenmaara);
66        avainNaytto.X = Screen.Left + 85;
67        avainNaytto.Y = Screen.Bottom + 100;
68        avainNaytto.Image = LoadImage("ei_avain");
69        avainNaytto.BarImage = LoadImage("kylla_avain");
70        Add(avainNaytto);
71    }
72
73    void LuoKentta()
74    {
75        TileMap kentta = TileMap.FromLevelAsset("kentta1");
76        kentta.SetTileMethod('#', LisaaTaso);
77        kentta.SetTileMethod('O', LisaaOvi);
78        kentta.SetTileMethod('N', LisaaPelaaja);
79        kentta.SetTileMethod('A', LisaaAvain);
80        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
81        Level.CreateBorders();
82        Level.Background.CreateGradient(Color.White, Color.Brown);
83    }
84
85    void LisaaTaso(Vector paikka, double leveys, double korkeus)
86    {
87        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
88        taso.Position = paikka;
89        taso.Color = Color.Ruby;
90        Add(taso);
91    }
92
93    void LisaaOvi(Vector paikka, double leveys, double korkeus)
94    {
95        //Muuta tiedot oveksi
96       
97        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
98        tahti.IgnoresCollisionResponse = true;
99        tahti.Position = paikka;
100        tahti.Image = tahtiKuva;
101        tahti.Tag = "tahti";
102        Add(tahti);
103    }
104
105    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
106    {
107        pelaaja1 = new PlatformCharacter(leveys, korkeus);
108        pelaaja1.Position = paikka;
109        pelaaja1.Mass = 4.0;
110        pelaaja1.Image = pelaajanKuva;
111        AddCollisionHandler(pelaaja1, "avain", TormaaAvaimeen);
112        Add(pelaaja1);
113
114        Label avaimet = new Label(50.0, 50.0);
115        avaimet.Color = Color.Red;
116        avaimet.Text = "Avainten maara";
117        avaimet.X = 0.0;
118        avaimet.Y = 0.0;
119    }
120
121    void LisaaNappaimet()
122    {
123        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
124        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
125
126        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
127        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
128        Keyboard.Listen(Key.Space, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
129
130        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
131
132        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
133        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
134        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
135
136        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
137    }
138
139    void LisaaAvain(Vector paikka, double leveys, double korkeus)
140    {
141        PhysicsObject avain = PhysicsObject.CreateStaticObject(leveys, korkeus);
142        avain.IgnoresCollisionResponse = true;
143        avain.Position = paikka;
144        avain.Image = avainKuva;
145        avain.Tag = "avain";
146        Add(avain);
147    }   
148
149    void Liikuta(PlatformCharacter hahmo, double nopeus)
150    {
151        hahmo.Walk(nopeus);
152    }
153
154    void Hyppaa(PlatformCharacter hahmo, double nopeus)
155    {
156        hahmo.Jump(nopeus);
157    }
158
159    void TormaaAvaimeen(PhysicsObject hahmo, PhysicsObject avain)
160    {
161        maaliAani.Play();
162        MessageDisplay.Add("Sait avaimen!");
163        avain.Destroy();
164
165
166        avaintenmaara.Value += 1;           
167    }
168
169    void avaimetTaynna()
170    {
171        MessageDisplay.Add("Sinulla on nyt yksi avain!");
172    }
173}
Note: See TracBrowser for help on using the repository browser.