source: 2014/26/RossC/Maailman_Vaikein_Peli/Maailman_Vaikein_Peli/Maailman_Vaikein_Peli/Maailman_Vaikein_Peli.cs @ 5132

Revision 5132, 6.7 KB checked in by rojacoll, 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;
8using System.Collections.Generic;
9
10public class Maailman_Vaikein_Peli : PhysicsGame
11{
12    PhysicsObject pelaaja;
13    // PhysicsObject pahis;
14    PhysicsObject loppu;
15
16    int kenttaNro;
17    int maxKenttaNro = 4;
18    IntMeter pistelaskuri = new IntMeter(0);
19
20    public override void Begin()
21    {
22
23        kenttaNro = 1;
24        LuoAlkuValikko();
25
26
27    }
28
29    void LuoAlkuValikko()
30    {
31        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
32            "Aloita peli", "Lopeta");
33        Add(alkuValikko);
34
35        alkuValikko.AddItemHandler(0, AloitaPeli);
36        alkuValikko.AddItemHandler(1, Exit);
37    }
38
39    void AloitaPeli()
40    {
41        LuoKentta();
42        LisaaOhjaimet();
43        LuoPisteLaskuri();
44
45    }
46
47    void LuoKentta()
48    {
49        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kentta" + kenttaNro);
50        ruudut.SetTileMethod(Color.Red, LuoPelaaja);
51        ruudut.SetTileMethod(Color.Black, LuoSeina);
52       
53        ruudut.SetTileMethod(new Color(0, 255, 0), LuoLoppu);
54        ruudut.Execute(20, 20);
55
56        ColorTileMap ruudut2 = ColorTileMap.FromLevelAsset("kentta" + kenttaNro);
57        ruudut2.SetTileMethod(Color.Blue, LuoViholliset);
58        ruudut2.SetTileMethod(new Color(132, 132, 200), LuoViholliet2);
59        ruudut2.Execute(20, 20);
60
61        Level.Background.Color = Color.Wheat;
62
63
64    }
65
66
67    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
68    {
69        pelaaja = new PhysicsObject(15, 15);
70        pelaaja.Position = paikka;
71        pelaaja.Color = Color.Red;
72        pelaaja.Shape = Shape.Circle;
73        pelaaja.Tag = "pelaaja";
74        Add(pelaaja);
75        AddCollisionHandler(pelaaja, "pahis", AloitaKentta);
76        AddCollisionHandler(pelaaja, "maali", AloitaKentta);
77        AddCollisionHandler(pelaaja, "pahis", KasittelePelaajanTormays);
78        AddCollisionHandler(pelaaja, "pahis2", KasittelePelaajanTormays); 
79
80
81    }
82
83    void LuoSeina(Vector paikka, double leveys, double korkeus)
84    {
85        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
86        taso.Position = paikka;
87        taso.Color = Color.Purple;
88        taso.Tag = "seina";
89        Add(taso);
90    }
91
92
93
94
95
96    void LisaaOhjaimet()
97    {
98        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
99        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
100
101        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, "liikuttaa pelaajaa ylos", pelaaja, new Vector(0.0, 100.0));
102        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, "liikuta pelaajaa alas", pelaaja, new Vector(0.0, -100.0));
103        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, "liikuta pelaajaa vasemmalle", pelaaja, new Vector(-100, 0));
104        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, "Liikuta pelaajaa oikealle", pelaaja, new Vector(100, 0));
105        Keyboard.Listen(Key.Up, ButtonState.Released, LiikutaPelaajaa, "Pysayta pelaajaa", pelaaja, new Vector(0, 0));
106        Keyboard.Listen(Key.Down, ButtonState.Released, LiikutaPelaajaa, "Pysaytapelaaja", pelaaja, new Vector(0, 0));
107        Keyboard.Listen(Key.Left, ButtonState.Released, LiikutaPelaajaa, "Pysaytapelaaja", pelaaja, new Vector(0, 0));
108        Keyboard.Listen(Key.Right, ButtonState.Released, LiikutaPelaajaa, "Pysaytapelaaja", pelaaja, new Vector(0, 0));
109    }
110
111    void LuoViholliset(Vector paikka, double leveys, double korkeus)
112    {
113        PhysicsObject pahis = new PhysicsObject(15.0, 15.0);
114        pahis.Color = new Color(0, 0, 255);
115        pahis.Position = paikka;
116        pahis.Shape = Shape.Circle;
117        pahis.Tag = "pahis";
118        pahis.CollisionIgnoreGroup = 1;
119        Add(pahis);
120
121       
122
123
124        LabyrinthWandererBrain labyrinttiAivot = new LabyrinthWandererBrain(20);
125        labyrinttiAivot.Speed = 100.0;
126        labyrinttiAivot.LabyrinthWallTag = "seina";
127        labyrinttiAivot.TurnWhileMoving = true;
128
129        pahis.Brain = labyrinttiAivot;
130
131        pahis.Brain.Active = true;
132    }
133
134    void LuoViholliet2(Vector paikka, double leveys, double korkeus)
135    {
136        PhysicsObject pahis2 = new PhysicsObject(15.0, 15.0);
137        pahis2.Color = new Color(132, 132, 200);
138        pahis2.Position = paikka;
139        pahis2.Shape = Shape.Circle;
140        pahis2.Tag = "pahis2";
141        pahis2.CollisionIgnoreGroup = 1;
142        Add(pahis2);
143
144        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
145       
146
147        seuraajanAivot.Speed = 100;                 // Millä nopeudella kohdetta seurataan
148        seuraajanAivot.DistanceFar = 600;           // Etäisyys jolla aletaan seurata kohdetta
149        seuraajanAivot.DistanceClose = 0;         // Etäisyys jolloin ollaan lähellä kohdetta
150        seuraajanAivot.StopWhenTargetClose = false;  // Pysähdytään kun ollaan lähellä kohdetta
151
152       
153       
154       
155    }
156
157
158    void LuoLoppu(Vector paikka, double leveys, double korkeus)
159    {
160        loppu = PhysicsObject.CreateStaticObject(leveys * 2, korkeus * 2);
161        loppu.Color = Color.Green;
162        loppu.Position = paikka;
163        loppu.Tag = "maali";
164        Add(loppu);
165    }
166
167    void LiikutaPelaajaa(PhysicsObject pelaaja, Vector nopeus)
168    {
169        if (pelaaja.Top > Level.Top)
170        {
171
172            pelaaja.Velocity = Vector.Zero;
173            return;
174
175        }
176
177         pelaaja.Velocity = nopeus;
178
179        {
180
181        }
182    }
183
184    void AloitaKentta(PhysicsObject pelaaja, PhysicsObject kohde)
185    {
186        if (kohde.Tag == "maali")
187        {
188            kenttaNro++;
189            if (kenttaNro > maxKenttaNro) PeliLoppui();
190            else
191                ClearAll();
192
193            {
194                ClearAll();
195                AloitaPeli();
196            }
197        }
198
199        else if (kohde.Tag == "pahis")
200        {
201            pelaaja.Destroy();
202            ClearAll();
203            AloitaPeli();
204        }
205    }
206
207    void PeliLoppui()
208    {
209        ClearAll();
210        Begin();
211
212    }
213
214    void LuoPisteLaskuri()
215    {
216        //pistelaskuri = new IntMeter(0);
217
218        Label pisteNaytto = new Label();
219        pisteNaytto.X = Screen.Left + 400;
220        pisteNaytto.Y = Screen.Top - 100;
221        pisteNaytto.TextColor = Color.Black;
222        pisteNaytto.Color = Color.Wheat;
223
224
225
226        pisteNaytto.Title = "Kuolemat";
227        pisteNaytto.BindTo(pistelaskuri);
228        Add(pisteNaytto);
229
230    }
231    void KasittelePelaajanTormays(PhysicsObject pelaaja, PhysicsObject pahis)
232    {
233
234        pistelaskuri.Value += 1;
235
236    }
237
238
239}   
240
241
Note: See TracBrowser for help on using the repository browser.