source: 2014/24/NooraH/Diamond/Diamond/Diamond/Diamond.cs @ 4973

Revision 4973, 8.6 KB checked in by noaialha, 7 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 Diamond : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 400;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16
17    Image pelaajanKuva = LoadImage("Hahmo1");
18    Image tahtiKuva = LoadImage("Diamond");
19    Image pahiskuva = LoadImage("Pahis");
20    Image hahmokuva;
21
22    Image[] hahmokuvat = LoadImages("Hympi", "Hahmo2", "Pink", "häntukka");
23
24    SoundEffect maaliAani = LoadSoundEffect("maali");
25
26    IntMeter pisteLaskuri;
27
28    public override void Begin()
29    {
30        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko", "Aloita peli", "Lopeta");
31        Add(alkuValikko);
32        alkuValikko.AddItemHandler(0, ValitseHahmo);
33        alkuValikko.AddItemHandler(1, Exit);
34    }
35
36    void ValitseHahmo()
37    {
38        MultiSelectWindow hahmoValikko = new MultiSelectWindow("Valitse Hahmo", "Hympi ", "Korsi", "Pink", "häntukka");
39        Add(hahmoValikko);
40
41        for (int i = 0; i < hahmokuvat.Length; i++)
42        {
43            int indeksi = i;
44            hahmoValikko.AddItemHandler(indeksi, delegate
45            {
46                hahmokuva = hahmokuvat[indeksi];
47                AloitaPeli();
48            });
49        }
50    }
51
52    void AloitaPeli()
53    {
54        ClearAll();
55        LuoKentta();
56        LuoPistelaskuri();
57        LisaaNappaimet();
58
59        Camera.Follow(pelaaja1);
60        Camera.ZoomFactor = 2.5;
61        Camera.StayInLevel = true;
62    }
63
64    void LuoKentta()
65    {
66        Gravity = new Vector(0, -1000);
67
68        TileMap kentta = TileMap.FromLevelAsset("kentta1");
69        kentta.SetTileMethod('t', LisaaTaso3);
70        kentta.SetTileMethod('T', LisaaTaso4);
71        kentta.SetTileMethod('*', LisaaDiamond);
72        kentta.SetTileMethod('N', LisaaPelaaja);
73        kentta.SetTileMethod('P', LisaaPahis);
74        kentta.SetTileMethod('O', LisaaPallo);
75        kentta.SetTileMethod('u', LisaaTaso5);
76        kentta.SetTileMethod('s', LisaaTaso6);
77        kentta.SetTileMethod('R', LisaaTayte1);
78        kentta.SetTileMethod('r', LisaaTayte2);
79        kentta.SetTileMethod('M', LisaaMaali);
80        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
81        Level.CreateBorders();
82        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
83    }
84
85    void LisaaTaso3(Vector paikka, double leveys, double korkeus)
86    {
87        LisaaTaso(paikka, leveys, korkeus, LoadImage("Tiili"));
88    }
89
90    void LisaaTaso4(Vector paikka, double leveys, double korkeus)
91    {
92        LisaaTaso(paikka, leveys, korkeus, LoadImage("Tiili3"));
93    }
94    void LisaaTaso5(Vector paikka, double leveys, double korkeus)
95    {
96        PhysicsObject taso = LisaaTaso(paikka, leveys, korkeus, LoadImage("Portti"));
97        taso.Tag = "painovoima";
98    }
99
100    void LisaaTaso6(Vector paikka, double leveys, double korkeus)
101    {
102        LisaaTaso(paikka, leveys, korkeus, LoadImage("Sieni"));
103    }
104
105    PhysicsObject LisaaTaso(Vector paikka, double leveys, double korkeus, Image kuva)
106    {
107        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
108        taso.Position = paikka;
109        taso.Image = kuva;
110        taso.Color = Color.Teal;
111        Add(taso);
112        return taso;
113    }
114
115    void LisaaDiamond(Vector paikka, double leveys, double korkeus)
116    {
117        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys * 0.5, korkeus * 0.5);
118        tahti.IgnoresCollisionResponse = true;
119        tahti.Position = paikka;
120        tahti.Image = tahtiKuva;
121        tahti.Tag = "Diamond";
122        Add(tahti);
123    }
124
125    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
126    {
127        pelaaja1 = new PlatformCharacter(leveys-2, korkeus-2);
128        pelaaja1.Position = paikka;
129        pelaaja1.Mass = 4.0;
130        pelaaja1.Image = hahmokuva;
131        AddCollisionHandler(pelaaja1, "Diamond", TormaaTahteen);
132        AddCollisionHandler(pelaaja1, "vaara", PelaajaKuolee);
133        AddCollisionHandler(pelaaja1, "painovoima", painovoimamuuttuu);
134        AddCollisionHandler(pelaaja1, "Maali", TormaaMaaliin);
135        Add(pelaaja1);
136    }
137
138    void LisaaNappaimet()
139    {
140        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
141        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
142
143        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
144        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
145        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
146        Keyboard.Listen(Key.Down, ButtonState.Pressed, Hyppaaalas, "Pelaaja hyppää alas", pelaaja1, hyppyNopeus);
147
148        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
149
150        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
151        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
152        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
153
154        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
155    }
156
157    void Liikuta(PlatformCharacter hahmo, double nopeus)
158    {
159        hahmo.Walk(nopeus);
160    }
161
162    void Hyppaa(PlatformCharacter hahmo, double nopeus)
163    {
164        hahmo.Jump(nopeus);
165    }
166
167    void Hyppaaalas(PlatformCharacter hahmo, double nopeus)
168    {
169        hahmo.ForceJump(-nopeus);
170    }
171
172    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
173    {
174        pisteLaskuri.Value++;
175        tahti.Destroy();
176    }
177
178    void LisaaPahis(Vector paikka, double leveys, double korkeus)
179    {
180
181        PlatformCharacter Pahis = new PlatformCharacter(leveys * 2, korkeus * 2);
182        Add(Pahis);
183        Pahis.Position = paikka;
184        Pahis.Image = pahiskuva;
185        Pahis.Tag = "vaara";
186        Timer ajastin = new Timer();
187        ajastin.Interval = 2;
188        ajastin.Timeout += delegate
189        {
190            Pahis.Jump(850);
191        };
192        ajastin.Start();
193    }
194    void PelaajaKuolee(PhysicsObject hahmo, PhysicsObject vaara)
195    {
196        AloitaPeli();
197    }
198
199
200    void LisaaPallo(Vector paikka, double leveys = 20, double korkeus = 20)
201    {
202        PhysicsObject pallo = new PhysicsObject(leveys / 2, korkeus / 2);
203        Add(pallo);
204        pallo.Shape = Shape.Circle;
205        pallo.Color = Color.Black;
206        pallo.Position = paikka;
207    }
208
209    void painovoimamuuttuu(PhysicsObject hahmo, PhysicsObject taso)
210    {
211        Gravity = new Vector(0, 600);
212        hahmo.Position = taso.Position + new Vector(-45, 0);
213    }
214
215    void LisaaTayte1(Vector paikka, double leveys, double korkeus)
216    {
217        GameObject taute = LuoTayte(paikka, leveys, korkeus, LoadImage("Tiili"));
218        Add(taute);
219    }
220
221    void LisaaTayte2(Vector paikka, double leveys, double korkeus)
222    {
223        GameObject taute = LuoTayte(paikka, leveys, korkeus, LoadImage("Tiili3"));
224        Add(taute);
225    }
226
227    GameObject LuoTayte(Vector paikka, double leveys, double korkeus, Image kuva)
228    {
229        GameObject tayte = new GameObject(leveys, korkeus);
230        tayte.Image = kuva;
231        tayte.Position = paikka;
232        return tayte;
233    }
234
235   
236
237    void LuoPistelaskuri()
238    {
239        pisteLaskuri = new IntMeter(0);
240
241        Label pisteNaytto = new Label();
242        pisteNaytto.X = Screen.Left + 100;
243        pisteNaytto.Y = Screen.Top - 100;
244        pisteNaytto.TextColor = Color.Fuchsia;
245        pisteNaytto.Color = Color.Snow;
246        pisteNaytto.IntFormatString = "Timanttia: {0:D1}";
247        pisteNaytto.TextScale = new Vector(1.6, 1.6);
248
249        pisteNaytto.BindTo(pisteLaskuri);
250        Add(pisteNaytto);
251    }
252
253    void LisaaMaali(Vector paikka, double leveys, double korkeus)
254    {
255        PhysicsObject Maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
256        Maali.Position = paikka;
257        Maali.Tag = "Maali";
258        //Maali.Image = kuva;
259        Maali.Color = Color.Teal;
260        Add(Maali);
261    }
262
263    void TormaaMaaliin(PhysicsObject hahmo, PhysicsObject tahti)
264    {
265        ClearAll();
266        Label Teksti = new Label("Läpäisit pelin");
267        Teksti.TextColor = Color.HotPink;
268        Add(Teksti);
269        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
270        Teksti.TextScale = new Vector(5, 5);
271    }
272}
Note: See TracBrowser for help on using the repository browser.