source: 2010/23/tajomyll/EHGABWWTGSBIAE/Peli.cs @ 735

Revision 735, 12.5 KB checked in by tajomyll, 10 years ago (diff)

LIsättiin valikko.

Line 
1using System;
2using Jypeli;
3using Jypeli.ScreenObjects;
4using Jypeli.Assets;
5using System.Collections.Generic;
6
7
8namespace EHGABWWTGSBIAE // Extremely Hard Game About Boy Who Wants To Go Shopping, But It Ain't Easy
9{
10    class Tasohyppely : PhysicsGame
11    {
12        const int ruudunLeveys = 20;
13        const int ruudunKorkeus = 32;
14
15        const double nopeus = 200;
16        const double hyppyVoima = 3500;
17
18        IntMeter pisteLaskuri;
19        ValueDisplay pisteNaytto;
20
21        PlatformCharacter pelaaja1;
22        PhysicsObject tynnyri;
23
24        int kenttaNro; // monesko kenttä on menossa
25
26        protected override void Begin()
27        {
28            kenttaNro = 0;
29            Level.Width = ruudunLeveys * 62;
30            Level.Height = ruudunKorkeus * 32;
31
32            // Luodaan pistelaskuri
33            pisteLaskuri = new IntMeter(0);
34
35            // luodaan pistelaskunäyttö
36            pisteNaytto = new ValueDisplay();
37            pisteNaytto.Text = "Pisteitä: ";
38            pisteNaytto.X = Screen.RightSafe - 250;
39            pisteNaytto.Y = Screen.TopSafe - 50;
40            pisteNaytto.BindTo(pisteLaskuri);
41            Add(pisteNaytto);    // lisätään peliin
42
43            Camera.StayInLevel = true;
44
45            seuraavaKentta();
46            MessageDisplay.Add("Etsi iso tähti!");
47        }
48
49        void seuraavaKentta()
50        {
51            ClearAll();
52          //  pisteLaskuri.Reset();
53
54          //  kenttaNro += 1;  lisätään kenttänumeroa yhdellä
55          //  MessageDisplay.Add("Kenttä " + kenttaNro);
56
57           /* if (kenttaNro == 0)
58            {
59                LuoKoti();
60                //Level.Background.Image = LoadImage("Koti");
61            }
62            else if (kenttaNro == 1)
63            {
64                LuoKallio();
65            }
66            */
67            // Asetetaan painovoima
68            Gravity = new Vector(0, -1000);
69
70            luoKentta();
71            lisaaNappaimet();
72        }
73
74        void luoKentta()
75        {
76            if (kenttaNro == 0)
77            {
78                LuoValikko();
79            }
80            else if (kenttaNro == 1)
81            {
82              //  Level.Background.Image = LoadImage("Koti");
83                LuoKoti();
84            }
85            else if (kenttaNro == 2)
86            {
87                LuoKallio();
88            }
89            else if (kenttaNro == 3)
90            {
91                LuoKauppa();
92            }
93            else if (kenttaNro == 4)
94            {
95                LuoLoppu();
96            }
97           
98        }
99
100        PhysicsObject lisaaTaso()
101        {
102            //MessageDisplay.Add("Tultiin lisaaTaso()-aliohjelmaan");
103            PhysicsObject taso = PhysicsObject.CreateStaticObject(ruudunLeveys, ruudunKorkeus);
104            taso.Color = Color.Green;
105            taso.IsVisible = false;
106            //taso.X = x;
107            //taso.Y = y;
108            //Add(taso);
109            return taso;
110        }
111        PhysicsObject lisaaPiikit() 
112        {
113            PhysicsObject piikit = PhysicsObject.CreateStaticObject(ruudunLeveys, ruudunKorkeus);
114            piikit.Color = Color.Blue;
115            piikit.IsVisible = false;
116            //piikit.X = x;
117            //piikit.Y = y;
118            AddCollisionHandler(piikit, KasittelePiikkienTormays);
119            //Add(piikit);
120            return piikit;
121        }
122
123        PhysicsObject lisaaReuna()
124        {
125            PhysicsObject reuna = PhysicsObject.CreateStaticObject(40, 32);
126            reuna.Shape = Shapes.Rectangle;
127            reuna.IsVisible = false;
128            AddCollisionHandler(reuna, KasitteleReunanTormays);
129            return reuna;
130        }
131        void KasitteleReunanTormays(PhysicsObject reuna, PhysicsObject kukaTormaa)
132        {
133            if (kukaTormaa.Tag.ToString() == "pelaaja") 
134            {
135                kenttaNro = kenttaNro + 1;
136                seuraavaKentta();
137            }
138           
139        }
140
141        PhysicsObject lisaaPelaaja()
142        {
143            pelaaja1 = new PlatformCharacter(28, 48);
144            pelaaja1.Mass = 4.0;
145            Image[] tekstuurit = LoadImages("Pelihahmo1", "Pelihahmo2", "Pelihahmo3","Pelihahmo4");
146
147            Animation kavely = new Animation(tekstuurit);
148            kavely.FPS = 7.0;
149
150            pelaaja1.Tag = "pelaaja";
151            pelaaja1.LeftWalkingAnimation = kavely;
152            pelaaja1.RightWalkingAnimation = Animation.Mirror(kavely);
153            pelaaja1.LeftIdleAnimation = new Animation(LoadImage ("Pelihahmo1" ));
154            pelaaja1.RightIdleAnimation = new Animation(Image.Mirror(LoadImage("Pelihahmo1")));
155            return pelaaja1;
156        }
157
158        void lisaaNappaimet()
159        {
160            Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
161            Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
162
163            Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
164            Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
165            Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
166
167            lisaaGamePadNappaimet(ControllerOne);
168        }
169
170        void lisaaGamePadNappaimet(GamePad controller)
171        {
172            controller.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
173
174            controller.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
175            controller.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
176            controller.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
177        }
178
179        void liikuta(PlatformCharacter hahmo, double nopeus)
180        {
181            hahmo.Walk(nopeus);
182        }
183
184        void hyppaa(PlatformCharacter hahmo, double voima)
185        {
186            hahmo.Jump(voima);
187        }
188
189 /*       void osuiMaaliin(PhysicsObject collidingObject, PhysicsObject otherObject)
190        {
191            if (otherObject.Tag.ToString() == "maali")
192            {
193                this.PlaySound("maali");
194                int edellisenKentanPisteet = pisteLaskuri.Value;
195                seuraavaKentta();
196                MessageDisplay.Add("Pääsit läpi kentän " + kenttaNro + ". Pisteitä: " + edellisenKentanPisteet);
197            }
198        }*/
199        PhysicsObject lisaaMaali()
200        {
201            PhysicsObject maali = PhysicsObject.CreateStaticObject(ruudunLeveys, ruudunKorkeus);
202            maali.Color = Color.Gray;
203            maali.IsVisible = false;
204            AddCollisionHandler(maali, KasitteleMaaliinTulo);
205            return maali;
206        }
207        void lisaaTynnyri(Timer sender)
208        {
209            tynnyri = new PhysicsObject(100, 100);
210            tynnyri.Shape = Shapes.Circle;
211            tynnyri.Mass = 4.0;
212
213            if (pelaaja1.X > 405.0)
214            {
215                tynnyri.X = 500.0;
216                tynnyri.Y = 500.0;
217
218                tynnyri.Image = LoadImage("tynnyri");
219                AddCollisionHandler(tynnyri, KasitteleTynnyrinTormays);
220                //  Image[] tekstuurit = LoadImages("tynnyri", "tynnyri2", "tynnyri3", "tynnyri4");
221
222                //    Animation pyoriminen = new Animation(tekstuurit);
223                //  pyoriminen.FPS = 7.0;
224                /*
225                            tynnyri.Tag = "tynnyri";
226                            tynnyri.LeftWalkingAnimation = pyoriminen;
227                            tynnyri.RightWalkingAnimation = Animation.Mirror(pyoriminen);
228                            tynnyri.LeftIdleAnimation = new Animation(LoadImage("tynnyri"));
229                            tynnyri.RightIdleAnimation = new Animation(Image.Mirror(LoadImage("tynnyri")));*/
230
231                Add(tynnyri);
232
233                sender.Stop();
234            }
235        }
236        void KasitteleMaaliinTulo(PhysicsObject maali, PhysicsObject pelaaja1)
237        {
238            kenttaNro = kenttaNro + 1;
239            seuraavaKentta();
240        }
241        void KasittelePiikkienTormays(PhysicsObject piikit, PhysicsObject kukaTormaa)
242        {
243            if (kukaTormaa == pelaaja1)
244            {
245                kenttaNro = 0;
246                seuraavaKentta();
247                pelaaja1.X = -500;
248                pelaaja1.Y = Level.Bottom + 1000;
249            }
250        }
251        void KasitteleTynnyrinTormays(PhysicsObject tynnyri, PhysicsObject kukaTormaa)
252        {
253            if (kukaTormaa == pelaaja1)
254            {
255                kenttaNro = 0;
256                seuraavaKentta();
257                pelaaja1.X = -500;
258                pelaaja1.Y = Level.Bottom + 1000;
259            }
260        }
261        /*void KasittelePelaajanTormays(PhysicsObject pelaaja1, PhysicsObject kohde)
262        {
263            if (kohde == oikeareuna)
264            {
265                kenttaNro = kenttaNro + 1;
266            }
267        }*/
268
269        void LuoValikko()
270        {
271            Level.Background.Image = LoadImage("Päävalikko");
272            Level.Background.Size = new Vector(1240, 1024);
273
274            Keyboard.Listen(Key.N, ButtonState.Pressed, LuoKoti, "Poistu valikosta pelaamaan");
275    //        Keyboard.Listen(Key.N, ButtonState.Pressed, PoisValikosta(), "Aloitetaan peli");
276        }
277
278        void LuoKoti()
279        {
280            //Level.Background = new Background(new Vector(1240, 1024)).Image = LoadImage("Koti");
281            //Background tausta = new Background(new Vector(1240, 1024));
282            //tausta.Image = LoadImage("Koti");
283            //Add(tausta);
284            Level.CreateBorders();
285           
286            Level.Background.Image = LoadImage("Koti");
287            Level.Background.Size = new Vector(1240, 1024);
288
289            //lisaaTaso(-500.0, -500.0, 300.0, 1350.0);
290            //lisaaTaso(-100.0, -100.0, 170.0, 100.0);
291            //lisaaTaso(210.0, 30.0, 105.0, 25.0);
292            //lisaaTaso(475.0, -200.0, 125.0, 700.0);
293            //lisaaTaso(-300.0, -500.0, 325.0, 600.0);
294            //lisaaTaso(550.0, -125.0, 125.0, 800.0);
295            //lisaaPiikit(200.0, -500.0, 700.0, 100.0);
296            //lisaaPiikit(-275.0, -200.0, 250.0, 100.0);
297            //lisaaPiikit(-200.0, 505.0, 275.0, 275.0);
298          //  AddCollisionHandler(pelaaja1, KasittelePelaajanTormays);
299            // lisaaTaso(0, -200);
300            var merkit = new Dictionary<char, ObjectCreator>();
301            merkit['x'] = lisaaTaso;
302            merkit['i'] = lisaaPiikit;
303            merkit['p'] = lisaaPelaaja;
304            merkit['|'] = lisaaReuna;
305            char[,] ruudut = Tiles.ReadFromFile("kentta1.txt");
306            Tiles.Insert(this, ruudut, merkit, ruudunLeveys, ruudunKorkeus);
307
308
309            //  lisaaMaali();
310
311        }
312        void LuoKallio()
313        {
314
315            Timer ajastin = new Timer();
316            ajastin.Interval = 1;
317            ajastin.Trigger += lisaaTynnyri;
318            Add(ajastin);
319
320            ajastin.Start();
321
322            Level.Background.Image = LoadImage("Kallio");
323            Level.Background.Size = new Vector(1240, 1024);
324            Level.CreateBorders();
325
326            //if (pelaaja1.X > 500)
327            //{
328            //    lisaaTynnyri();
329            //}
330
331           // if (Timer.
332
333            var merkit = new Dictionary<char, ObjectCreator>();
334            merkit ['x'] = lisaaTaso;
335            merkit ['i'] = lisaaPiikit;
336            merkit ['p'] = lisaaPelaaja;
337            merkit ['|'] = lisaaReuna;
338            char[,] ruudut = Tiles.ReadFromFile("kallio.txt");
339            Tiles.Insert(this, ruudut, merkit, ruudunLeveys, ruudunKorkeus);
340        }
341        void LuoKauppa()
342        {
343            Level.Background.Image = LoadImage("Kauppa");
344            Level.Background.Size = new Vector(1240, 1024);
345            Level.CreateBorders();
346
347            var merkit = new Dictionary<char, ObjectCreator>();
348            merkit['x'] = lisaaTaso;
349            merkit['i'] = lisaaPiikit;
350            merkit['p'] = lisaaPelaaja;
351            merkit['|'] = lisaaReuna;
352            merkit['m'] = lisaaMaali;
353            char[,] ruudut = Tiles.ReadFromFile("kauppa.txt");
354            Tiles.Insert(this, ruudut, merkit, ruudunLeveys, ruudunKorkeus);
355        }
356        void LuoLoppu()
357        {
358            Level.Background.Image = LoadImage("LoppuTeksti");
359            Level.Background.Size = new Vector(1240, 1024);
360            Level.CreateBorders();
361        }
362           
363    }
364}
Note: See TracBrowser for help on using the repository browser.