source: 2011/23/jomiilri/The Pallo's Tale/The Pallo's Tale/The Pallo's Tale/Peli.cs @ 1889

Revision 1889, 11.3 KB checked in by jomiilri, 12 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
9//TEKIJÄ JOE RISTIMÄKI 2011
10
11public class Peli : PhysicsGame
12{
13    PhysicsObject pelaaja;
14    PhysicsObject valot;
15    PhysicsObject kynnys;
16    PhysicsObject raha;
17
18    PushButton poistumisnappi;
19
20    GameObject HUDI;
21
22    List<GameObject> inventory = new List<GameObject>();
23
24    List<Label> kauppatekstit = new List<Label>();
25
26    List<GameObject> kauppaoliot = new List<GameObject>();
27
28    List<GameObject> huone1tavarat = new List<GameObject>();
29
30    List<GameObject> kentta1tavarat = new List<GameObject>();
31
32    Image talonkuva = LoadImage("taloKuva");
33    Image ovivalot = LoadImage("valotKuva");
34    Image huone_1 = LoadImage("huone1");
35    Image kolikot = LoadImage("kolikot");
36    Image miekkakauppa = LoadImage("miekka");
37    public override void Begin()
38    {
39        SetWindowSize(1024, 768, false);
40        AlustaPeli();
41        LuoKentta();
42        LuoPelaaja(0, 240);
43    }
44
45    void AlustaPeli()
46    {
47        LuoHUDI();
48        LuoRahaLaskuri();
49        IsMouseVisible = true;
50    }
51
52    void LuoKentta()
53    {
54        LuoRaha(0, 0, 10, kolikot);
55        LuoRaha(50, 50, 10, kolikot);
56        LuoTalo();
57        LuoNPChahmo();
58
59        Level.BackgroundColor = Color.DarkGreen;
60    }
61
62    void LuoPelaaja(double x, double y)
63    {
64        pelaaja = new PhysicsObject(30.0, 30.0);
65        pelaaja.Shape = Shape.Circle;
66        pelaaja.X = x;
67        pelaaja.Y = y;
68        Add(pelaaja);
69
70        AddCollisionHandler(pelaaja, PelaajaTormasi);
71
72        HiirenKlikkaus();
73
74        pelaaja.CollisionIgnoreGroup = 1;
75    }
76
77    void LuoNPChahmo()
78    {
79        PhysicsObject npc_1 = PhysicsObject.CreateStaticObject(30.0, 30.0);
80        npc_1.Shape = Shape.Circle;
81        npc_1.Color = Color.Yellow;
82        npc_1.Tag = "npc_1";
83        npc_1.X = -150;
84        npc_1.Y = -50;
85        kentta1tavarat.Add(npc_1);
86        Add(npc_1);
87    }
88
89
90    void HiirenKlikkaus()
91    {
92        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, LiikutaPelaajaa, "Liikuta pelaaja hiiren klikkauksen kohdalle");
93    }
94
95    void LiikutaPelaajaa()
96    {
97        Vector klikkausRuudulla = Mouse.PositionOnWorld;
98        pelaaja.MoveTo(klikkausRuudulla, 300);
99    }
100
101    void PelaajaTormasi(PhysicsObject pelaaja, PhysicsObject kohde)
102    {
103        if (kohde.Tag.ToString() == "npc_1")
104        {
105            Label tekstikentta_1 = new Label("Hello! Stranger");
106            Add(tekstikentta_1);
107            tekstikentta_1.X = kohde.Left - 20;
108            tekstikentta_1.Y = kohde.Top + 20;
109            tekstikentta_1.Font = Font.DefaultSmallBold;
110            Timer.SingleShot(3, tekstikentta_1.Destroy);
111        }
112
113        if (kohde == valot)
114        {
115            foreach (GameObject olio in kentta1tavarat)
116            {
117                olio.Destroy();
118            }
119            LuoHuone1();
120            pelaaja.Destroy();
121        }
122
123        if (kohde == kynnys)
124        {
125            foreach (GameObject olio in huone1tavarat)
126            {
127                olio.Destroy();
128            }
129            pelaaja.Destroy();
130            LuoPelaaja(-300, 80);
131            LuoKentta();
132            LuoNPChahmo(); 
133        }
134
135        if (kohde.Tag != null && kohde.Tag is string)
136        {
137            string kohdeJono = (string)kohde.Tag;
138
139            if (kohdeJono.Length > 5 &&  kohdeJono.Substring(0, 5) == "kulta")
140            {
141                int arvo = int.Parse(kohdeJono.Substring(5));
142                rahaLaskuri.Value += arvo;
143                kohde.Destroy();
144            }
145        }
146
147        if (kohde.Tag.ToString() == "kauppa")
148        {
149            foreach (GameObject olio in huone1tavarat)
150            {
151                olio.Destroy();
152            }
153            pelaaja.Destroy();
154            LuoKauppa();
155            LuoHUDI();
156
157            GameObject miekka =  LuoMiekka(-110, 100);
158            kauppaoliot.Add(miekka);
159            MiekkaTeksti(100);
160
161            Mouse.ListenOn(miekka, MouseButton.Left, ButtonState.Pressed, OstaMiekka, null);
162
163            LuoKauppaLaatikot(-110, 100);
164            LuoKauppaLaatikot(-10, 100);
165            LuoKauppaLaatikot(90, 100);
166            LuoKauppaLaatikot(190, 100);
167        }
168    }
169
170
171    void LuoTalo()
172    {
173        PhysicsObject talo = PhysicsObject.CreateStaticObject(200.0, 200.0);
174        talo.Image = talonkuva;
175        talo.Tag = "talo";
176        talo.X = -300;
177        talo.Y = -100;
178        kentta1tavarat.Add(talo);
179        Add(talo);
180
181        valot = PhysicsObject.CreateStaticObject(40.0, 40.0);
182        valot.Image = ovivalot;
183        valot.X = talo.Top - 300;
184        valot.Y = talo.Top + 20;
185        kentta1tavarat.Add(valot);
186        Add(valot);
187    }
188
189    void LuoHuone1()
190    {
191
192        LuoHUDI();
193        LuoPelaaja(0, 50);
194        Add(pelaaja);
195
196        LuoHuone1PoikiSeinat(-85, 140);
197        LuoHuone1PoikiSeinat(85, 140);
198
199        LuoHuone1PystySeinat(-140, -10);
200        LuoHuone1PystySeinat(140, -10);
201
202        LuoHuone1PoikiSeinat2(0, -140);
203
204        LuoKynnys();
205
206        LuoNPChahmo2();
207
208        GameObject lattia = new GameObject(300, 300);
209        lattia.X = 0;
210        lattia.Y = 0;
211        huone1tavarat.Add(lattia);
212        lattia.Image = huone_1;
213        Add(lattia, -1);
214
215        Level.BackgroundColor = Color.Black;
216    }
217
218
219    void LuoHuone1PoikiSeinat(double x, double y)
220    {
221        PhysicsObject poikiseinat = PhysicsObject.CreateStaticObject(130.0, 20);
222        poikiseinat.Color = Color.Brown;
223        poikiseinat.X = x;
224        poikiseinat.Y = y;
225        huone1tavarat.Add(poikiseinat);
226        Add(poikiseinat);
227    }
228
229    void LuoHuone1PystySeinat(double x, double y)
230    {
231        PhysicsObject pystyseinat = PhysicsObject.CreateStaticObject(20, 280);
232        pystyseinat.Color = Color.Brown;
233        pystyseinat.X = x;
234        pystyseinat.Y = y;
235        huone1tavarat.Add(pystyseinat);
236        Add(pystyseinat);
237    }
238
239    void LuoHuone1PoikiSeinat2(double x, double y)
240    {
241        PhysicsObject poikiseinat2 = PhysicsObject.CreateStaticObject(260, 20);
242        poikiseinat2.Color = Color.Brown;
243        poikiseinat2.X = x;
244        poikiseinat2.Y = y;
245        huone1tavarat.Add(poikiseinat2);
246        Add(poikiseinat2);
247    }
248
249    void LuoNPChahmo2()
250    {
251        PhysicsObject npc_2 = PhysicsObject.CreateStaticObject(30.0, 30.0);
252        npc_2.Shape = Shape.Circle;
253        npc_2.Color = Color.Blue;
254        npc_2.Tag = "kauppa";
255        npc_2.X = 0;
256        npc_2.Y = -65;
257        huone1tavarat.Add(npc_2);
258        Add(npc_2);
259    }
260
261    void LuoKynnys()
262    {
263        kynnys = PhysicsObject.CreateStaticObject(40.0, 20.0);
264        kynnys.X = 0;
265        kynnys.Y = 140;
266        huone1tavarat.Add(kynnys);
267        Add(kynnys, -1);
268    }
269
270    IntMeter rahaLaskuri;
271
272    void LuoRahaLaskuri()
273    {
274        rahaLaskuri = new IntMeter(500);
275
276        Label rahaNaytto = new Label(100, 100);
277        rahaNaytto.X = Level.Bottom;
278        rahaNaytto.Y = Level.Bottom + 100;
279        rahaNaytto.TextColor = Color.White;
280
281        rahaNaytto.BindTo(rahaLaskuri);
282        Add(rahaNaytto);
283
284        Label rahaTeksti = new Label("Coins:");
285        rahaTeksti.X = Level.Bottom - 50;
286        rahaTeksti.Y = Level.Bottom + 100;
287        rahaTeksti.TextColor = Color.White;
288        Add(rahaTeksti);
289    }
290
291    void LuoHUDI()
292    {
293        HUDI = new GameObject(1024, 130);
294        HUDI.Color = Color.Gray;
295        HUDI.X = Level.Left + 500;
296        HUDI.Y = Level.Bottom + 80;
297        Add(HUDI, -1);
298        LuoInventory(HUDI.Right - 600, HUDI.Bottom + 65);
299        LuoInventory(HUDI.Right - 500, HUDI.Bottom + 65);
300        LuoInventory(HUDI.Right - 400, HUDI.Bottom + 65);
301        LuoInventory(HUDI.Right - 300, HUDI.Bottom + 65);
302        LuoInventory(HUDI.Right - 200, HUDI.Bottom + 65);
303        LuoInventory(HUDI.Right - 100, HUDI.Bottom + 65);
304    }
305
306    void LuoRaha(double x, double y, int arvo, Image rahakuva)
307    {
308        raha = new PhysicsObject(30.0, 30.0);
309        raha.X = x;
310        raha.Y = y;
311        raha.Tag = "kulta" + arvo;
312        raha.Image = rahakuva;
313        kentta1tavarat.Add(raha);
314        Add(raha);
315    }
316
317    void LuoKauppa()
318    {
319        GameObject kauppanaytto = new GameObject(500, 300);
320        kauppanaytto.Color = Color.Gray;
321        kauppanaytto.X = 0;
322        kauppanaytto.Y = 0;
323        kauppaoliot.Add(kauppanaytto);
324        Add(kauppanaytto, 1);
325
326        poistumisnappi = new PushButton(50.0, 50.0, "Exit");
327        poistumisnappi.X = 200;
328        poistumisnappi.Y = -100;
329        Add(poistumisnappi);
330
331        poistumisnappi.Clicked += PoistuKaupasta;
332    }
333
334    void LuoKauppaLaatikot(double x, double y)
335    {
336        GameObject kauppalaatikko = new GameObject(80.0, 80.0);
337        kauppalaatikko.Color = Color.DarkGray;
338        kauppalaatikko.X = x;
339        kauppalaatikko.Y = y;
340        kauppaoliot.Add(kauppalaatikko);
341        Add(kauppalaatikko, 2);
342    }
343
344    GameObject LuoMiekka(double x, double y)
345    {
346        GameObject miekka = new GameObject(80.0, 80.0);
347        miekka.Image = miekkakauppa;
348        int hinta = 100;
349        miekka.X = x;
350        miekka.Y = y;
351        Add(miekka, 3);
352        return miekka;
353    }
354
355    void MiekkaTeksti(int hinta)
356    {
357        Label miekkaTeksti = new Label("Sword");
358        miekkaTeksti.X = -110;
359        miekkaTeksti.Y = 45;
360        miekkaTeksti.Tag = "kauppateksti";
361        kauppatekstit.Add(miekkaTeksti);
362        Add(miekkaTeksti);
363
364        Label miekkaTekstiHinta = new Label("Costs: " + hinta);
365        miekkaTekstiHinta.X = -110;
366        miekkaTekstiHinta.Y = 25;
367        kauppatekstit.Add(miekkaTekstiHinta);
368        Add(miekkaTekstiHinta);
369
370        Label kysymisTeksti = new Label("Welcome to our shop! What would you like to buy?");
371        kysymisTeksti.X = 0;
372        kysymisTeksti.Y = 0;
373        kauppatekstit.Add(kysymisTeksti);
374        Add(kysymisTeksti);
375    }
376
377    void OstaMiekka()
378    {
379        if (rahaLaskuri.Value >= 100)
380        {
381            rahaLaskuri.Value -= 100;
382            MessageDisplay.Add("You bought a sword");
383            MessageDisplay.TextColor = Color.LimeGreen;
384            MessageDisplay.MessageTime = new TimeSpan(0, 0, 1);
385
386            GameObject miekka = LuoMiekka(HUDI.Right - 600 + inventory.Count * 100, HUDI.Bottom + 65);
387            inventory.Add(miekka);
388        }
389
390        else
391        {
392            MessageDisplay.Add("You don't have enough coins");
393            MessageDisplay.TextColor = Color.Red;
394            MessageDisplay.MessageTime = new TimeSpan(0, 0, 1);
395        }
396    }
397
398    void LuoInventory(double x, double y)
399    {
400        GameObject inventorylootat = new GameObject(80.0, 80.0);
401        inventorylootat.Color = Color.DarkGray;
402        inventorylootat.X = x;
403        inventorylootat.Tag = null;
404        inventorylootat.Y = y;
405        Add(inventorylootat, 1);
406    }
407
408    void PoistuKaupasta()
409    {   
410        foreach (Label olio in kauppatekstit)
411        {
412            olio.Destroy();
413        }
414        LuoHuone1();
415        poistumisnappi.Destroy();
416
417        foreach (GameObject olio in kauppaoliot)
418        {
419            olio.Destroy();
420        }
421    }
422}
423
Note: See TracBrowser for help on using the repository browser.