source: 2010/30/veseruod/Peli.cs @ 1455

Revision 1455, 4.9 KB checked in by paaaanro, 10 years ago (diff)
Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5
6public class Peli : TopDownPhysicsGame
7
8{
9    PhysicsObject avain;
10    Image avainkuva = LoadImage("avain");
11    PhysicsObject jatka;
12    double nopeus = 300;
13    PhysicsObject ovi;
14    PhysicsObject reika;
15    Image jatkankuva = LoadImage("jatka");
16    Image taustaKuva = LoadImage("huone");
17    Image rotankuva = LoadImage("rotta");
18    Image ovikuva = LoadImage("ovi");
19    Image reikakuva = LoadImage("reikä");
20
21    protected override void Begin()
22    {
23        LuoKentta();
24        LuoAvain();
25        MessageDisplay.Add("Etsi avain päästäksesi ulos... Ja varo sekä rottia että reikiä. Varsinkin reikiä!");
26        AddCollisionHandler(avain, AvaimenKeraus);
27        LuoPelaaja();
28        AsetaOhjaimet();
29        LuoRotta();
30        LuoRotta();
31        LuoRotta();
32        LuoRotta();
33        LuoOvi();
34        LuoReika();
35        LuoReika();
36        LuoReika();
37        AddCollisionHandler(ovi, Ovenavaus);
38        AddCollisionHandler(reika, reikaanTippuminen);
39        Kuolit();
40        AloitaAlusta();
41    }
42
43    void LuoKentta()
44    {
45       
46        Level.Background.Image = taustaKuva;
47        Level.Background.FitToLevel();
48        Level.CreateBorders(1.0, false);
49        Camera.ZoomToLevel();
50    }
51
52    void LuoPelaaja()
53    {       
54        jatka = new PhysicsObject(45.0, 45.0);
55        jatka.Shape = Shapes.Circle;
56        jatka.LinearDamping = 0.97;
57        jatka.KineticFriction = 0.5;
58        jatka.Image = jatkankuva;
59        Add(jatka);
60     
61    }
62
63    void AsetaOhjaimet()
64    {
65        Keyboard.Listen(Key.Left, ButtonState.Down, AsetaNopeus, "Pelaaja Liikkuu Vasemmalle", new Vector(-nopeus, 0));
66        Keyboard.Listen(Key.Right, ButtonState.Down, AsetaNopeus, "Pelaaja Liikkuu Oikealle", new Vector(nopeus, 0));
67        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja Liikkuu Alas", new Vector(0, -nopeus));
68        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja Liikkuu Ylos", new Vector(0, nopeus));
69    }
70
71    void AsetaNopeus(Vector nopeus)
72    {
73        jatka.Push(nopeus);
74    }
75    void LuoRotta()
76    {
77        PhysicsObject rotta = new PhysicsObject(200, 40);
78        rotta.Shape = Shapes.Rectangle;
79        FollowerBrain seuraajanAivot = new FollowerBrain(jatka);
80        seuraajanAivot.Target = jatka;
81        seuraajanAivot.FollowAlways = true;
82        seuraajanAivot.Active = true;
83        rotta.Brain = seuraajanAivot;
84        seuraajanAivot.MovingSpeed = 50;
85        Add(rotta);
86        AddCollisionHandler(rotta, KasittelerotanTormays);
87        rotta.X = RandomGen.NextDouble(Level.Left, Level.Right);
88        rotta.Y = RandomGen.NextDouble(Level.Top, Level.Bottom);
89        rotta.Image = rotankuva;
90    }
91
92    void KasittelerotanTormays(PhysicsObject rotta, PhysicsObject kohde)
93    {
94        if (kohde == jatka)
95        {
96            MessageDisplay.Add("Olet rotan ruokaa.");
97            jatka.Destroy();
98        }
99    }
100
101    void LuoAvain()
102    {
103        avain = new PhysicsObject(100, 20);
104        avain.Shape = Shapes.Rectangle;
105        avain.Mass = 3.0;
106        avain.X = RandomGen.NextDouble(Level.Left, Level.Right);
107        avain.Y = RandomGen.NextDouble(Level.Left, Level.Right);
108        Add(avain);
109        avain.Image = avainkuva;
110    }
111    void AvaimenKeraus(PhysicsObject avain, PhysicsObject kohde)
112    {
113        if (kohde == jatka)
114        {
115            avain.Destroy();
116            MessageDisplay.Add("Löysit avaimen! Hienoa! Nyt juokse Ulos ovesta ennen kuin rotat syövät sinut.");
117        }
118    }
119    void LuoOvi()
120     {
121        ovi = PhysicsObject.CreateStaticObject(100, 200);
122        ovi.Shape = Shapes.Rectangle;
123        Add(ovi);
124        ovi.Image = ovikuva;
125        ovi.X = (200);
126        ovi.Y = (299);
127     }
128    void Ovenavaus(PhysicsObject ovi, PhysicsObject kohde)
129    {
130        if (avain.IsDestroyed() && kohde == jatka)
131        {
132        kohde.Destroy();
133        MessageDisplay.Add("Voitit pelin! 0nneksi olkoon!");
134        }
135    }
136
137    void LuoReika()
138    {
139        reika = PhysicsObject.CreateStaticObject(100, 100);
140        reika.Shape = Shapes.Rectangle;
141        Add(reika);
142        reika.X = RandomGen.NextDouble(Level.Left, Level.Right);
143        reika.Y = RandomGen.NextDouble(Level.Top, Level.Bottom);
144        reika.Image = reikakuva;
145    }
146    void reikaanTippuminen(PhysicsObject reika, PhysicsObject kohde)
147    {
148        kohde.Destroy();
149
150        if (kohde == jatka)
151        {
152            MessageDisplay.Add("kuolit");
153        }
154        else
155        {
156            MessageDisplay.Add("rotta kuoli");
157        }
158    }
159    void Kuolit()
160    {
161        if (jatka.IsDestroyed())
162        {
163            AloitaAlusta();
164        }
165    }
166    void AloitaAlusta()
167    {
168        LuoKentta();
169        LuoAvain();
170        AsetaOhjaimet();
171       
172
173    }
174
175
176   
177}
178 
Note: See TracBrowser for help on using the repository browser.