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

Revision 8866, 10.8 KB checked in by npo17_45, 4 years ago (diff)

Kullankaivaja: kuvia, näppäimiä ja inventoryn 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
36    public override void Begin()
37    {
38        IsFullScreen = true;
39        Timer.SingleShot(0.1, LuoAlkuvalikko);
40    }
41
42    void LuoAlkuvalikko()
43    {
44
45        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
46"Aloita peli", "Lopeta");
47        alkuValikko.AddItemHandler(0, AloitaPeli);
48        alkuValikko.AddItemHandler(1, Exit);
49        Add(alkuValikko);
50
51    }
52
53    void AloitaPeli()
54    {
55        ClearAll();
56        LuoKentta();
57
58
59        Camera.Follow(pelaaja1);
60        Camera.ZoomFactor = 1.2;
61        Camera.StayInLevel = true;
62
63        Gravity = new Vector(0, -500);
64
65        Luopainikkeet();
66        LisaaNappaimet();
67        LisaaMuut();
68
69    }
70
71    void LisaaMuut()
72    {
73        //rahalaskuri laskemaan ja näyttämään rahat
74        rahalaskuri = new IntMeter(pisteet);
75
76        Label pisteNaytto = new Label();
77        pisteNaytto.X = Screen.Left + 100;
78        pisteNaytto.Y = Screen.Top - 100;
79        pisteNaytto.TextColor = Color.Black;
80        pisteNaytto.Color = Color.White;
81
82        pisteNaytto.Title = "Rahaa";
83        pisteNaytto.BindTo(rahalaskuri);
84        Add(pisteNaytto);
85
86        Inventory inventory = new Inventory();
87        inventory.Bottom = Screen.Bottom +50;
88        inventory.X = 0;
89        Add(inventory);
90
91        inventory.AddItem(null, tyhjaruutukuva);
92        inventory.AddItem(null, tyhjaruutukuva);
93        inventory.AddItem(null, tyhjaruutukuva);
94
95        // kaytossa = inventory.Objects[tyokalunPaikanNumero];
96
97
98    }
99    void LuoKentta()
100    {
101        TileMap kentta = TileMap.FromLevelAsset("kentta1");
102        kentta.SetTileMethod('#', LisaaTaso);
103        kentta.SetTileMethod('M', LisaaMaa);
104        kentta.SetTileMethod('*', LisaaTahti);
105        kentta.SetTileMethod('N', LisaaPelaaja);
106        kentta.SetTileMethod('P', LisaaMalmi);
107        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
108        Level.CreateBorders();
109        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
110
111       
112    }
113
114    void Luopainikkeet()
115    {
116
117        PushButton pause = new PushButton(LoadImage("Taukonappain"));
118        pause.X = Screen.Left+50;
119        pause.Y = Screen.Top-50;
120        pause.Clicked += Pausevalikko;
121        Add(pause);
122
123        PushButton asetukset = new PushButton(LoadImage("Asetusnappain"));
124        asetukset.Width *= 2;
125        asetukset.Height *= 2;
126
127        asetukset.Right = Screen.Right;
128        asetukset.Bottom = Screen.Bottom;
129       
130        asetukset.Clicked += Asetusvalikko;
131        Add(asetukset);
132
133    }
134    void Pausevalikko()
135    {
136        Pause();
137        MultiSelectWindow pauseValikko = new MultiSelectWindow("Tauko","Jatka", "Lopeta");
138        pauseValikko.AddItemHandler(0, Pause);
139        pauseValikko.AddItemHandler(1, Exit);
140        Add(pauseValikko);
141
142    }
143
144    void Asetusvalikko()
145    {
146
147        Pause();
148        MultiSelectWindow asetusValikko = new MultiSelectWindow("Asetukset", "Nollaa palikat", "Sulje");
149        asetusValikko.AddItemHandler(0, Nollaa);
150        asetusValikko.AddItemHandler(1, Pause);
151        Add(asetusValikko);
152
153    }
154    void LisaaTaso(Vector paikka, double leveys, double korkeus)
155    {
156        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
157        taso.Position = paikka;
158        taso.Image = ruohomaa;
159        taso.Tag = "taso";
160        Add(taso);
161    }
162
163    void LisaaMaa(Vector paikka, double leveys, double korkeus)
164    {
165
166        PhysicsObject multa = PhysicsObject.CreateStaticObject(leveys, korkeus);
167        multa.Position = paikka;
168        multa.Image = maa;
169        multa.Tag = "maa";
170        Add(multa);
171
172    }
173
174    void LisaaMalmi(Vector paikka, double leveys, double korkeus)
175    {
176        //sattumanvarainen kuutio
177        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);
178
179        if (Kuutio == 1)
180        {
181            PhysicsObject hiekka = PhysicsObject.CreateStaticObject(leveys, korkeus);
182            hiekka.Position = paikka;
183            hiekka.Image = hiekkakuva;
184            hiekka.Tag = "hiekka";
185            Add(hiekka);
186        }
187
188        if (Kuutio == 2)
189        {
190            PhysicsObject kupari = PhysicsObject.CreateStaticObject(leveys, korkeus);
191            kupari.Position = paikka;
192            kupari.Image = kuparikuva;
193            kupari.Tag = "kupari";
194            Add(kupari);
195        }
196
197        if (Kuutio == 3)
198        {
199            PhysicsObject hopea = PhysicsObject.CreateStaticObject(leveys, korkeus);
200            hopea.Position = paikka;
201            hopea.Image = hopeakuva;
202            hopea.Tag = "hopea";
203            Add(hopea);
204        }
205
206        if (Kuutio == 4)
207        {
208            PhysicsObject vahankultaa = PhysicsObject.CreateStaticObject(leveys, korkeus);
209            vahankultaa.Position = paikka;
210            vahankultaa.Image = vahankultaakuva;
211            vahankultaa.Tag = "vahankultaa";
212            Add(vahankultaa);
213        }
214
215        if (Kuutio == 5)
216        {
217            PhysicsObject paljonkultaa = PhysicsObject.CreateStaticObject(leveys, korkeus);
218            paljonkultaa.Position = paikka;
219            paljonkultaa.Image = paljonkultaakuva;
220            paljonkultaa.Tag = "paljonkultaa";
221            Add(paljonkultaa);
222        }
223
224    }
225    void LisaaTahti(Vector paikka, double leveys, double korkeus)
226    {
227        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
228        tahti.IgnoresCollisionResponse = true;
229        tahti.Position = paikka;
230        tahti.Image = tahtiKuva;
231        tahti.Tag = "tahti";
232        Add(tahti);
233    }
234
235    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
236    {
237        pelaaja1 = new PlatformCharacter(leveys*0.9, korkeus*2);
238        pelaaja1.Position = paikka;
239        pelaaja1.Mass = 1.0;
240        pelaaja1.Image = pelaajanKuva;
241        pelaaja1.StaticFriction = 0;
242        pelaaja1.KineticFriction = 0;
243        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
244        Add(pelaaja1);
245    }
246
247    void LisaaNappaimet()
248    {
249        IsMouseVisible = true;
250
251        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, Klikkaa, null);
252        Mouse.ListenWheel(Vaihdaesine, "vaihda inventoryesineitä");
253
254        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
255        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Pausevalikko, "Pause");
256
257        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
258        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
259        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
260        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
261        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
262        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
263
264
265
266        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
267        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
268        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
269        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
270
271        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
272    }
273
274    void Klikkaa()
275    {
276        Vector paikka = Mouse.PositionOnWorld;
277        List<GameObject> oliot = GetObjectsAt(paikka, 1);
278        foreach (GameObject g in oliot)
279        {
280            if(Vector.Distance(pelaaja1.Position,g.Position) <160 && !g.Equals(pelaaja1)&& !g.Tag.Equals("maa") && !g.Tag.Equals("taso"))
281            {
282                if(g.Tag == "kupari")
283                {
284                    rahalaskuri.Value += 2;
285                }
286                if (g.Tag == "hopea")
287                {
288                    rahalaskuri.Value += 5;
289                }
290                if (g.Tag == "vahankultaa")
291                {
292                    rahalaskuri.Value += 10;
293                }
294                if (g.Tag == "paljonkultaa")
295                {
296                    rahalaskuri.Value += 25;
297                }
298
299                pisteet = rahalaskuri.Value;
300                g.Destroy();
301            }
302        }
303
304    }
305
306    void Vaihdaesine()
307    {
308
309
310
311    }
312
313    void Nollaa()
314    {
315
316        ClearAll();
317        AloitaPeli();
318        IsPaused = false;
319
320    }
321    void Liikuta(PlatformCharacter hahmo, double nopeus)
322    {
323        hahmo.Walk(nopeus);
324    }
325
326    void Hyppaa(PlatformCharacter hahmo, double nopeus)
327    {
328        hahmo.Jump(nopeus);
329    }
330
331    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
332    {
333        maaliAani.Play();
334        MessageDisplay.Add("Keräsit tähden!");
335        tahti.Destroy();
336    }
337}
338
339
340
341
342
343/// Esinevalikko.
344class Inventory : Widget
345{
346    /// Tapahtuma, kun esine on valittu.
347    public event Action<PhysicsObject> ItemSelected;
348
349    /// Luo uuden esinevalikon.
350    public Inventory()
351        : base(new HorizontalLayout())
352    {
353    }
354
355
356    /// Lisää esineen.
357    /// <param name="item">Lisättävä esine.</param>
358    /// <param name="kuva">Esineen ikoni, joka näkyy valikossa.</param>
359    public void AddItem(PhysicsObject item, Image kuva)
360    {
361        PushButton icon = new PushButton(kuva);
362        Add(icon);
363        icon.Clicked += delegate () { SelectItem(item); };
364    }
365
366    void SelectItem(PhysicsObject item)
367    {
368        if (ItemSelected != null)
369        {
370            ItemSelected(item);
371        }
372    }
373}
Note: See TracBrowser for help on using the repository browser.