source: 2010/24/joaamaka/The hole/Peli.cs @ 967

Revision 967, 10.1 KB checked in by joaamaka, 11 years ago (diff)

Jatkoin omaa peliäni.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.ScreenObjects;
5using Jypeli.Assets;
6
7
8class Tasohyppely : PhysicsGame
9{
10    const double nopeus = 1000;
11    const double hyppyVoima = 500;
12    double korkeus;
13
14    int vaikeustaso = new int();
15
16    GameObject helppo = new GameObject(300, 100);
17    GameObject keski = new GameObject(300, 100);
18    GameObject vaikea = new GameObject(300, 100);
19    GameObject loppu = new GameObject(100, 100);
20    GameObject pisteet = new GameObject(300, 100);
21
22    List<PhysicsObject> lista;
23    PlatformCharacter olio;
24    Vector aloituspaikka;
25    TextDisplay mittari;
26     
27    const int ruudunLeveys = 100;
28    const int ruudunKorkeus = 50;
29   
30    protected override void Begin()
31    {
32        Level.Width = 1500;
33        Level.Height = 1000;
34
35        alkuvalikko();
36
37        // Zoomataan lähemmäksi
38        Camera.ZoomFactor = 1.0;
39
40        Camera.StayInLevel = true;
41
42        Mouse.Enabled = true;
43        Mouse.IsCursorVisible = true;
44
45        //seuraavaKentta();
46        MessageDisplay.Add("Hyppää kuiluun!");
47    }
48
49    void alkuvalikko()
50    {
51        ClearAll();
52        Mouse.Enabled = true;
53        Mouse.IsCursorVisible = true;
54        Camera.Position = new Vector(0,0);
55        Camera.StayInLevel = true;
56        Camera.FollowedObject = null;
57        Camera.ZoomFactor = 1.0;
58
59        helppo = new GameObject(300, 100);
60        keski = new GameObject(300, 100);
61        vaikea = new GameObject(300, 100);
62        loppu = new GameObject(100, 100);
63
64        Mouse.ListenOn(helppo, MouseButton.Left, ButtonState.Pressed, valitse, "", 0);
65        Mouse.ListenOn(keski, MouseButton.Left, ButtonState.Pressed, valitse, "", 1);
66        Mouse.ListenOn(vaikea, MouseButton.Left, ButtonState.Pressed, valitse, "", 2);
67        Mouse.ListenOn(loppu, MouseButton.Left, ButtonState.Pressed, Exit, "");
68        Mouse.ListenOn(pisteet, MouseButton.Left, ButtonState.Pressed, piste, "");
69
70       
71        helppo.Image = LoadImage("vtaso");
72        keski.Image = LoadImage("vtaso2");
73        vaikea.Image = LoadImage("vtaso3");
74        loppu.Image = LoadImage("loppu");
75        pisteet.Image = LoadImage("pisteet");
76       
77        helppo.X = 100;
78        helppo.Y = 200;
79        keski.X = 100;
80        keski.Y = 0;
81        vaikea.X = 100;
82        vaikea.Y = -200;
83        loppu.X = -400;
84        loppu.Y = 200;
85        pisteet.X = -400;
86        pisteet.Y = 0;
87       
88        Add(helppo);
89        Add(keski);
90        Add(vaikea); 
91        Add(loppu);
92        Add(pisteet);
93        Level.Background.CreateGradient(Color.Gray, Color.White);
94    }
95
96    void valitse(int valittutaso)
97    {
98        if (valittutaso == 0)
99        {
100            vaikeustaso = 0;
101            Camera.ZoomFactor = 1.0;
102        }
103        else if (valittutaso == 1) 
104        {
105            vaikeustaso = 1; 
106            Camera.ZoomFactor = 1.5;
107        }
108        else if (valittutaso == 2)
109        {
110            vaikeustaso = 2;
111            Camera.ZoomFactor = 2.0;
112        }
113
114        Mouse.IsCursorVisible = false;
115        Mouse.Enabled = false;
116        seuraavaKentta();
117    }
118
119    void piste()
120    {
121        ClearAll();
122        Mouse.Enabled = true;
123        Mouse.IsCursorVisible = true;
124        Camera.Position = new Vector(0, 0);
125        Camera.StayInLevel = true;
126        Camera.FollowedObject = null;
127        Camera.ZoomFactor = 1.0;
128
129        loppu = new GameObject(100, 100);
130        Mouse.ListenOn(loppu, MouseButton.Left, ButtonState.Pressed, Exit, "");
131        loppu.X = -200;
132        loppu.Y = 200;
133        loppu.Image = LoadImage("loppu");
134        Add(loppu);
135        Level.Background.CreateGradient(Color.Gray, Color.White);
136
137    }
138   
139    void seuraavaKentta()
140    {
141        ClearAll();
142
143        // Asetetaan painovoima
144        Gravity = new Vector(0, -700);
145        luoKentta();
146        lisaaNappaimet();
147        Camera.Follow(olio);
148       
149         
150        Timer korkeusAjastin = new Timer(); 
151        korkeusAjastin.Interval = 0.1; 
152        korkeusAjastin.Trigger += NaytaKorkeus; 
153        Add( korkeusAjastin ); 
154        korkeusAjastin.Start(); 
155    }
156
157    void luoKentta()
158    {
159        Level.Background.CreateGradient(Color.Gray, Color.White);
160        lista = new List<PhysicsObject>();
161
162        TileMap ruudut = TileMap.FromFile("TextFile1.txt");
163        ruudut['-'] = lisaaTaso;
164        ruudut['|'] = lisaaSeina;
165        ruudut['_'] = lisaaNuoli;
166        ruudut['.'] = lisaaNuoli2;
167        ruudut['!'] = lisaaOhje;
168        ruudut[':'] = lisaaVaroitus;
169        ruudut['*'] = lisaaPelaajat;
170        ruudut['x'] = Arvonta;
171        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
172        aloituspaikka = olio.Position;
173        Level.CreateBorders();
174        AddCollisionHandler(olio, KasitteleOlionTormays);
175
176        mittari = new TextDisplay();
177        Add(mittari);
178        mittari.Text = "Syvyys: " + korkeus; 
179    }
180
181    PhysicsObject lisaaTaso()
182    {
183        PhysicsObject taso = PhysicsObject.CreateStaticObject(100,30);
184        Image image = Image.CreateGradient(150, 30, Color.White, Color.Gray);
185        taso.Image = image;
186        return taso;
187    }
188   
189    PhysicsObject lisaaSeina()
190    {
191        PhysicsObject seina = PhysicsObject.CreateStaticObject(30, 130);
192        Image image = Image.CreateGradient(100, 30, Color.White, Color.Gray);
193        seina.Image = image;
194        return seina;
195    }
196
197    PhysicsObject lisaaNuoli2()
198    {
199        PhysicsObject nuoli2 = new PhysicsObject(50, 50, Shapes.Rectangle);
200        nuoli2.IgnoresGravity = true;
201        nuoli2.IgnoresCollisionResponse = true;
202        nuoli2.X = 100;
203        nuoli2.Y = 50;
204        nuoli2.Image = LoadImage("nuoli2");
205        return nuoli2;
206    }
207
208    PhysicsObject lisaaOhje()
209    {
210        PhysicsObject ohje = new PhysicsObject(225, 75, Shapes.Rectangle);
211        ohje.IgnoresGravity = true;
212        ohje.IgnoresCollisionResponse = true;
213        ohje.X = -100;
214        ohje.Y = 50;
215        ohje.Image = LoadImage("ohje");
216        return ohje;
217    }
218
219    PhysicsObject lisaaVaroitus()
220    {
221        PhysicsObject varoitus = new PhysicsObject(150, 75, Shapes.Rectangle);
222        varoitus.IgnoresGravity = true;
223        varoitus.IgnoresCollisionResponse = true;
224        varoitus.X = -100;
225        varoitus.Y = 70;
226        varoitus.Image = LoadImage("warning");
227        return varoitus;
228    }
229
230    PhysicsObject lisaaPiikit()
231    {
232        PhysicsObject piikit = new PhysicsObject(100, 20, Shapes.Rectangle);
233        piikit.Tag = "piikki";
234        piikit.IgnoresGravity = true;
235        piikit.IgnoresCollisionResponse = true;
236        //piikit.X = 100;
237        //piikit.Y = 50;
238        piikit.Image = LoadImage("Spikes");
239        return piikit;
240    }
241   
242    void KasitteleOlionTormays(PhysicsObject olio, PhysicsObject kohde)
243    {
244        if (kohde.Tag.ToString() == "piikki")
245        {
246            olio.Position = aloituspaikka;
247            seuraavaKentta();
248
249        }
250        //tähän kirjoitetaan mitä halutaan tehdä, kun pallo törmää johonkin
251    }
252     
253    void NaytaKorkeus( Timer sender ) 
254    { 
255        korkeus = Math.Round((aloituspaikka.Y - olio.Y), 1);
256        mittari.Text = "Syvyys: " + korkeus; 
257        mittari.X = 100;
258        mittari.Y = 100;
259   }
260
261    PhysicsObject Arvonta()
262    {
263        PhysicsObject listas;
264       
265        int ruutu= RandomGen.NextInt(1, 3);
266        if (ruutu == 1)
267        {
268            listas= lisaaPiikit();
269        }
270        else if (ruutu == 2)
271        {
272            listas= lisaaTaso();
273        }
274        else
275        {
276            PhysicsObject tyhja = new PhysicsObject(40, 40);
277            tyhja.IgnoresCollisionResponse = true;
278            tyhja.IsVisible = false;
279            tyhja.Tag = "tyhja";
280            listas= tyhja;
281        }
282        lista.Add(listas);
283        tarkistus();
284        return listas;
285    }
286
287    void tarkistus()
288    {
289        if (lista.Count == 7)
290        {
291            for (int i = 0; i < lista.Count; i++)
292            {
293                if (lista[i].Tag.ToString() == "tyhja")
294                {
295                    lista.Clear();
296                    return;
297                }
298                else if (i == 6)
299                {
300                    lista[RandomGen.NextInt(0, 6)].Destroy() ;
301                    lista.Clear();
302                }
303            }
304        }
305        else return;
306    }
307
308    PhysicsObject lisaaNuoli()
309    {
310        PhysicsObject nuoli = new PhysicsObject(50, 50, Shapes.Rectangle);
311        nuoli.IgnoresGravity = true;
312        nuoli.IgnoresCollisionResponse = true;
313        nuoli.X = 100;
314        nuoli.Y = 50;
315        nuoli.Image = LoadImage("nuoli");
316        return nuoli;
317    }
318
319    void lisaaNappaimet()
320    {
321        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, null);
322        Keyboard.Listen(Key.Escape, ButtonState.Pressed, alkuvalikko, "Poistu valikkoon");
323
324        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", olio, -nopeus);
325        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", olio, nopeus);
326        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", olio, hyppyVoima);
327        Keyboard.Listen(Key.R, ButtonState.Pressed, palauta, "Palauttaa olion alkuun", olio);
328    }
329
330
331    void liikuta(PlatformCharacter hahmo, double nopeus)
332    {
333        hahmo.Push(new Vector (nopeus, 0));
334    }
335
336    void hyppaa(PlatformCharacter hahmo, double voima)
337    {
338        hahmo.Jump(voima);
339    }
340
341    void palauta(PlatformCharacter hahmo)
342    {
343        hahmo.Position = aloituspaikka;
344        seuraavaKentta();
345    }
346
347
348    PhysicsObject lisaaPelaajat()
349    {
350        olio = new PlatformCharacter(40, 40);
351        olio.Shape = Shapes.Rectangle;
352        olio.Color = Color.Black;
353        olio.Size = new Vector(40, 40);
354        olio.Y = 100;
355        olio.CanRotate = true;
356        olio.KineticFriction = 0.0;
357        olio.StaticFriction = 0.0;
358        olio.Mass = 1.0;
359        return olio;
360    }
361
362}
Note: See TracBrowser for help on using the repository browser.