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

Revision 4960, 7.0 KB checked in by sieerinn, 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
22    Image[] hahmokuvat = LoadImages("Hahmo1", "Hahmo2","Pink");
23
24    SoundEffect maaliAani = LoadSoundEffect("maali");
25
26    public override void Begin()
27    {
28        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko", "Aloita peli", "Lopeta");
29        Add(alkuValikko);
30        alkuValikko.AddItemHandler(0, ValitseHahmo);
31        alkuValikko.AddItemHandler(1, Exit);
32    }
33
34    void ValitseHahmo()
35    {
36        MultiSelectWindow hahmoValikko = new MultiSelectWindow("Valitse Hahmo", "Hahmo1 ", "Hahmo2" , "Pink ");
37        Add(hahmoValikko);
38
39        for (int i = 0; i < hahmokuvat.Length; i++)
40        {
41            int indeksi = i;
42            hahmoValikko.AddItemHandler(indeksi, delegate {
43                hahmokuva = hahmokuvat[indeksi];
44                AloitaPeli();
45            });
46        }
47    }
48
49    void AloitaPeli()
50    {
51        ClearAll();
52        LuoKentta();
53        LisaaNappaimet();
54
55        Camera.Follow(pelaaja1);
56        Camera.ZoomFactor = 2.5;
57        Camera.StayInLevel = true;
58    }
59
60    void LuoKentta()
61    {
62        Gravity = new Vector(0, -1000);
63
64        TileMap kentta = TileMap.FromLevelAsset("kentta1");
65        kentta.SetTileMethod('#', LisaaTaso1);
66        kentta.SetTileMethod('w', LisaaTaso2);
67        kentta.SetTileMethod('t', LisaaTaso3);
68        kentta.SetTileMethod('T', LisaaTaso4);
69        kentta.SetTileMethod('*', LisaaDiamond);
70        kentta.SetTileMethod('N', LisaaPelaaja);
71        kentta.SetTileMethod('P', LisaaPahis);
72        kentta.SetTileMethod('O', LisaaPallo);
73        kentta.SetTileMethod('u', LisaaTaso5);
74        kentta.SetTileMethod('s', LisaaTaso6);
75        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
76        Level.CreateBorders();
77        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
78    }
79
80    void LisaaTaso1(Vector paikka, double leveys, double korkeus)
81    { 
82        LisaaTaso(paikka, leveys, korkeus, LoadImage("Maa"));
83    }
84
85    void LisaaTaso2(Vector paikka, double leveys, double korkeus)
86    { 
87        LisaaTaso(paikka, leveys, korkeus, LoadImage("maanpinta"));
88    }
89
90    void LisaaTaso3(Vector paikka, double leveys, double korkeus)
91    {
92        LisaaTaso(paikka, leveys, korkeus, LoadImage("Tiili"));
93    }
94
95    void LisaaTaso4(Vector paikka, double leveys, double korkeus)
96    {
97        LisaaTaso(paikka, leveys, korkeus, LoadImage("Tiili3"));
98    }
99    void LisaaTaso5(Vector paikka, double leveys, double korkeus)
100    {
101        PhysicsObject taso = LisaaTaso(paikka, leveys, korkeus, LoadImage("Portti"));
102        taso.Tag = "painovoima";
103    }
104
105    void LisaaTaso6(Vector paikka, double leveys, double korkeus)
106    {
107        LisaaTaso(paikka, leveys, korkeus, LoadImage("Sieni"));
108    }
109
110    PhysicsObject LisaaTaso(Vector paikka, double leveys, double korkeus, Image kuva)
111    {
112        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
113        taso.Position = paikka;
114        taso.Image = kuva;
115        taso.Color = Color.Teal;
116        Add(taso);
117        return taso;
118    }
119
120    void LisaaDiamond(Vector paikka, double leveys, double korkeus)
121    {
122        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys*0.5, korkeus*0.5);
123        tahti.IgnoresCollisionResponse = true;
124        tahti.Position = paikka;
125        tahti.Image = tahtiKuva;
126        tahti.Tag = "Diamond";
127        Add(tahti);
128    }
129
130    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
131    {
132        pelaaja1 = new PlatformCharacter(leveys, korkeus);
133        pelaaja1.Position = paikka;
134        pelaaja1.Mass = 4.0;
135        pelaaja1.Image = hahmokuva;
136        AddCollisionHandler(pelaaja1, "Diamond", TormaaTahteen);
137        AddCollisionHandler(pelaaja1, "vaara", PelaajaKuolee);
138        AddCollisionHandler(pelaaja1, "painovoima", painovoimamuuttuu);
139        Add(pelaaja1);
140    }
141
142    void LisaaNappaimet()
143    {
144        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
145        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
146
147        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
148        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
149        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
150        Keyboard.Listen(Key.Down, ButtonState.Pressed, Hyppaaalas, "Pelaaja hyppää alas", pelaaja1, hyppyNopeus);
151
152        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
153
154        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
155        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
156        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
157
158        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
159    }
160
161    void Liikuta(PlatformCharacter hahmo, double nopeus)
162    {
163        hahmo.Walk(nopeus);
164    }
165
166    void Hyppaa(PlatformCharacter hahmo, double nopeus)
167    {
168        hahmo.Jump(nopeus);
169    }
170
171    void Hyppaaalas(PlatformCharacter hahmo, double nopeus)
172    {
173        hahmo.ForceJump(-nopeus);
174    }
175
176    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
177    {
178        maaliAani.Play();
179        MessageDisplay.Add("Keräsit timanttin!");
180        tahti.Destroy();
181    }
182
183    void LisaaPahis(Vector paikka, double leveys, double korkeus)
184    {
185
186        PlatformCharacter Pahis = new PlatformCharacter(leveys*2, korkeus*2);
187        Add(Pahis);
188        Pahis.Position = paikka;
189        Pahis.Image = pahiskuva;
190        Pahis.Tag = "vaara";
191        Timer ajastin = new Timer();
192        ajastin.Interval = 2;
193        ajastin.Timeout += delegate
194        {
195            Pahis.Jump(850);
196        };
197        ajastin.Start();
198    }
199    void PelaajaKuolee(PhysicsObject hahmo, PhysicsObject vaara)
200    {
201        AloitaPeli();
202    }
203
204
205    void LisaaPallo(Vector paikka, double leveys = 20, double korkeus = 20)
206    {
207        PhysicsObject pallo = new PhysicsObject(leveys/2, korkeus/2);
208        Add(pallo);
209        pallo.Shape = Shape.Circle;
210        pallo.Color = Color.Black;
211        pallo.Position = paikka;
212    }
213
214    void painovoimamuuttuu(PhysicsObject hahmo, PhysicsObject taso)
215    {
216        Gravity = new Vector(0, 600);
217        hahmo.Position = taso.Position + new Vector(-45, 0);
218    }
219}
Note: See TracBrowser for help on using the repository browser.