source: 2015/24/OskariL/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1.cs @ 5949

Revision 5949, 7.5 KB checked in by oslahtin, 7 years ago (diff)
Line 
1using Jypeli;
2using Jypeli.Controls;
3using Jypeli.Widgets;
4using Jypeli.Effects;
5using Jypeli.Content;
6using Jypeli.Assets;
7using Jypeli.GameObjects;
8public class Tasohyppelypeli1 : PhysicsGame
9{
10    const double nopeus = 10000;
11    const double hyppyNopeus = 750;
12    const int RUUDUN_KOKO = 40;
13
14    PlatformCharacter pelaaja1;
15
16    Image pelaajanKuva = LoadImage("Pulla");
17    Image tahtiKuva = LoadImage("pacman");
18    Image parsakaaliKuva = LoadImage("parsakaali");
19
20    SoundEffect maaliAani = LoadSoundEffect("maali");
21    IntMeter pisteLaskuri;
22
23    bool peliKaynnissa = false;
24
25    Timer liikutusajastin;
26    Timer liikutusajastin2;
27
28    EasyHighScore topLista = new EasyHighScore();
29
30
31    public override void Begin()
32    {
33        Gravity = new Vector(0, -1900);
34
35        SetWindowSize((int)(Screen.Width), (int)Screen.Height);
36
37        LuoKentta();
38        LisaaNappaimet();
39        LuoPistelaskuri();
40
41        Camera.Follow(pelaaja1);
42        Camera.ZoomFactor = 2;
43        Camera.StayInLevel = true;
44
45       liikutusajastin = new Timer();
46     liikutusajastin.Interval = 0.01;
47        liikutusajastin.Timeout += SiirraPelaajaaOikeammalle;
48       liikutusajastin.Start();
49
50       liikutusajastin2 = new Timer();
51       liikutusajastin2.Interval = 0.01;
52       liikutusajastin2.Timeout += SiirraPelaajaaVasemmalle;
53
54
55        peliKaynnissa = true;
56
57
58    }
59    void SiirraPelaajaaVasemmalle()
60    {
61        pelaaja1.Push(new Vector(nopeus, 0.0));
62    }
63    void SiirraPelaajaaOikeammalle()
64    {
65        pelaaja1.Push(new Vector(nopeus, 0.0));
66
67    }
68    void LuoKentta()
69    {
70        TileMap kentta = TileMap.FromLevelAsset("kentta1");
71        kentta.SetTileMethod('#', LisaaTaso);
72        kentta.SetTileMethod('*', LisaaTahti);
73        kentta.SetTileMethod('N', LisaaPelaaja);
74        kentta.SetTileMethod('V', LisaaVihollinen);
75        kentta.SetTileMethod('P', LisaaPahis);
76        kentta.SetTileMethod('p', LuoParsakaali);
77        kentta.SetTileMethod('B', LisaaPommi);
78        kentta.Execute(20, 20);
79   
80        Level.CreateLeftBorder();
81        Level.CreateTopBorder();
82        Level.CreateBottomBorder();
83        PhysicsObject oikeaReuna = Level.CreateRightBorder();
84        oikeaReuna.Tag = "oikea";
85
86        Level.Background.CreateGradient(Color.SkyBlue, Color.Azure);
87    }
88
89    void LisaaTaso(Vector paikka, double leveys, double korkeus)
90    {
91        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
92        taso.Position = paikka;
93        taso.Color = new Color(4, 146, 208);
94        taso.Tag = "seina";
95       
96        Add(taso);
97    }
98
99    void LisaaTahti(Vector paikka, double leveys, double korkeus)
100    {
101        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
102        tahti.IgnoresCollisionResponse = true;
103        tahti.Position = paikka;
104        tahti.Image = tahtiKuva;
105        tahti.Tag = "tahti";
106        Add(tahti);
107    }
108
109    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
110    {
111        pelaaja1 = new PlatformCharacter(leveys, korkeus);
112        pelaaja1.Position = paikka;
113        pelaaja1.Mass = 3.25;
114        pelaaja1.Image = pelaajanKuva;
115        AddCollisionHandler(pelaaja1, "seina", TormaaTasoon);
116        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
117        AddCollisionHandler(pelaaja1, "vihu", TormaaTasoon);
118        AddCollisionHandler(pelaaja1, "oikea", TormaaOikeaanReunaan);
119        AddCollisionHandler(pelaaja1, "pommi", Rajahdys);
120
121        Add(pelaaja1);
122    }
123    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
124    {
125        PhysicsObject vihollinen = new PhysicsObject(leveys, korkeus);
126        vihollinen.Color = Color.Azure;
127        vihollinen.Shape = Shape.Rectangle;
128        vihollinen.Position = paikka;
129        vihollinen.IgnoresGravity = true;
130        vihollinen.CanRotate = false;
131        Add(vihollinen);
132
133    }
134    void LisaaPommi(Vector paikka, double leveys, double korkeus)
135    {
136        PhysicsObject pommi = new PhysicsObject(leveys, korkeus);
137        pommi.Color = Color.Black;
138        pommi.Shape = Shape.Triangle;
139        pommi.Position = paikka;
140        pommi.IgnoresGravity = true;
141        pommi.CanRotate = true;
142        pommi.Tag = "pommi";
143
144        Add(pommi);
145
146
147    }
148    void LisaaPahis(Vector paikka, double leveys, double korkeus)
149    {
150
151        PhysicsObject pahis = new PhysicsObject(leveys, korkeus);
152        pahis.Color = Color.DarkRed;
153        pahis.Shape = Shape.Diamond;
154        pahis.Position = paikka;
155        pahis.IgnoresGravity = true;
156        pahis.CanRotate = true;
157        pahis.Oscillate(new Vector(0, 1), korkeus * 1.5, 0.3);
158
159        Add(pahis);
160
161    }
162
163    void LuoParsakaali(Vector paikka, double leveys, double korkeus)
164    {
165        PhysicsObject parsakaali = PhysicsObject.CreateStaticObject(leveys, korkeus);
166        parsakaali.IgnoresCollisionResponse = true;
167        parsakaali.Position = paikka;
168        parsakaali.Image = parsakaaliKuva;
169        parsakaali.Tag = "tahti";
170        Add(parsakaali);
171
172    }
173    void LisaaNappaimet()
174    {
175        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
176        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
177        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
178
179        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
180        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
181
182    }
183    void Liikuta(PlatformCharacter hahmo, double nopeus)
184    {
185        hahmo.Walk(nopeus);
186    }
187
188    void Hyppaa(PlatformCharacter hahmo, double nopeus)
189    {
190        hahmo.ForceJump(nopeus);
191    }
192
193    void TormaaParsakaaliin(PhysicsObject hahmo, PhysicsObject parsakaali)
194    {
195        maaliAani.Play();
196        pisteLaskuri.Value += 3;
197        MessageDisplay.Add("Popping-whirling!!!");
198        parsakaali.Destroy();
199    }
200
201    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
202    {
203        maaliAani.Play();
204        pisteLaskuri.Value += 1;
205        MessageDisplay.Add("Jaa.");
206        tahti.Destroy();
207    }
208    void LuoPistelaskuri()
209    {
210        pisteLaskuri = new IntMeter(0);
211
212        Label pisteNaytto = new Label();
213        pisteNaytto.X = Screen.Left + 100;
214        pisteNaytto.Y = Screen.Top - 100;
215        pisteNaytto.TextColor = Color.Black;
216        pisteNaytto.Color = Color.Transparent;
217        pisteNaytto.Title = "Pisteet:";
218        pisteNaytto.BindTo(pisteLaskuri);
219        Add(pisteNaytto);
220    }
221
222    void TormaaTasoon(PhysicsObject tormaaja, PhysicsObject kohde)
223    {
224        if (peliKaynnissa)
225        {
226            MessageDisplay.Add("Kuolit! :(");
227   //      Keyboard.Disable(Key.Up);
228    //     liikutusajastin.Stop();
229    //     peliKaynnissa = false;
230        }
231       
232    }
233
234    void TormaaOikeaanReunaan(PhysicsObject tormaaja, PhysicsObject kohde)
235    {
236        MessageDisplay.Add("Pääsit kentän läpi");
237        liikutusajastin.Stop();
238        liikutusajastin2.Start();
239        pisteLaskuri.Value += 10;
240    }
241
242    void Rajahdys(PhysicsObject pelaaja1, PhysicsObject pommi)
243    {
244        Explosion rajahdys = new Explosion(100);
245        rajahdys.Position = pommi.Position;
246        rajahdys.Speed = 400.0;
247        rajahdys.Force = 36;
248        //rajahdys.ShockwaveColor = new Color(4, 146, 208);
249        Add(rajahdys);
250
251    }
252   
253}
Note: See TracBrowser for help on using the repository browser.