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

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