source: 2015/30/SamuelL/jotain/jotain/jotain/jotain.cs @ 6995

Revision 6995, 10.0 KB checked in by misakana, 4 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 jotain : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16    AssaultRifle ase1;
17    bool ase1Flipattu = false;
18
19    Image pelaajanKuva = LoadImage("pelaajakuva");
20    Image pelaajaputoaa = LoadImage("pelaajaputoaa");
21    Image tahtiKuva = LoadImage("tahti");
22    Image Taustakuva = LoadImage("tausta 1");
23    Image kasvi1 = LoadImage("tausta - kasvi 1");
24    Image kasvi2 = LoadImage("tausta - kasvit 2");
25    Image taustaruoho = LoadImage("tausta ruoho");
26    Image tuli = LoadImage("tulikuva");
27    Image Pimeyskuva = LoadImage("pimeys");
28    Image valokuva = LoadImage("valokuva");
29    Image luolapaikka = LoadImage("luolapaikka");
30    Image Isokivi = LoadImage("kivi2");
31    Image pienikivi = LoadImage("kivi");
32    Image puu = LoadImage("puuu");
33    Image Asekuva = LoadImage("GUN");
34    Image Tähtäin = LoadImage("tähtäin");
35
36    int kenttänumero = 1;
37
38    Animation kävely;
39
40    SoundEffect maaliAani = LoadSoundEffect("maali");
41    SoundEffect TuliPalo = LoadSoundEffect("tuli");
42    SoundEffect pistolshot = LoadSoundEffect("PistolShot");
43
44    public override void Begin()
45    {
46        AloitaKentta();
47
48    }
49
50    void LuoKentta()
51    {
52        TileMap kentta = TileMap.FromLevelAsset("kentta" + kenttänumero);
53        kentta.SetTileMethod('#', LisaaTaso);
54        kentta.SetTileMethod('*', LisaaTahti);
55        kentta.SetTileMethod('N', LisaaPelaaja);
56        kentta.SetTileMethod('k', LisaaKasvi, kasvi1, 1);
57        kentta.SetTileMethod('K', LisaaKasvi, kasvi2, -1);
58        kentta.SetTileMethod('r', Lisaaruoho, taustaruoho, 1);
59        kentta.SetTileMethod('T', Lisaatuli);
60        kentta.SetTileMethod('V', LisaaVaihto);
61        kentta.SetTileMethod('O', Lisaakivi, Isokivi, 1);
62        kentta.SetTileMethod('o', Lisaakivi, pienikivi, -1);
63        kentta.SetTileMethod('p', Lisaapuu, puu, 1);
64        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
65        kentta.Optimize('#');
66        if (kenttänumero == 1)
67        {
68            Level.Background.Image = Taustakuva;
69        }
70        else if (kenttänumero == 2)
71        {
72            Level.Background.Image = luolapaikka;
73        }
74        Level.Background.FitToLevel();
75
76
77    }
78
79    void LisaaTaso(Vector paikka, double leveys, double korkeus)
80    {
81        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
82        taso.Position = paikka;
83        taso.IsVisible = true;
84        taso.Tag = "taso";
85        Add(taso);
86        taso.Color = Color.Black;
87    }
88    void LisaaKasvi(Vector paikka, double leveys, double korkeus, Image kuva, int taso)
89    {
90        GameObject kasvi = new GameObject(leveys * 1.5, korkeus * 3);
91        kasvi.Position = paikka + new Vector(0, 0);
92        Add(kasvi, taso);
93        kasvi.Image = kuva;
94
95        GameObject valo = new GameObject(100, 100);
96        valo.Image = valokuva;
97        valo.Position = paikka;
98        valo.Y += 50;
99        Add(valo, 3);
100    }
101
102    void Lisaaruoho(Vector paikka, double leveys, double korkeus, Image kuva, int taso)
103    {
104        GameObject ruoho = new GameObject(leveys, korkeus);
105        ruoho.Position = paikka + new Vector();
106        Add(ruoho, taso);
107        ruoho.Image = kuva;
108
109    }
110
111    void LisaaTahti(Vector paikka, double leveys, double korkeus)
112    {
113        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
114        tahti.IgnoresCollisionResponse = true;
115        tahti.Position = paikka;
116        tahti.Image = tahtiKuva;
117        tahti.Tag = "tahti";
118        Add(tahti);
119    }
120
121    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
122    {
123        pelaaja1 = new PlatformCharacter(leveys * 1.5, korkeus * 1.5);
124        pelaaja1.Position = paikka;
125        pelaaja1.Mass = 4.0;
126        pelaaja1.Image = pelaajanKuva;
127        pelaaja1.Tag = "pelaaja1";
128        pelaaja1.AnimWalk = kävely;
129        pelaaja1.AnimIdle = new Animation(pelaajanKuva);
130        pelaaja1.AnimFall = new Animation(pelaajaputoaa);
131        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
132        Add(pelaaja1);
133        AddCollisionHandler(pelaaja1, "vaihto", tormaavaihtoon);
134
135        GameObject pimeys = new GameObject(2700, 2700);
136        pimeys.IsVisible = true;
137        pimeys.Image = Pimeyskuva;
138        Add(pimeys, 2);
139        Timer ajastin = new Timer();
140        ajastin.Interval = 0.05;
141        ajastin.Timeout += delegate
142        {
143            pimeys.Position = pelaaja1.Position;
144        };
145        ajastin.Start();
146
147        ase1 = new AssaultRifle(Asekuva.Width, Asekuva.Height);
148        ase1.Image = Asekuva;
149        ase1.Size *= 0.1;
150        ase1.Power.Value = 2000;
151        ase1.FireRate = 2.0;
152        ase1.Tag = "ase";
153        ase1.AttackSound = pistolshot;
154
155
156
157
158        Add(ase1);
159    }
160
161    void LisaaNappaimet()
162    {
163        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
164        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
165
166        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
167        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
168        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
169        Mouse.Listen(MouseButton.Left, ButtonState.Down, ammuaseella, "Liikkuu vasemmalle");
170
171
172        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
173
174        ControllerOne.Listen(Button.A, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
175        ControllerOne.Listen(Button.B, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
176        ControllerOne.Listen(Button.BigButton, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
177        Mouse.IsCursorVisible = false;
178
179
180
181        GameObject hiiri = new GameObject(Tähtäin);
182        hiiri.Size *= 0.1;
183        Add(hiiri, 3);
184       
185        Timer hiiriAjastin = new Timer();
186        hiiriAjastin.Interval = 0.01;
187        hiiriAjastin.Timeout += delegate
188        {
189            hiiri.Position = Mouse.PositionOnWorld;
190        };
191        hiiriAjastin.Start();
192
193        Mouse.ListenMovement(0.0, KaannetaanAsetta, "");
194
195        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
196    }
197    void KaannetaanAsetta(AnalogState hiirenTila)
198    {
199        Vector suunta = Mouse.PositionOnWorld - pelaaja1.Position;
200        ase1.Position = pelaaja1.Position + suunta.Normalize() * 30;
201        ase1.Angle = suunta.Angle;
202
203        double kulma = suunta.Angle.Degrees;
204       
205        if (kulma < 90 && kulma > -90)
206        {
207            if (ase1Flipattu)
208            {
209                ase1.FlipImage();
210                ase1Flipattu = false;
211            }
212        }
213        else
214        {
215            if (!ase1Flipattu)
216            {
217                ase1.FlipImage();
218                ase1Flipattu = true;
219            }
220        }
221
222    }
223
224    void Liikuta(PlatformCharacter hahmo, double nopeus)
225    {
226        hahmo.Walk(nopeus);
227    }
228
229    void Hyppaa(PlatformCharacter hahmo, double nopeus)
230    {
231        hahmo.Jump(nopeus);
232    }
233
234    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
235    {
236        maaliAani.Play();
237        MessageDisplay.Add("Keräsit tähden!");
238        tahti.Destroy();
239    }
240
241    void Lisaatuli(Vector paikka, double leveys, double korkeus)
242    {
243
244        Flame liekki = new Flame(tuli);
245        liekki.MinLifetime = 0.1;
246        liekki.MaxLifetime = 0.5;
247        liekki.MinScale = 10;
248        liekki.MaxScale = 30;
249        liekki.Position = paikka;
250        Add(liekki);
251
252        Timer ajastin = new Timer();
253        ajastin.Interval = 0.05;
254        ajastin.Timeout += delegate
255        {
256            liekki.Position = paikka + RandomGen.NextVector(0, 30);
257        };
258        ajastin.Start();
259    }
260
261    void LisaaVaihto(Vector paikka, double leveys, double korkeus)
262    {
263        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
264        taso.Position = paikka;
265        taso.IsVisible = false;
266        Add(taso);
267        taso.Tag = "vaihto";
268    }
269    void VaihdaKenttaa()
270    {
271        kenttänumero++;
272        AloitaKentta();
273    }
274
275    void AloitaKentta()
276    {
277        ClearAll();
278        kävely = LoadAnimation("pelaaja");
279        Gravity = new Vector(0, -1000);
280
281        LuoKentta();
282        LisaaNappaimet();
283
284        Camera.Follow(pelaaja1);
285        Camera.ZoomFactor = 1.2;
286        Camera.StayInLevel = true;
287
288        if (kenttänumero == 1)
289        {
290            MediaPlayer.Play("tuli");
291            MediaPlayer.IsRepeating = true;
292        }
293        else if (kenttänumero == 2)
294        {
295            MediaPlayer.Stop();
296        }
297    }
298    void tormaavaihtoon(PhysicsObject pelaaja, PhysicsObject vaihto)
299    {
300        VaihdaKenttaa();
301
302
303
304    }
305    void Lisaakivi(Vector paikka, double leveys, double korkeus, Image kuva, int taso)
306    {
307        GameObject Isokivi = new GameObject(leveys * 1, korkeus * 1);
308        Isokivi.Position = paikka + new Vector(0, 0);
309        Add(Isokivi, taso);
310        Isokivi.Image = kuva;
311
312    }
313    void Lisaapuu(Vector paikka, double leveys, double korkeus, Image kuva, int taso)
314    {
315        GameObject puu = new GameObject(leveys * 3, korkeus * 3);
316        puu.Position = paikka + new Vector(0, 0);
317        Add(puu, taso);
318        puu.Image = kuva;
319
320
321
322    }
323    void ammuaseella()
324    {
325        PhysicsObject ammus = ase1.Shoot();
326
327        if (ammus != null)
328        {
329            ammus.MaximumLifetime = TimeSpan.FromSeconds(5);
330           
331            AddCollisionHandler(ammus, "taso", delegate(PhysicsObject a, PhysicsObject b) 
332            {
333                ammus.Destroy(); 
334            });
335        }
336    }
337
338}
Note: See TracBrowser for help on using the repository browser.