source: 2017/27/AnttiN/Kullankaivaja/Kullankaivaja/Kullankaivaja/Kullankaivaja.cs @ 8941

Revision 8941, 16.5 KB checked in by npo17_45, 5 years ago (diff)

Kauppa (kesken) ja Inventorynmuokkausvalikon alku.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Kullankaivaja : PhysicsGame
10{
11
12    //tämä on peli
13    //tai oikeastaan sen koodi
14
15    const double nopeus = 200;
16    const double hyppyNopeus = 650;
17    const int RUUDUN_KOKO = 40;
18
19    int pisteet = 0;
20    IntMeter rahalaskuri;
21
22    PlatformCharacter pelaaja1;
23
24    SoundEffect maaliAani = LoadSoundEffect("maali");
25    Image pelaajanKuva = LoadImage("Kaivaja");
26    Image tahtiKuva = LoadImage("tahti");
27    Image ruohomaa = LoadImage("Ruohomaa");
28    Image maa = LoadImage("Maa");
29    Image hiekkakuva = LoadImage("Hiekka");
30    Image kuparikuva = LoadImage("Kupari");
31    Image hopeakuva = LoadImage("Hopea");
32    Image vahankultaakuva = LoadImage("Vahankultaa");
33    Image paljonkultaakuva = LoadImage("Paljonkultaa");
34    Image tyhjaruutukuva = LoadImage("Tyhjaruutu");
35    Image valitturuutukuva = LoadImage("Valitturuutu");
36    Image taustakuva = LoadImage("Tausta");
37    Image inventorylapiokuva = LoadImage("Inventorylapio");
38    Image inventoryvalittulapiokuva = LoadImage("Inventoryvalittulapio");
39    Image lautaseinakuva = LoadImage("Lautaseina");
40    Image lelupussikuva = LoadImage("Lelupussi");
41    Image suljekuva = LoadImage("Sulje");
42    Image avaalelupussikuva = LoadImage("Avaalelupussi");
43
44
45    Inventory inventory;
46    int esinelaskuri = 0;
47
48    public override void Begin()
49    {
50        Level.Size = Screen.Size;
51        Level.Background.Image = taustakuva;
52        Level.Background.FitToLevel();
53        IsFullScreen = false;
54        Timer.SingleShot(0.1, LuoAlkuvalikko);
55    }
56
57    void LuoAlkuvalikko()
58    {
59       
60        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
61"Aloita peli", "Lopeta");
62        alkuValikko.AddItemHandler(0, AloitaPeli);
63        alkuValikko.AddItemHandler(1, Exit);
64        Add(alkuValikko);
65
66    }
67
68    void AloitaPeli()
69    {
70        ClearAll();
71        LuoKentta();
72        Level.Background.Image = taustakuva;
73
74        Camera.Follow(pelaaja1);
75        Camera.ZoomFactor = 1.2;
76        Camera.StayInLevel = true;
77
78        Gravity = new Vector(0, -500);
79
80        Luopainikkeet();
81        LisaaNappaimet();
82        LisaaMuut();
83
84    }
85
86    void LisaaMuut()
87    {
88        //rahalaskuri laskemaan ja näyttämään rahat
89        rahalaskuri = new IntMeter(pisteet);
90
91        Label pisteNaytto = new Label();
92        pisteNaytto.X = Screen.Left + 100;
93        pisteNaytto.Y = Screen.Top - 100;
94        pisteNaytto.TextColor = Color.Black;
95        pisteNaytto.Color = Color.White;
96
97        pisteNaytto.Title = "Rahaa";
98        pisteNaytto.BindTo(rahalaskuri);
99        Add(pisteNaytto);
100
101        inventory = new Inventory();
102        inventory.Bottom = Screen.Bottom + 50;
103        inventory.X = 0;
104        Add(inventory);
105
106        inventory.AddItem(null, inventoryvalittulapiokuva);
107        inventory.AddItem(null, tyhjaruutukuva);
108        inventory.AddItem(null, tyhjaruutukuva);
109
110        // kaytossa = inventory.Objects[tyokalunPaikanNumero];
111
112
113    }
114    void LuoKentta()
115    {
116        TileMap kentta = TileMap.FromLevelAsset("kentta1");
117        kentta.SetTileMethod('#', LisaaTaso);
118        kentta.SetTileMethod('M', LisaaMaa);
119        kentta.SetTileMethod('*', LisaaTahti);
120        kentta.SetTileMethod('N', LisaaPelaaja);
121        kentta.SetTileMethod('P', LisaaMalmi);
122        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
123        Level.CreateBorders();
124        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
125
126        MessageDisplay.AbsolutePosition = new Vector(1650, 0);
127       
128
129    }
130
131    void Luopainikkeet()
132    {
133
134        PushButton pause = new PushButton(LoadImage("Taukonappain"));
135        pause.X = Screen.Left + 50;
136        pause.Y = Screen.Top - 50;
137        pause.Clicked += Pausevalikko;
138        Add(pause);
139
140        PushButton asetukset = new PushButton(LoadImage("Asetusnappain"));
141        asetukset.Width *= 2;
142        asetukset.Height *= 2;
143
144        asetukset.Right = Screen.Right;
145        asetukset.Bottom = Screen.Bottom;
146
147        asetukset.Clicked += Asetusvalikko;
148        Add(asetukset);
149
150    }
151    void Pausevalikko()
152    {
153        Pause();
154        MultiSelectWindow pauseValikko = new MultiSelectWindow("Tauko", "Jatka", "Lopeta");
155        pauseValikko.AddItemHandler(0, Pause);
156        pauseValikko.AddItemHandler(1, Exit);
157        Add(pauseValikko);
158
159    }
160
161    void Asetusvalikko()
162    {
163
164        Pause();
165        MultiSelectWindow asetusValikko = new MultiSelectWindow("Asetukset", "Nollaa palikat || hinta:150","Kauppa","Tavarat","Sulje");
166        asetusValikko.AddItemHandler(0, Nollaa);
167        asetusValikko.AddItemHandler(1, Kauppa);
168        asetusValikko.AddItemHandler(2, Tavarat);
169        asetusValikko.AddItemHandler(3, Pause);
170        Add(asetusValikko);
171
172    }
173
174    void Tavarat()
175    {
176
177        inventory.Y = 2000;
178        PushButton tausta = new PushButton(lautaseinakuva);
179        tausta.Width = Screen.Width;
180        tausta.Height = Screen.Height;
181        Add(tausta);
182
183        PushButton sulje = new PushButton(suljekuva);
184        sulje.Right = Screen.Right;
185        sulje.Top = Screen.Top;
186        Add(sulje);
187
188        PushButton Inventoryruutu1 = new PushButton(tyhjaruutukuva);
189        Inventoryruutu1.Y = 100;
190        Add(Inventoryruutu1);
191
192        sulje.Clicked += delegate
193        {
194
195            tausta.Destroy();
196            sulje.Destroy();
197            inventory.Bottom = Screen.Bottom + 50;
198            IsPaused = false;
199
200        };
201
202    }
203
204    void Kauppa()
205    {
206       
207        inventory.Y = 2000;
208        PushButton tausta = new PushButton(lautaseinakuva);
209        tausta.Width = Screen.Width;
210        tausta.Height = Screen.Height;
211        Add(tausta);
212
213        PushButton sulje = new PushButton(suljekuva);
214        sulje.Right = Screen.Right;
215        sulje.Top = Screen.Top;
216        Add(sulje);
217
218        PushButton lelupussi = new PushButton(lelupussikuva);
219        lelupussi.Size *= 3;
220        lelupussi.X = -800;
221        lelupussi.Y = +150;
222        Add(lelupussi);
223        lelupussi.Clicked += delegate
224        {
225           
226            if (rahalaskuri.Value >= 100)
227            {
228                rahalaskuri.Value -= 100;
229
230                sulje.Destroy();
231                lelupussi.Destroy();
232
233                PushButton avaalelupussi = new PushButton(avaalelupussikuva);
234                avaalelupussi.Size *= 3;
235                avaalelupussi.X = -150;
236                avaalelupussi.Y = 0;
237                Add(avaalelupussi);
238                avaalelupussi.Clicked += delegate
239                {
240                    tausta.Destroy();
241                    sulje.Destroy();
242                    lelupussi.Destroy();
243                    avaalelupussi.Destroy();
244                    Kauppa();
245                };
246            }
247
248            else
249            {
250                tausta.Destroy();
251                sulje.Destroy();
252                lelupussi.Destroy();
253                Kauppa();
254            }
255
256
257        };
258
259
260        sulje.Clicked += delegate
261        {
262
263            tausta.Destroy();
264            sulje.Destroy();
265            lelupussi.Destroy();
266            inventory.Bottom = Screen.Bottom + 50;
267            IsPaused = false;
268
269        };
270
271
272    }
273    void LisaaTaso(Vector paikka, double leveys, double korkeus)
274    {
275        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
276        taso.Position = paikka;
277        taso.Image = ruohomaa;
278        taso.Tag = "taso";
279        Add(taso);
280    }
281
282    void LisaaMaa(Vector paikka, double leveys, double korkeus)
283    {
284
285        PhysicsObject multa = PhysicsObject.CreateStaticObject(leveys, korkeus);
286        multa.Position = paikka;
287        multa.Image = maa;
288        multa.Tag = "maa";
289        Add(multa);
290
291    }
292
293    void LisaaMalmi(Vector paikka, double leveys, double korkeus)
294    {
295        //sattumanvarainen kuutio
296        int Kuutio = RandomGen.SelectOne(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 5);
297
298        if (Kuutio == 1)
299        {
300            PhysicsObject hiekka = PhysicsObject.CreateStaticObject(leveys, korkeus);
301            hiekka.Position = paikka;
302            hiekka.Image = hiekkakuva;
303            hiekka.Tag = "hiekka";
304            Add(hiekka);
305        }
306
307        if (Kuutio == 2)
308        {
309            PhysicsObject kupari = PhysicsObject.CreateStaticObject(leveys, korkeus);
310            kupari.Position = paikka;
311            kupari.Image = kuparikuva;
312            kupari.Tag = "kupari";
313            Add(kupari);
314        }
315
316        if (Kuutio == 3)
317        {
318            PhysicsObject hopea = PhysicsObject.CreateStaticObject(leveys, korkeus);
319            hopea.Position = paikka;
320            hopea.Image = hopeakuva;
321            hopea.Tag = "hopea";
322            Add(hopea);
323        }
324
325        if (Kuutio == 4)
326        {
327            PhysicsObject vahankultaa = PhysicsObject.CreateStaticObject(leveys, korkeus);
328            vahankultaa.Position = paikka;
329            vahankultaa.Image = vahankultaakuva;
330            vahankultaa.Tag = "vahankultaa";
331            Add(vahankultaa);
332        }
333
334        if (Kuutio == 5)
335        {
336            PhysicsObject paljonkultaa = PhysicsObject.CreateStaticObject(leveys, korkeus);
337            paljonkultaa.Position = paikka;
338            paljonkultaa.Image = paljonkultaakuva;
339            paljonkultaa.Tag = "paljonkultaa";
340            Add(paljonkultaa);
341        }
342
343    }
344    void LisaaTahti(Vector paikka, double leveys, double korkeus)
345    {
346        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
347        tahti.IgnoresCollisionResponse = true;
348        tahti.Position = paikka;
349        tahti.Image = tahtiKuva;
350        tahti.Tag = "tahti";
351        Add(tahti);
352    }
353
354    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
355    {
356        pelaaja1 = new PlatformCharacter(leveys * 0.9, korkeus * 2);
357        pelaaja1.Position = paikka;
358        pelaaja1.Mass = 1.0;
359        pelaaja1.Image = pelaajanKuva;
360        pelaaja1.StaticFriction = 0;
361        pelaaja1.KineticFriction = 0;
362        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
363        Add(pelaaja1);
364    }
365
366    void LisaaNappaimet()
367    {
368        IsMouseVisible = true;
369
370        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, Klikkaa, null);
371        Mouse.Listen(MouseButton.Left, ButtonState.Released, LaskeIrti, null);
372        Mouse.ListenWheel(Vaihdaesine, "vaihda inventoryesineitä");
373
374        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
375        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Pausevalikko, "Pause");
376
377        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
378        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
379        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
380        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
381        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
382        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
383
384
385
386        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
387        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
388        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
389        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
390
391        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
392    }
393
394    Timer hajotusAjastin;
395
396    void LaskeIrti()
397    {
398        if(hajotusAjastin !=null)
399        {
400            hajotusAjastin.Stop();
401        }
402    }
403
404    void Klikkaa()
405    {
406
407        if(esinelaskuri == 0)
408        {
409            Vector paikka = Mouse.PositionOnWorld;
410            List<GameObject> oliot = GetObjectsAt(paikka, 1);
411            foreach (GameObject g in oliot)
412            {
413                if (Vector.Distance(pelaaja1.Position, g.Position) < 160 && !g.Equals(pelaaja1) && !g.Tag.Equals("maa") && !g.Tag.Equals("taso"))
414                {
415                    hajotusAjastin = new Timer();
416                    hajotusAjastin.Interval = 0.4;
417
418                    if (g.Tag == "kupari") hajotusAjastin.Interval = 0.6;
419                    if (g.Tag == "hopea") hajotusAjastin.Interval = 1;
420                    if (g.Tag == "vahankultaa") hajotusAjastin.Interval = 2;
421                    if (g.Tag == "paljonkultaa") hajotusAjastin.Interval = 3;
422
423                    hajotusAjastin.Timeout += delegate
424                    {
425
426                        if (!g.IsInsideRect(Mouse.PositionOnWorld)) return;
427
428
429
430
431
432                        if (g.Tag == "kupari")
433                        {
434                            MessageDisplay.Add("Kupari +2 rahaa");
435                            rahalaskuri.Value += 2;
436                        }
437                        if (g.Tag == "hopea")
438                        {
439                            MessageDisplay.Add("Hopea +5 rahaa");
440                            rahalaskuri.Value += 5;
441                        }
442                        if (g.Tag == "vahankultaa")
443                        {
444                            MessageDisplay.Add("Vähän kultaa +10 rahaa");
445                            rahalaskuri.Value += 10;
446                        }
447                        if (g.Tag == "paljonkultaa")
448                        {
449                            MessageDisplay.Add("Paljon kultaa +25 rahaa");
450                            rahalaskuri.Value += 25;
451                        }
452                        pisteet = rahalaskuri.Value;
453                        g.Destroy();
454                    };
455                    hajotusAjastin.Start(1);
456
457                }
458            }
459        }
460        else
461        {
462            MessageDisplay.Add("Käytä työkalua");
463        }
464
465    }
466
467    void Vaihdaesine()
468    {
469        if (esinelaskuri == 0)
470        {
471            inventory.esineet[esinelaskuri].Image = inventorylapiokuva;
472        }
473        else
474        {
475            inventory.esineet[esinelaskuri].Image = tyhjaruutukuva;
476        }
477       
478        esinelaskuri = esinelaskuri + Mouse.WheelChange;
479        if (esinelaskuri < 0) esinelaskuri = 2;
480        if (esinelaskuri > 2) esinelaskuri = 0;
481
482        if (esinelaskuri == 0)
483        {
484            inventory.esineet[esinelaskuri].Image = inventoryvalittulapiokuva;
485        }
486        else
487        {
488            inventory.esineet[esinelaskuri].Image = valitturuutukuva;
489        }
490       
491    }
492
493    void Nollaa()
494    {
495        if (rahalaskuri.Value >= 150)
496        {
497            ClearAll();
498            AloitaPeli();
499            rahalaskuri.Value -= 150;
500            IsPaused = false;
501        }
502
503        else
504        {
505
506            MessageDisplay.Add("liian vähän rahaa");
507            IsPaused = false;
508
509        }
510    }
511    void Liikuta(PlatformCharacter hahmo, double nopeus)
512    {
513        hahmo.Walk(nopeus);
514    }
515
516    void Hyppaa(PlatformCharacter hahmo, double nopeus)
517    {
518        hahmo.Jump(nopeus);
519    }
520
521    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
522    {
523        maaliAani.Play();
524        MessageDisplay.Add("Keräsit tähden!");
525        tahti.Destroy();
526    }
527}
528
529
530
531
532
533/// Esinevalikko.
534class Inventory : Widget
535{
536    /// Tapahtuma, kun esine on valittu.
537    public event Action<PhysicsObject> ItemSelected;
538    public List<PushButton> esineet = new List<PushButton>();
539
540    /// Luo uuden esinevalikon.
541    public Inventory()
542        : base(new HorizontalLayout())
543    {
544    }
545
546
547    /// Lisää esineen.
548    /// <param name="item">Lisättävä esine.</param>
549    /// <param name="kuva">Esineen ikoni, joka näkyy valikossa.</param>
550    public void AddItem(PhysicsObject item, Image kuva)
551    {
552        PushButton icon = new PushButton(kuva);
553        esineet.Add(icon);
554        Add(icon);
555        icon.Clicked += delegate () { SelectItem(item); };
556    }
557
558    void SelectItem(PhysicsObject item)
559    {
560        if (ItemSelected != null)
561        {
562            ItemSelected(item);
563        }
564    }
565}
Note: See TracBrowser for help on using the repository browser.