source: 2011/31/AlisaJ/Tasohyppelypeli1/Tasohyppelypeli1/Peli.cs @ 2606

Revision 2606, 6.1 KB checked in by alromaju, 8 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Peli : PhysicsGame
10{
11    Image LinnunKuva = LoadImage("pelin lintu1");
12
13    int kentanNro = 1;
14
15    const double nopeus = 500;
16    const int RUUDUN_KOKO = 10;
17
18
19
20    PhysicsObject Lintu;
21
22
23
24    SoundEffect maaliAani = LoadSoundEffect("maali");
25
26
27    public override void Begin()
28    {
29
30
31       
32        MessageDisplay.TextColor = Color.White;
33        Image taustaKuva = LoadImage("aloituskuva 1");
34        Level.Background.Image = taustaKuva;
35        Camera.ZoomToLevel();
36        Level.Background.FitToLevel();
37
38
39        Keyboard.Listen(Key.A, ButtonState.Pressed, aloitapeli, null);
40
41       
42
43    }
44
45    void seuraavaKentta(int kentannro)
46    {
47        if (kentannro == 1) luoKentta("kentta1.txt");
48        else if (kentannro == 2) luoKentta("kentta2.txt");
49        else if (kentannro == 3) luoKentta("kentta3.txt");
50        else if (kentannro == 4) luoKentta("kentta4.txt");
51        else kaikkiTasotLapi();
52    }
53
54    void luoKentta(string kenttaTiedostonNimi)
55    {
56        ClearAll();
57        TileMap kentta = TileMap.FromFile(kenttaTiedostonNimi);
58        kentta.SetTileMethod('#', lisaaTaso);
59        kentta.SetTileMethod('L', lisaalintu);
60        kentta.Execute(10, 15);
61       
62        Level.Background.Color = Color.SkyBlue;
63        pallo();
64        LuoAikaLaskuri();
65        lisaaNappaimet();
66        LuoLaskuri();
67        Camera.ZoomToLevel();
68        Level.CreateBorders();
69
70    }
71
72    void lisaaTaso(Vector paikka, double leveys, double korkeus)
73    {
74        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
75        taso.Position = paikka;
76        taso.Color = Color.Gray;
77        taso.Restitution = 1.1;
78        Add(taso);
79    }
80
81
82
83    void lisaalintu(Vector paikka, double leveys, double korkeus)
84    {
85        Lintu = new PhysicsObject(20, 20, Shape.Circle, CollisionShapeQuality.Best);
86        Lintu.Position = paikka;
87        Lintu.IgnoresGravity = true;
88        Lintu.Mass = 4.0;
89        Lintu.Image = LinnunKuva;
90        AddCollisionHandler(Lintu, kasitteleLinnunTormays);
91        Add(Lintu);
92    }
93
94    void lisaaNappaimet()
95    {
96        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
97        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
98
99        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", Lintu, new Vector(-450, 0));
100        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", Lintu, new Vector(450, 0));
101        Keyboard.Listen(Key.Down, ButtonState.Down, liikuta, "Liikkuu ylos", Lintu, new Vector(0, -450));
102        Keyboard.Listen(Key.Up, ButtonState.Down, liikuta, "Liikkuu alas", Lintu, new Vector(0, 450));
103       
104
105
106
107
108    }
109
110    void kasitteleLinnunTormays(PhysicsObject hahmo, PhysicsObject kohde)
111    {
112        if (kohde.Tag.ToString() == "pallo")
113        {
114            MessageDisplay.Add("söit hyttysen!");
115            kohde.Destroy();
116            pisteLaskuri.Value++;
117        }
118
119    }
120
121
122
123
124    void liikuta(PhysicsObject Lintu, Vector nopeus)
125    {
126        Lintu.Move(nopeus);
127    }
128
129
130    void pallo()
131    {
132        int i = 0;
133        Gravity = new Vector(0, -500);
134        while (i < 250)
135        {
136
137            i++;
138            PhysicsObject pallo = new PhysicsObject(5, 5);
139            pallo.Color = RandomGen.NextColor();
140            pallo.Shape = Shape.Circle;
141            pallo.X = RandomGen.NextDouble(Level.Left, Level.Right);
142            pallo.Y = RandomGen.NextDouble(Level.Bottom, Level.Top);
143           
144            pallo.Restitution = 1.1;
145            pallo.Tag = "pallo";
146
147
148            Add(pallo);
149        }
150
151    }
152
153
154    DoubleMeter alaspainLaskuri;
155    Timer aikaLaskuri;
156
157    void LuoAikaLaskuri()
158    {
159        alaspainLaskuri = new DoubleMeter(60);
160
161        aikaLaskuri = new Timer();
162        aikaLaskuri.Interval = 0.1;
163        aikaLaskuri.Timeout += LaskeAlaspain;
164        aikaLaskuri.Start();
165
166        Label aikaNaytto = new Label();
167        aikaNaytto.TextColor = Color.Black;
168        aikaNaytto.DecimalPlaces = 1;
169        aikaNaytto.BindTo(alaspainLaskuri);
170        Add(aikaNaytto);
171    }
172
173    void LaskeAlaspain()
174    {
175        alaspainLaskuri.Value -= 0.1;
176
177        if (alaspainLaskuri.Value <= 0)
178        {
179            MessageDisplay.Add("Aika loppui...");
180            aikaLaskuri.Stop();
181            peliLoppui();
182           
183        }
184
185
186
187
188    }
189
190    void peliLoppui()
191    {
192        ClearAll();
193        Image taustaKuva = LoadImage("keskikuva1");
194        Level.Background.Image = taustaKuva;
195        Camera.ZoomToLevel();
196        Level.Background.FitToLevel();
197        Keyboard.Listen(Key.A, ButtonState.Pressed, aloitapeli, null);
198
199
200
201    }
202
203    void KasittelePallonTormays(PhysicsObject lintu, PhysicsObject pallo)
204    {
205       
206    }
207
208     void laskuriYlarajassa( int arvo)
209     {
210         seuraavaKentta(++kentanNro);
211         //luoKentta(seuraavaKentta);
212         //seuraavaKentta = "kentta4.txt";
213     }
214
215
216        IntMeter pisteLaskuri;
217
218       void LuoLaskuri()
219    {
220        pisteLaskuri = new IntMeter(0);
221
222        Label pisteNaytto = new Label();
223        pisteNaytto.X = Screen.Left + 100;
224        pisteNaytto.Y = Screen.Top - 100;
225        pisteNaytto.TextColor = Color.Pink;
226
227        pisteNaytto.BindTo(pisteLaskuri);
228        Add(pisteNaytto);
229
230        pisteLaskuri.MaxValue = 100;
231       pisteLaskuri.UpperLimit += laskuriYlarajassa;
232
233
234
235   
236       
237
238    }
239
240
241       void aloitapeli ()
242       {
243           seuraavaKentta(kentanNro);
244       }
245
246
247       void kaikkiTasotLapi()
248       {
249           ClearAll();
250           Image taustaKuva = LoadImage("keskikuva2");
251           Level.Background.Image = taustaKuva;
252           Camera.ZoomToLevel();
253           Level.Background.FitToLevel();
254           kentanNro = 1;
255           Keyboard.Listen(Key.A, ButtonState.Pressed, aloitapeli, null);
256
257       }
258       
259
260}
Note: See TracBrowser for help on using the repository browser.