source: 2010/23/ekeimaja/Labyrinth/Labyrinth/Peli.cs @ 709

Revision 709, 10.3 KB checked in by ekeimaja, 12 years ago (diff)

Siistin koodia. Ei suostu ajamaan :(

Line 
1using System;
2using Jypeli;
3using Jypeli.ScreenObjects;
4using Jypeli.Assets;
5using System.Collections.Generic;
6
7
8namespace Labyrinth // © Eki Majankallio 2010
9{
10    public class Peli : PhysicsGame
11    {
12
13        PhysicsObject Pelaaja1;
14        PhysicsObject Pelaaja2;
15        PhysicsObject Maali;
16
17        int pisteitaKentassa = 0;
18
19        const int RuudunLeveys = 50;
20        const int RuudunKorkeus = 50;
21
22        IntMeter kenttaLaskuri;
23        IntMeter pistelaskuri1;
24        IntMeter pistelaskuri2;
25        int pisteitakeratty = 0;
26
27
28        protected override void Begin()
29        {
30            LuoPisteLaskurit();
31            MessageDisplay.TextColor = Color.White;
32
33            var merkit = new Dictionary<char, ObjectCreator>();
34            merkit['x'] = LuoSeina;
35            merkit['D'] = LuoHirvio;
36            merkit['0'] = LuoRuoka;
37            merkit['1'] = LuoPelaaja1;
38            merkit['2'] = LuoPelaaja2;
39            merkit['F'] = LuoMaali;
40
41            char[,] ruudut = Tiles.ReadFromFile("kentta1.txt");
42
43            Tiles.Insert(this, ruudut, merkit, RuudunLeveys, RuudunKorkeus);
44
45            LuoOhjain();
46
47            Camera.ZoomToLevel();
48        }
49
50        void LuoPisteLaskurit()
51        {
52            // Pelaajan 1 pistelaskuri
53            pistelaskuri1 = new IntMeter(0);
54            ValueDisplay pisteNaytto1 = new ValueDisplay();
55            pisteNaytto1.Text = "Pelaaja1 pisteet: ";
56            pisteNaytto1.X = Screen.Left + 100;
57            pisteNaytto1.Y = Screen.Top - 100;
58            pisteNaytto1.ValueColor = Color.Red;
59            pisteNaytto1.TextColor = Color.Red;
60            pisteNaytto1.BindTo(pistelaskuri1);
61            Add(pisteNaytto1);
62
63            // Pelaajan 2 pistelaskuri
64            pistelaskuri2 = new IntMeter(0);
65            ValueDisplay pisteNaytto2 = new ValueDisplay();
66            pisteNaytto2.Text = "Pelaaja2 pisteet: ";
67            pisteNaytto2.X = Screen.Left + 100;
68            pisteNaytto2.Y = Screen.Top - 20;
69            pisteNaytto2.ValueColor = Color.Red;
70            pisteNaytto2.TextColor = Color.Red;
71            pisteNaytto2.BindTo(pistelaskuri2);
72            Add(pisteNaytto2);
73        }
74
75        PhysicsObject LuoPelaaja1()
76        {
77            Pelaaja1 = new PhysicsObject(40.0, 40.0);
78            Pelaaja1.IgnoresPhysicsLogics = true;
79            Pelaaja1.CanRotate = false;
80            Pelaaja1.Tag = "1";
81            Pelaaja1.Image = LoadImage("player1");
82            Add(Pelaaja1);
83            AddCollisionHandler(Pelaaja1, RuokaanTormays);
84            AddCollisionHandler(Pelaaja1, MaaliinTormays);
85            return Pelaaja1;
86
87        }
88
89        PhysicsObject LuoPelaaja2()
90        {
91            Pelaaja2 = new PhysicsObject(40.0, 40.0);
92            Pelaaja2.IgnoresPhysicsLogics = true;
93            Pelaaja2.CanRotate = false;
94            Pelaaja2.Tag = "2";
95            Pelaaja2.Image = LoadImage("player2");
96            Add(Pelaaja2);
97            AddCollisionHandler(Pelaaja2, RuokaanTormays);
98            AddCollisionHandler(Pelaaja2, MaaliinTormays);
99            return Pelaaja2;
100        }
101
102        PhysicsObject LuoHirvio()
103        {
104            PhysicsObject Hirvio = new PhysicsObject(48.0, 48.0);
105            Hirvio.Image = LoadImage("monster");
106            Add(Hirvio);
107            Hirvio.IgnoresCollisionResponse = true;
108            Hirvio.Velocity = new Vector(90.0, 0.0);
109            AddCollisionHandler(Hirvio, SeinaanTormays);
110            AddCollisionHandler(Hirvio, PelaajaanTormays);
111            return Hirvio;
112        }
113
114        PhysicsObject LuoRuoka()
115        {
116            PhysicsObject Ruoka = new PhysicsObject(50.0, 50.0);
117            Ruoka.Image = LoadImage("food");
118            Ruoka.IgnoresPhysicsLogics = false;
119            Ruoka.CanRotate = true;
120            pisteitakeratty += 1;
121            Add(Ruoka);
122            Ruoka.Tag = "r";
123            return Ruoka;
124        }
125
126        PhysicsObject LuoMaali()
127        {
128            Maali = new PhysicsObject (50.0, 50.0);
129            Maali.Image = LoadImage("goal");
130            Maali.IgnoresPhysicsLogics = true;
131            Maali.CanRotate = false;
132            Maali.Restitution = 0.0;
133            Add(Maali);
134            return Maali;
135        }
136
137        PhysicsObject LuoSeina()
138        {
139            PhysicsObject seina = PhysicsObject.CreateStaticObject(50.0, 50.0);
140            seina.Shape = Shapes.Rectangle;
141            seina.Restitution = 0.0;
142            seina.IgnoresPhysicsLogics = true;
143            seina.Color = Color.Black;
144            return seina;
145
146        }
147        void LuoOhjain()
148        {
149            //näppäin alhaalla
150            Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaaVasemmalle, null);
151            Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaaOikealle, null);
152            Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaaYlos, null);
153            Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaaAlas, null);
154            Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaaja2Vasemmalle, null);
155            Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaaja2Oikealle, null);
156            Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaaja2Ylos, null);
157            Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaaja2Alas, null);
158
159            //näppäin ylhäällä
160            Keyboard.Listen(Key.Left, ButtonState.Released, Pelaaja1.StopHorizontal, null);
161            Keyboard.Listen(Key.Right, ButtonState.Released, Pelaaja1.StopHorizontal, null);
162            Keyboard.Listen(Key.Up, ButtonState.Released, Pelaaja1.StopVertical, null);
163            Keyboard.Listen(Key.Down, ButtonState.Released, Pelaaja1.StopVertical, null);
164            Keyboard.Listen(Key.A, ButtonState.Released, Pelaaja2.StopHorizontal, null);
165            Keyboard.Listen(Key.D, ButtonState.Released, Pelaaja2.StopHorizontal, null);
166            Keyboard.Listen(Key.W, ButtonState.Released, Pelaaja2.StopVertical, null);
167            Keyboard.Listen(Key.S, ButtonState.Released, Pelaaja2.StopVertical, null);
168
169        }
170
171        #region Liikuttaminen
172        //pelaaja1
173        void LiikutaPelaajaaVasemmalle()
174        {
175            Pelaaja1.Hit(new Vector(-10, 0));
176        }
177
178        void LiikutaPelaajaaOikealle()
179        {
180            Pelaaja1.Hit(new Vector(20, 0));
181        }
182
183        void LiikutaPelaajaaYlos()
184        {
185            Pelaaja1.Hit(new Vector(0, 10));
186        }
187
188        void LiikutaPelaajaaAlas()
189        {
190            Pelaaja1.Hit(new Vector(0, -10));
191        }
192        //Pelaaja2
193        void LiikutaPelaaja2Vasemmalle()
194        {
195            Pelaaja2.Hit(new Vector(-10, 0));
196        }
197
198        void LiikutaPelaaja2Oikealle()
199        {
200            Pelaaja2.Hit(new Vector(20, 0));
201        }
202
203        void LiikutaPelaaja2Ylos()
204        {
205            Pelaaja2.Hit(new Vector(0, 10));
206        }
207
208        void LiikutaPelaaja2Alas()
209        {
210            Pelaaja2.Hit(new Vector(0, -10));
211        }
212        #endregion
213
214        void SeinaanTormays(PhysicsObject Hirvio, PhysicsObject seina)
215        {
216            Hirvio.Velocity = -Hirvio.Velocity;
217        }
218
219        void PelaajaanTormays(PhysicsObject Hirvio, PhysicsObject kohde)
220        {
221            if (kohde == Pelaaja1)
222            {
223                Pelaaja1.Destroy();
224                TextDisplay viesti = new TextDisplay();
225                Add(viesti);
226                viesti.X = Screen.Left + 600;
227                viesti.Y = Screen.Top - 60;
228                viesti.Text = "Pelaaja1 joutui Hirviön kitaan!";
229            }
230            if (kohde == Pelaaja2)
231            {
232                Pelaaja2.Destroy();
233                TextDisplay viesti = new TextDisplay();
234                Add(viesti);
235                viesti.X = Screen.Left + 600;
236                viesti.Y = Screen.Top - 60;
237                viesti.Text = "Pelaaja2 joutui Hirviön kitaan!";
238
239            }
240        }
241
242        void RuokaanTormays(PhysicsObject tormaaja, PhysicsObject pallo)
243        {
244            if (pallo.Tag.ToString() == "r") // r-tägistä saa pisteitä
245            {
246                pisteitakeratty -= 1;
247                pallo.Destroy();
248                if (tormaaja.Tag.ToString() == "1")
249                {
250                    pistelaskuri1.Value += 10;
251                }
252                else if (tormaaja.Tag.ToString() == "2")
253                {
254                    pistelaskuri2.Value += 10;
255                }
256            }
257
258        }
259        void MaaliinTormays(PhysicsObject voittaja, PhysicsObject tormattava)
260        {
261            if (pisteitakeratty != 1)
262            {
263                if (voittaja.Tag.ToString() == "1" && (tormattava == Maali))
264                {
265                    TextDisplay viesti = new TextDisplay();
266                    Add(viesti);
267                    viesti.X = Screen.Left + 600;
268                    viesti.Y = Screen.Top - 60;
269                    viesti.Text = "Pelaaja1 voitti pelin!";
270                }
271                else if (voittaja.Tag.ToString() == "2" && tormattava.Equals(Maali))
272                {
273                    TextDisplay viesti = new TextDisplay();
274                    Add(viesti);
275                    viesti.X = Screen.Left + 600;
276                    viesti.Y = Screen.Top - 60;
277                    viesti.Text = "Pelaaja2 voitti pelin!";
278                    viesti.MaximumLifetime
279                    ClearAll();
280                    goto 
281                }
282
283                else if (pisteitakeratty < pisteitaKentassa )
284                {
285                    TextDisplay viesti = new TextDisplay();
286                    Add(viesti);
287                    viesti.X = Screen.Left + 600;
288                    viesti.Y = Screen.Top - 60;
289                    viesti.Text = "Et ole kerännyt kaikkia pisteitä!";
290                }
291            }
292        }
293        void SeuraavaKentta(int kentanNro)
294        {
295           
296
297            kenttaLaskuri = new IntMeter(kentanNro);
298
299            if (kenttaLaskuri.Value == 1) LuoKentta1();
300            else if (kenttaLaskuri.Value == 2) LuoKentta2();
301            else if (kenttaLaskuri.Value == 3) LuoKentta3();
302            else if (kenttaLaskuri.Value > 3) Exit();
303            }
304            void LuoKentta1()
305            {
306
307            }
308    }
309}
Note: See TracBrowser for help on using the repository browser.