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

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