source: 2014/30/OonaH/GoldenMaknae2/GoldenMaknae2/GoldenMaknae2/GoldenMaknae2.cs @ 5638

Revision 5638, 7.9 KB checked in by oomahutt, 6 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class GoldenMaknae2 : PhysicsGame
10{
11    PlatformCharacter Kookie;
12    PhysicsObject reuna;
13    PhysicsObject tavarat;
14    PhysicsObject pilvi;
15    Label pisteNaytto;
16    IntMeter pisteLaskuri;
17    List<Label> valikonKohdat;
18
19    #region kuvien lataaminen
20    Image KookieKuva = LoadImage("Kookie");
21    Image LetterKuva = LoadImage("Letter");
22    Image RapmonKuva = LoadImage("Rapmon");
23    Image Pilvi1Kuva = LoadImage("Pilvi1");
24
25    #endregion
26    #region nopeudet
27    Vector nopeusOikealle = new Vector(300, 0);
28    Vector nopeusVasemmalle = new Vector(-300, 0);
29    #endregion
30
31    public override void Begin()
32    {
33       
34
35        IsMouseVisible = true;
36
37        SetWindowSize(600, 800);
38        Level.Size = new Vector(600, 800);
39
40        Valikko();
41       
42    }
43
44    void Valikko()
45    {
46        ClearAll();
47
48        Level.BackgroundColor = Color.Ivory;
49
50        //Widget lista = new Widget(new VerticalLayout());
51       // lista.BorderColor = Color.Black;
52        //lista.Color = Color.Transparent;
53        //Add(lista);
54
55        //lista.Add(new Label("kissa"));
56
57        //Widget laatikko = new Widget(100, 20);
58        //laatikko.Color = Color.Blue;
59        //lista.Add(laatikko);
60
61        //lista.Add(new Widget(taulunKuva));
62
63        //lista.Add(new Label("koira"));
64
65        Widget tausta = new Widget(new VerticalLayout());
66        tausta.Color = Color.Ivory;
67        Add(tausta);
68
69        tausta.Add(new Label("falkjhfaögafjöa"));
70
71
72
73        valikonKohdat = new List<Label>();
74
75        Label aloitusNappi = new Label("Start");
76        aloitusNappi.Position = new Vector(0, 100);
77        valikonKohdat.Add(aloitusNappi);
78
79        Label lopeta = new Label("Quit");
80        lopeta.Position = new Vector(0, 70);
81        valikonKohdat.Add(lopeta);
82
83        Mouse.ListenOn(aloitusNappi, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
84        Mouse.ListenOn(lopeta, MouseButton.Left, ButtonState.Pressed, LopetaPeli, null);
85        Mouse.ListenMovement(0.1, ValikossaLiikkuminen, null);
86
87        foreach (Label valikot in valikonKohdat)
88        {
89            Add(valikot);
90        }
91    }
92
93    void ValikossaLiikkuminen(AnalogState hiiri)
94    {
95        //foreach (Label kohta in valikonKohdat)
96
97        foreach (Label kohta in valikonKohdat)
98        {
99            if (Mouse.IsCursorOn(kohta))
100            {
101                kohta.TextColor = Color.HotPink;
102            }
103            else
104            {
105                kohta.TextColor = Color.Black;
106            }
107        }
108    }
109    void AloitaPeli()
110    {
111        ClearAll();
112
113        Ajastin();
114        LuoPisteLaskuri();
115        LuoKentta();
116        AsetaOhjaimet();
117    }
118
119    void LopetaPeli()
120    {
121        Exit();
122    }
123
124    void Ajastin()
125    {
126        Timer Ajastin = new Timer();
127        Ajastin.Interval = 3;
128        Ajastin.Timeout += LuoHahmot;
129        Ajastin.Start();
130    }
131    void LuoHahmot()
132    {
133        bool tuleekoKirje = RandomGen.NextBool();
134        if (tuleekoKirje == true)
135        {
136            LuoHahmoja(1, LetterKuva, "Letter");
137        }
138        else
139        {
140            LuoHahmoja(1, RapmonKuva, "Hyung");
141        }
142
143    }
144
145    void LuoHahmoja(int maara, Image Kuva, string tag)
146    {
147        int i = 0;
148        while (i < maara)
149        {
150            double x = RandomGen.NextDouble(Level.Left + 10, Level.Right - 10);
151            tavarat = LuoTavarat(x, Level.Top - 20, 20.0);
152            tavarat.Tag = tag;
153            tavarat.Image = Kuva;
154            tavarat.Velocity = new Vector(0, -200);
155            tavarat.CollisionIgnoreGroup = 1;
156            tavarat.IgnoresGravity = true;
157            Add(tavarat);
158
159            i++;
160        }
161    }
162
163    PhysicsObject LuoTavarat(double x, double y, double sade)
164    {
165        PhysicsObject tavara = new PhysicsObject(sade * 3.0, sade * 3.0, Shape.Circle);
166        tavara.Position = new Vector(x, y);
167        return tavara;
168    }
169
170    void LuoKentta()
171    {
172 
173        TileMap alaReuna = TileMap.FromLevelAsset("Kentta");
174        alaReuna.SetTileMethod('#', LuoReunaa);
175        alaReuna.SetTileMethod('-', LuoKookie);
176        alaReuna.Execute(20.0,20.0);
177
178        Camera.ZoomToLevel();
179
180        PhysicsObject oikeaReuna = Level.CreateRightBorder();
181        oikeaReuna.Restitution = 1.0;
182
183        PhysicsObject vasenReuna = Level.CreateLeftBorder();
184        vasenReuna.Restitution = 1.0;
185
186        //täälläkin pilviä
187        LuoPilvia(-100, 500, Pilvi1Kuva);
188
189    }
190
191    void LuoReunaa(Vector paikka, double leveys, double korkeus)
192    {
193        reuna = PhysicsObject.CreateStaticObject(leveys, korkeus);
194        reuna.Position = paikka;
195        reuna.Color = Color.Salmon;
196        reuna.Tag = "reuna";
197        Add(reuna);
198
199        AddCollisionHandler(reuna, "Letter", Osuma);
200        AddCollisionHandler(reuna, "Hyung", ToinenOsuma);
201    }
202
203    void LuoPilvia(double x, double y, Image Kuva)
204    {
205
206        //TODO: pilvien luomisessa häikkää.
207       
208        pilvi.X = x;
209        pilvi.Y = y;
210        pilvi.Image = Kuva;
211        Add(pilvi);
212    }
213    void ToinenOsuma(PhysicsObject reuna, PhysicsObject Hyung)
214    {
215        Hyung.Destroy();
216    }
217
218    void LuoKookie(Vector paikka, double leveys, double korkeus)
219    {
220       
221        Kookie = new PlatformCharacter(70.0, 70.0);
222        Kookie.Position = paikka;
223        Kookie.Image = KookieKuva;
224        Kookie.Restitution = 1.0;
225        Gravity = new Vector(0,-5000);
226
227        Add(Kookie);
228
229        AddCollisionHandler(Kookie, "Letter", PisteidenSaanti);
230        AddCollisionHandler(Kookie, "Hyung", Kuolema);
231
232    }
233
234    void Osuma(PhysicsObject reuna, PhysicsObject osuneetKirjeet)
235    {
236        osuneetKirjeet.Velocity = Vector.Zero;
237
238    }
239
240    void LuoPisteLaskuri()
241    {
242        pisteLaskuri = new IntMeter(0, -1000, 1000);
243
244        pisteNaytto = new Label();
245        pisteNaytto.X = 0;
246        pisteNaytto.Y = 200;
247        pisteNaytto.TextColor = Color.Black;
248        pisteNaytto.Color = Color.Transparent;
249        pisteNaytto.BindTo(pisteLaskuri);
250        pisteNaytto.IntFormatString = "Points: {0:D1}";
251
252        Add(pisteNaytto);
253    }
254
255    void AsetaOhjaimet()
256    {
257        Keyboard.Listen(Key.Right, ButtonState.Down, AsetaNopeus, "Oikealle.", Kookie, nopeusOikealle);
258        Keyboard.Listen(Key.Right, ButtonState.Released, AsetaNopeus, null, Kookie, Vector.Zero);
259
260        Keyboard.Listen(Key.Left, ButtonState.Down, AsetaNopeus, "Vasemmalle.", Kookie, nopeusVasemmalle);
261        Keyboard.Listen(Key.Left, ButtonState.Released, AsetaNopeus, null, Kookie, Vector.Zero);
262
263        Keyboard.Listen(Key.Space, ButtonState.Pressed, Hyppaa, "Hyppy");
264
265
266        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
267    }
268
269    void Hyppaa()
270    {
271        Kookie.Jump(2500);
272    }
273
274    void AsetaNopeus(PhysicsObject hahmo, Vector nopeus)
275    {
276        if ((nopeus.X > 0) && (hahmo.Right > Level.Right))
277        {
278            hahmo.Velocity = Vector.Zero;
279            return;
280        }
281
282        if ((nopeus.X < 0) && (hahmo.Left < Level.Left))
283        {
284            hahmo.Velocity = Vector.Zero;
285            return;
286        }
287
288        hahmo.Velocity = nopeus;
289    }
290
291    #region Kuolema
292    void Kuolema(PhysicsObject Kookie, PhysicsObject kohde)
293    {
294        MessageDisplay.Add("Hävisit");
295        Explosion rajahdys = new Explosion(100);
296        rajahdys.Position = kohde.Position;
297        Add(rajahdys);
298        kohde.Destroy();
299        Timer.SingleShot(2, Valikko);
300        ClearControls();
301
302    }
303    #endregion
304
305    void PisteidenSaanti(PhysicsObject Kookie, PhysicsObject kohde)
306    {
307        kohde.Destroy();
308        pisteLaskuri.Value = pisteLaskuri.Value + 10;
309    }
310   
311}
Note: See TracBrowser for help on using the repository browser.