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

Revision 5665, 8.3 KB checked in by oomahutt, 7 years ago (diff)

Työn viimeistelyä.

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