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

Revision 5618, 5.5 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
12    #region Olioiden nimeaminen
13    PhysicsObject Kookie;
14    PhysicsObject reuna;
15    PhysicsObject tavarat;
16    #endregion
17    IntMeter pisteLaskuri;
18    #region kuvien lataaminen
19    Image KookieKuva = LoadImage("Kookie");
20    Image LetterKuva = LoadImage("Letter");
21    Image RapmonKuva = LoadImage("Rapmon");
22    #endregion
23    #region nopeudet
24    Vector nopeusOikealle = new Vector(300, 0);
25    Vector nopeusVasemmalle = new Vector(-300, 0);
26    #endregion
27
28    public override void Begin()
29    {
30        Ajastin();
31        LuoKentta();
32        LuoPisteLaskuri();
33        AsetaOhjaimet();
34    }
35
36    void Ajastin()
37    {
38        Timer Ajastin = new Timer();
39        Ajastin.Interval = 1.5;
40        Ajastin.Timeout += LuoHahmot;
41        Ajastin.Start();
42
43    }
44
45    #region Kentan luomista
46    void LuoKentta()
47    {
48        SetWindowSize(600,800);
49        Level.Size = new Vector(600, 800);
50
51        TileMap alaReuna = TileMap.FromLevelAsset("Kentta");
52        alaReuna.SetTileMethod('#', LuoReunaa);
53        alaReuna.SetTileMethod('-', LuoKookie);
54        alaReuna.Execute(20.0,20.0);
55        Camera.ZoomToLevel();
56
57
58        IsMouseVisible = true;
59
60        PhysicsObject oikeaReuna = Level.CreateRightBorder();
61        oikeaReuna.Restitution = 1.0;
62
63        PhysicsObject vasenReuna = Level.CreateLeftBorder();
64        vasenReuna.Restitution = 1.0;
65    }
66
67    void LuoReunaa(Vector paikka, double leveys, double korkeus)
68    {
69        reuna = PhysicsObject.CreateStaticObject(leveys, korkeus);
70        reuna.Position = paikka;
71        reuna.Color = Color.Salmon;
72        reuna.Tag = "reuna";
73        reuna.CollisionIgnoreGroup = 1;
74        Add(reuna);
75    }
76
77    void LuoKookie(Vector paikka, double leveys, double korkeus)
78    {
79        //Kookie = new PlatFormCharacter(10,10);
80        //Kookie.Position = paikka;
81        //AddCollisionHandler(Kookie, "Letter", PisteidenSaanti);
82        //Add(Kookie);
83
84
85        Kookie = PhysicsObject.CreateStaticObject(50.0, 50.0);
86        //Kookie.X = 0.0;
87        //Kookie.Y = Level.Bottom + 30;
88        Kookie.Position = paikka;
89        Kookie.Image = KookieKuva;
90        Kookie.Restitution = 1.0;
91        AddCollisionHandler(tavarat, "reuna", Osuma);
92
93        Add(Kookie);
94    }
95
96    #endregion
97
98    #region Luo Hahmoja
99    void LuoHahmot()
100    {
101        bool tuleekoKirje = RandomGen.NextBool();
102        if (tuleekoKirje == true)
103        {
104            LuoHahmoja(1, LetterKuva, "Letter");
105        }
106        else
107        {
108            LuoHahmoja(1, RapmonKuva, "Hyung");
109        }
110
111    }
112
113    void LuoHahmoja(int maara, Image Kuva, string tag)
114    {
115        int i = 0;
116        while (i < maara)
117        {
118            double x = RandomGen.NextDouble(Level.Left + 10, Level.Right - 10);
119            tavarat = LuoTavarat(x, Level.Top - 20, 20.0, RapmonKuva);
120            tavarat.Tag = tag;
121            tavarat.Image = Kuva;
122            tavarat.Velocity = new Vector(0, -200);
123            tavarat.CollisionIgnoreGroup = 1;
124            Add(tavarat);
125            i++;
126        }
127    }
128
129    PhysicsObject LuoTavarat(double x, double y, double sade, Image Kuva)
130    {
131        PhysicsObject tavara = new PhysicsObject(sade * 2.0, sade * 2.0, Shape.Circle);
132        tavara.Position = new Vector(x, y);
133        return tavara;
134    }
135
136    #endregion
137
138    void AsetaOhjaimet()
139    {
140        Keyboard.Listen(Key.Right, ButtonState.Down, AsetaNopeus, "Oikealle.", Kookie, nopeusOikealle);
141        Keyboard.Listen(Key.Right, ButtonState.Released, AsetaNopeus, null, Kookie, Vector.Zero);
142
143        Keyboard.Listen(Key.Left, ButtonState.Down, AsetaNopeus, "Vasemmalle.", Kookie, nopeusVasemmalle);
144        Keyboard.Listen(Key.Left, ButtonState.Released, AsetaNopeus, null, Kookie, Vector.Zero);
145
146        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
147    }
148
149    void AsetaNopeus(PhysicsObject hahmo, Vector nopeus)
150    {
151        if ((nopeus.X > 0) && (hahmo.Right > Level.Right))
152        {
153            hahmo.Velocity = Vector.Zero;
154            return;
155        }
156
157        if ((nopeus.X < 0) && (hahmo.Left < Level.Left))
158        {
159            hahmo.Velocity = Vector.Zero;
160            return;
161        }
162
163        hahmo.Velocity = nopeus;
164    }
165
166
167    #region osumia
168
169    void Osuma(PhysicsObject Reuna, PhysicsObject osuneetEsineet)
170    {
171        osuneetEsineet.Destroy();
172
173    }
174
175    void KirjeenOsuma(PhysicsObject Reuna, PhysicsObject osuneetEsineet)
176    {
177        osuneetEsineet.Destroy();
178        pisteLaskuri.Value -= 10;
179    }
180
181    void Kuolema(PhysicsObject Kookie, PhysicsObject kohde)
182    {
183        Kookie.Destroy();
184        MessageDisplay.Add("Hävisit");
185    }
186
187    void PisteidenSaanti(PhysicsObject Kookie, PhysicsObject kohde)
188    {
189        kohde.Destroy();
190        pisteLaskuri.Value = pisteLaskuri.Value + 10;
191    }
192    #endregion
193
194   
195
196    void LuoPisteLaskuri()
197    {
198        pisteLaskuri = new IntMeter(0,-1000,1000);
199
200        Label pisteNaytto = new Label();
201        pisteNaytto.X = Level.Left + 100;
202        pisteNaytto.Y = Level.Top - 50;
203        pisteNaytto.TextColor = Color.Black;
204        pisteNaytto.Color = Color.Transparent;
205        pisteNaytto.BindTo(pisteLaskuri);
206        pisteNaytto.IntFormatString = "Points: {0:D1}";
207
208        Add(pisteNaytto);
209    }
210}
Note: See TracBrowser for help on using the repository browser.