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

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