source: 2010/24/kaosmaja/Tasohyppely1/Peli.cs @ 931

Revision 931, 9.3 KB checked in by kaosmaja, 11 years ago (diff)

Kentta2 VALMIS(melkein)

Line 
1using System;
2using Jypeli;
3using Jypeli.ScreenObjects;
4using Jypeli.Assets;
5
6
7class Tasohyppely : PhysicsGame
8{
9    double nopeus = 350;
10    double hyppyVoima = 7000;
11
12    IntMeter pisteLaskuri;
13    ValueDisplay pisteNaytto;
14
15    PlatformCharacter pelaaja1;
16
17    int kenttaNro; // monesko kenttä on menossa
18
19    const int ruudunLeveys = 50;
20    const int ruudunKorkeus = 50;
21
22    protected override void Begin()
23    {
24        kenttaNro = 0;
25        Level.Width = 1500;
26        Level.Height = 1000;
27        pisteLaskuri = new IntMeter(0);
28       
29
30        // Zoomataan lähemmäksi
31        Camera.ZoomFactor = 2.0;
32
33        Camera.StayInLevel = true;
34
35        seuraavaKentta();
36        MessageDisplay.Add("Etsi iso tähti!");
37    }
38
39    void seuraavaKentta()
40    {
41        ClearAll();
42        LisaaPistelaskuri();
43        pisteLaskuri.Reset();
44
45        kenttaNro += 1; // lisätään kenttänumeroa yhdellä
46        MessageDisplay.Add("Kenttä " + kenttaNro);
47
48        // Asetetaan painovoima
49        Gravity = new Vector(0, -1500);
50        if (kenttaNro == 1)
51        {
52            luoKentta();
53        }
54        if (kenttaNro == 2)
55        {
56            LuoKentta2();
57        }
58        lisaaNappaimet();
59        Camera.Follow(pelaaja1);
60    }
61
62    void LisaaPistelaskuri()
63    {
64        // Luodaan pistelaskuri
65
66
67        // luodaan pistelaskunäyttö
68        pisteNaytto = new ValueDisplay();
69        pisteNaytto.Text = "Pisteitä: ";
70        pisteNaytto.X = Screen.RightSafe - 250;
71        pisteNaytto.Y = Screen.TopSafe - 50;
72        pisteNaytto.BindTo(pisteLaskuri);
73        Add(pisteNaytto);    // lisätään peliin
74    }
75
76    void luoKentta()
77    {
78        Level.CreateBorders();
79        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
80
81        lisaaTaso(-200, -350);
82        lisaaTaso(0, -200);
83        lisaaTaso(0, 0);
84        lisaaTaso(-150, -100);
85        lisaaTaso(200, -200);
86        lisaaTaso(100, -200);
87        lisaaTaso(300, -200);
88        lisaaTaso(400, -200);
89        lisaaTaso(500, -200);
90        lisaaTaso(600, -200);
91        PhysicsObject palikka2 = lisaaTaso(700, -200);
92        palikka2.IgnoresCollisionResponse = (true);
93        lisaaTaso(700, -300);
94        lisaaTaso(0, 120);
95        lisaaTaso(-100, 120);
96        lisaaTaso(-200, 120);
97        lisaaTaso(-300, 120);
98        lisaaTaso(-400, 120);
99        lisaaTaso(-300, 0);
100        lisaaTaso(-500, -200);
101        lisaaTaso(-700, 0);
102        lisaaTaso(-250, -100);
103        LisaaTaso2(-10, -150);
104        LisaaTaso2(-10, -50);
105        LisaaTaso2(35, 55);
106
107        int i = 15;
108        while (i < 50)
109        {
110            int sade = RandomGen.NextInt(5, 20);
111            PhysicsObject smiley = LisaaSmiley(
112                RandomGen.NextDouble(
113                  Level.Left,
114                  Level.Right
115                ),
116                RandomGen.NextDouble(
117                  Level.Top,
118                  Level.Bottom
119                ));
120                smiley.Color = Color.LightYellow;
121                Add(smiley);
122                i++;
123        }
124        lisaaMaali();
125        lisaaPelaajat();
126    }
127    void LuoKentta2()
128    {
129
130        TileMap ruudut = TileMap.FromFile("kentta.txt");
131        ruudut['='] = LuoPalikka;
132        ruudut['*'] = LuoSmiley2;
133        ruudut['S'] = LuoS;
134        ruudut['T'] = LuoTeho;
135        ruudut['!'] = lisaaMaali;
136        ruudut['@'] = lisaaPelaajat;
137        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
138        Camera.Follow(pelaaja1);
139    }
140    PhysicsObject LuoTeho()
141    {
142        PhysicsObject teho = new PhysicsObject(20, 20);
143        teho.Color = Color.LightBlue;
144        teho.Tag = "Teho";
145        teho.Image = LoadImage("Teho");
146        return teho;
147    } 
148
149    PhysicsObject LuoPalikka()
150    {
151        PhysicsObject Palikka = PhysicsObject.CreateStaticObject(50.0, 50.0);
152        Palikka.Color = Color.LightGreen;
153        return Palikka;
154    }
155    PhysicsObject LuoSmiley2()
156    {
157        PhysicsObject smiley2 = PhysicsObject.CreateStaticObject(10.0, 10.0);
158        smiley2.Image = LoadImage("smiley2");
159        smiley2.Tag = "smiley2";
160        return smiley2;
161    }
162    PhysicsObject LuoS()
163    {
164        PhysicsObject S = new PhysicsObject(15.0, 15.0);
165        S.Tag = "S";
166        S.Image = LoadImage("S-man");
167        return S;
168    }
169
170    PhysicsObject lisaaTaso(double x, double y)
171    {
172        PhysicsObject taso = PhysicsObject.CreateStaticObject(100, 30);
173        taso.Color = Color.Green;
174        taso.X = x;
175        taso.Y = y;
176        Add(taso);
177        return taso;
178    }
179    PhysicsObject LisaaTaso2( double x, double y )
180    {
181        PhysicsObject taso2 = PhysicsObject.CreateStaticObject(30, 100);
182        taso2.Color = Color.Green;
183        taso2.X = x;
184        taso2.Y = y;
185        Add(taso2);
186        return taso2;
187    }
188    PhysicsObject LisaaSmiley( double x, double y )
189    {
190        PhysicsObject smiley = new PlatformCharacter( 10, 10 );
191        smiley.Image = LoadImage("smiley");
192        smiley.Tag = "smiley";
193        smiley.Position = new Vector(x, y);
194
195        Add(smiley);
196        return smiley;
197    }
198
199    PlatformCharacter lisaaPelaajat() 
200    {
201        pelaaja1 = new PlatformCharacter(40, 40);
202        pelaaja1.Mass = 4.0;
203        pelaaja1.Image = LoadImage("norsu");
204        pelaaja1.X = 0;
205        pelaaja1.Y = Level.Bottom + 120;
206
207        AddCollisionHandler(pelaaja1, osuiJohonkin);
208
209        Add(pelaaja1);
210        return pelaaja1;
211    }
212
213    PhysicsObject lisaaMaali()
214    {
215        PhysicsObject maali = PhysicsObject.CreateStaticObject(50, 50, Shapes.Circle);
216        maali.Tag = "maali";
217        maali.IgnoresCollisionResponse = true;
218        maali.X = 30;
219        maali.Y = -60;
220        maali.Image = LoadImage("tahti");
221        Add(maali);
222        return maali;
223    }
224
225    void lisaaNappaimet()
226    {
227        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
228        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
229
230        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
231        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
232        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
233
234        lisaaGamePadNappaimet(ControllerOne);
235    }
236
237    void lisaaGamePadNappaimet(GamePad controller)
238    {
239        controller.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
240
241        controller.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
242        controller.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
243        controller.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
244    }
245
246    void liikuta(PlatformCharacter hahmo, double nopeus)
247    {
248        hahmo.Walk(nopeus);
249    }
250
251    void hyppaa(PlatformCharacter hahmo, double voima)
252    {
253        hahmo.Jump(hyppyVoima);
254    }
255
256    void osuiJohonkin(PhysicsObject collidingObject, PhysicsObject otherObject)
257    {
258        if (otherObject.Tag.ToString() == "maali")
259        {
260            this.PlaySound("maali");
261            int edellisenKentanPisteet = pisteLaskuri.Value;
262            seuraavaKentta();
263            MessageDisplay.Add("Pääsit läpi kentän " + kenttaNro + ". Pisteitä: " + edellisenKentanPisteet);
264        }
265
266        if (otherObject.Tag.ToString() == "smiley")
267        {
268            otherObject.Destroy();
269            MessageDisplay.Add("Otit smileyn mukaan, sait pisteitä");
270            pisteLaskuri.Value++;
271        }
272        if (otherObject.Tag.ToString() == "smiley2")
273        {
274            otherObject.Destroy();
275            MessageDisplay.Add("Otit smileyn mukaan, sait pisteitä");
276            pisteLaskuri.Value++;
277        }
278        if (otherObject.Tag.ToString() == "S")
279        {
280            otherObject.Destroy();
281            MessageDisplay.Add("Otit S:än, nyt Pystyt hyppäämään korkeammalle!");
282            hyppyVoima = hyppyVoima * 2;
283            MessageDisplay.Add("Hyppyvoima " + hyppyVoima);
284            pisteLaskuri.Value++;
285
286            Timer aikalaskuri = new Timer();
287            aikalaskuri.Interval = 30;
288            aikalaskuri.Trigger += new Timer.TriggerHandler(SKosketus);
289            Add(aikalaskuri);
290            aikalaskuri.Start(1);
291            //ValueDisplay aikaNaytto;
292
293
294        }
295        if (otherObject.Tag.ToString() == "Teho")
296        {
297            otherObject.Destroy();
298            MessageDisplay.Add("TEHO!!!");
299            hyppyVoima = hyppyVoima * 10;
300            MessageDisplay.Add("Hyppyvoima " + hyppyVoima);
301
302            Timer aikalaskuri = new Timer();
303            aikalaskuri.Interval = 15;
304            aikalaskuri.Trigger += new Timer.TriggerHandler(TKosketus);
305            Add(aikalaskuri);
306            aikalaskuri.Start(1);
307            //ValueDisplay aikanaytto;
308        }
309    }
310    private void SKosketus(Timer sender)
311    {
312        MessageDisplay.Add("Aika loppui! Hyppykorkeus normalisoitu.");
313        hyppyVoima = hyppyVoima / 2;
314    }
315    private void TKosketus(Timer sender)
316    {
317        MessageDisplay.Add("Teho loppui!");
318            hyppyVoima = hyppyVoima / 20;
319    }
320
321}
Note: See TracBrowser for help on using the repository browser.