source: 2014/26/AlvariR/Testipeli/Testipeli/Testipeli/Testipeli.cs @ 5123

Revision 5123, 6.7 KB checked in by alkarotk, 7 years ago (diff)

Tein tot peliä

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Testipeli : PhysicsGame
10{
11    const double nopeus = 900;
12    const double hyppyNopeus = 900;
13    const int RUUDUN_KOKO = 100;
14
15    IntMeter pelaajan1pisteet = new IntMeter(0);
16    PlatformCharacter pelaaja1;
17
18    Image pelaajanKuva = LoadImage("bat");
19    Image tahtiKuva = LoadImage("tahti");
20    Image piikkiKuva = LoadImage("piikki");
21    Image tasoKuva = LoadImage("ruohoa");
22    Image multaKuva = LoadImage("palikka");
23    Image maaliKuva = LoadImage("ovi");
24
25    SoundEffect maaliAani = LoadSoundEffect("maali");
26    DoubleMeter elamaLaskuri;
27
28    public override void Begin()
29    {
30        ClearAll();
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("kentta1");
46        kentta.SetTileMethod('#', LisaaTaso);
47        kentta.SetTileMethod('*', LisaaTahti);
48        kentta.SetTileMethod('N', LisaaPelaaja);
49        kentta.SetTileMethod('M', Lisaapiikki);
50        kentta.SetTileMethod('K', LisaaKivi);
51        kentta.SetTileMethod('!', Lisaamulta);
52        kentta.SetTileMethod('C', Lisaamaali);
53     
54        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
55        Level.CreateBorders(1.0, false);
56     
57       
58        Level.Background.CreateGradient(Color.SkyBlue, Color.Blue);
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.ForestGreen;
66        taso.Image = tasoKuva;
67        Add(taso);
68    }
69    void LisaaKivi(Vector paikka, double leveys, double korkeus)
70    {
71        PhysicsObject Kivi = PhysicsObject.CreateStaticObject(leveys, korkeus);
72        Kivi.Position = paikka;
73        Kivi.Color = Color.DarkGray;
74        Add(Kivi);
75     
76    }
77    void Lisaamulta(Vector paikka, double leveys, double korkeus)
78    {
79        PhysicsObject multa = PhysicsObject.CreateStaticObject(leveys, korkeus);
80        multa.Position = paikka;
81        multa.Image = multaKuva;
82        Add(multa);
83    }
84    void LisaaTahti(Vector paikka, double leveys, double korkeus)
85    {
86        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
87        tahti.IgnoresCollisionResponse = true;
88        tahti.Position = paikka;
89        tahti.Image = tahtiKuva;
90        tahti.Tag = "tahti";
91        Add(tahti);
92    }
93    void Lisaapiikki(Vector paikka,double leveys, double korkeus)
94    {
95        PhysicsObject piikki = PhysicsObject.CreateStaticObject(leveys, korkeus*0.85);
96        piikki.Position = paikka - new Vector(0, korkeus * 0.15);
97        piikki.Image = piikkiKuva;
98        piikki.Tag = "piikki";
99        Add(piikki);
100    }
101
102
103    void Lisaamaali(Vector paikka, double leveys, double korkeus)
104    {
105        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
106        maali.Position = paikka;
107        maali.Image = maaliKuva;
108        maali.Tag = "maali";
109        Add(maali);
110    }
111   
112    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
113    {
114        pelaaja1 = new PlatformCharacter(100, 100);
115        pelaaja1.Position = paikka;
116        pelaaja1.Mass = 5.0;
117        pelaaja1.Image = pelaajanKuva;
118        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
119        AddCollisionHandler(pelaaja1, "piikki", Tormaapiikkiin);
120        AddCollisionHandler(pelaaja1,"maali", Tormaamaaliin);
121       
122       
123        Add(pelaaja1);
124    }
125
126    void LisaaNappaimet()
127    {
128        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
129        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
130       
131
132        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
133        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
134        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
135
136        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
137
138        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
139        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
140        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
141
142        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
143    }
144
145    void Liikuta(PlatformCharacter hahmo, double nopeus)
146    {
147        hahmo.Walk(nopeus);
148    }
149
150    void Hyppaa(PlatformCharacter hahmo, double nopeus)
151    {
152
153        hahmo.Jump(nopeus);
154    }
155   
156
157    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
158    {
159        maaliAani.Play();
160        MessageDisplay.Add("Keräsit tähden!");
161        tahti.Destroy();
162        pelaajan1pisteet.Value += 1;
163    }
164
165
166    void Tormaapiikkiin(PhysicsObject hahmo, PhysicsObject piikki)
167    {
168        MessageDisplay.Add("Au!");
169        elamaLaskuri.Value -= 1;
170       
171       
172    }
173
174    void Tormaamaaliin(PhysicsObject hahmo, PhysicsObject maali)
175    {
176    }
177    void LuoPisteLaskuri()
178    {
179        pelaajan1pisteet = new IntMeter(0);
180
181        Label pisteNautto = new Label();
182        pisteNautto.X = Screen.Right - 100;
183        pisteNautto.Y = Screen.Top - 100;
184        pisteNautto.TextColor = Color.White;
185        pisteNautto.Color = Color.Blue;
186        pisteNautto.Title = "Pisteet";
187        pisteNautto.BindTo(pelaajan1pisteet);
188        Add(pisteNautto);
189    }
190
191    void LuoElamaLaskuri()
192    {
193        elamaLaskuri = new DoubleMeter(10);
194        elamaLaskuri.MaxValue = 10;
195        elamaLaskuri.LowerLimit += ElamaLoppui;
196
197        ProgressBar elamapalkki = new ProgressBar(150, 20);
198        elamapalkki.X = Screen.Right - 150;
199        elamapalkki.Y = Screen.Top - 20;
200        elamapalkki.BindTo(elamaLaskuri);
201        elamapalkki.Color = Color.Black;
202        elamapalkki.BarColor = Color.Red;
203        Add(elamapalkki);
204    }
205    void ElamaLoppui()
206    {
207        MessageDisplay.Add("Elämät loppuivat, voi voi");
208        pelaaja1.Destroy();
209        Timer.SingleShot(3, delegate
210                            {
211
212                                Begin();
213                            });
214     }
215}
Note: See TracBrowser for help on using the repository browser.