source: 2015/27/TapaniS/ProjectStar/ProjectStar/ProjectStar/ProjectStar.cs @ 6788

Revision 6788, 6.7 KB checked in by tasalmik, 4 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 ProjectStar : PhysicsGame
10{
11    int kenttaNro = 1;
12    IntMeter pisteLaskuri;
13
14    Image kaliaKuva = LoadImage("kalia");
15    SoundEffect hitAani = LoadSoundEffect("hit");
16    Image ganjaKuva = LoadImage("GanjaOljo");
17    Image moabKuva = LoadImage("moab");
18    Image doritosKuva = LoadImage("doritos");
19    Image ukkoKuva = LoadImage("Ganja");
20    Image tasoKuva = LoadImage("goku");
21    Image[] taustaKuvat = LoadImages("Pemppe3", "Kentta2", "Kentta3", "Kentta4", "kentta5");
22    Vector nopeusYlos = new Vector(0, 200);
23    //Vector nopeusOikealle = new Vector(150, 0);
24    //Vector nopeusVasemmalle = new Vector(-150, 0);
25    double nopeus = 300;
26
27
28    PlatformCharacter ukko;
29    //PhysicsObject taso;
30
31
32    public override void Begin()
33
34    {
35        SmoothTextures = false;
36        Reset();
37
38        //SeuraavaKentta();
39        MediaPlayer.Play("teme");
40        MediaPlayer.IsRepeating = true;
41        MediaPlayer.Volume = 0.1;
42
43
44
45
46    }
47
48    void LiikutaUkkoa()
49    {
50        Keyboard.Listen(Key.Space, ButtonState.Down, Lento, "Ukko: Liikuta ukkoa ylös", ukko);
51        Keyboard.Listen(Key.Space, ButtonState.Pressed, delegate
52        {
53            Timer.SingleShot(0.75, delegate { Keyboard.Disable(Key.Space); });
54            Timer.SingleShot(4, delegate { Keyboard.Enable(Key.Space); });
55         },null);
56        Keyboard.Listen(Key.D, ButtonState.Down, Liiku, "Ukko: Liikuta ukkoa oikealle", ukko, nopeus);
57        Keyboard.Listen(Key.A, ButtonState.Down, Liiku, "Ukko: Liikuta ukkoa vasemmalle", ukko, -nopeus);
58        Keyboard.Listen(Key.W, ButtonState.Down, Hyppy, "Ukko: Liikuta ylös", ukko);
59        Keyboard.Listen(Key.R, ButtonState.Pressed, Reset, "Aloittaa kentän uudestaan");
60    }
61
62    void Liiku(PlatformCharacter Ukko, double nopeus)
63    {
64        //ukko.Velocity = nopeus;
65        ukko.Walk(nopeus);
66    }
67
68    void Lento(PlatformCharacter Ukko)
69    {
70        ukko.Push(new Vector(0, 2000));
71   
72    }
73
74    void Hyppy(PlatformCharacter Ukko)
75    {
76        ukko.Jump(1000);
77
78    }
79
80
81    void LuoPistelaskuri()
82    {
83        pisteLaskuri = new IntMeter(0);
84
85        Label pisteNaytto = new Label();
86        pisteNaytto.X = Screen.Left + 100;
87        pisteNaytto.Y = Screen.Top - 100;
88        pisteNaytto.TextColor = Color.Black;
89        pisteNaytto.Color = Color.White;
90
91        pisteNaytto.BindTo(pisteLaskuri);
92        Add(pisteNaytto);
93        pisteNaytto.Title = "Pisteet";
94        pisteLaskuri.MaxValue = 20;
95        pisteLaskuri.UpperLimit += SeuraavaKentta;
96    }
97
98    void SeuraavaKentta()
99    {
100        kenttaNro++;
101
102        if (kenttaNro >= 6)
103        {
104            Exit();
105            return;
106        }
107
108        Reset();
109    }
110
111    void PelaajaSaaPisteen(PhysicsObject ukko, PhysicsObject piste)
112    {
113        pisteLaskuri.Value++;
114        piste.Destroy();
115    }
116
117    int Paloja()
118    {
119        return 24 - 4 * kenttaNro;
120    }
121
122    void Reset()
123    {
124
125        ClearAll();
126        Keyboard.Clear();
127        //Level.Background.Image = taustaKuva;
128        Level.Size = new Vector(1500, 1000);
129        //Level.CreateBorders();
130        //Camera.ZoomToLevel();
131        ukko = new PlatformCharacter(40.0, 40.0);
132
133        PhysicsObject randomOlio = new PhysicsObject(80, 80);
134        Add(randomOlio);
135        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(200);
136        randomOlio.Brain = satunnaisAivot;
137        randomOlio.Image = ganjaKuva;
138        randomOlio.Position = new Vector(200, 300);
139
140        PhysicsObject aloitus = new PhysicsObject(80.0, 80.0);
141        aloitus.Shape = Shape.FromImage(moabKuva);
142        aloitus.Position -= new Vector(0, 50);
143        Add(aloitus);
144        aloitus.IgnoresGravity = true;
145        Add(ukko);
146        aloitus.Image = moabKuva;
147
148        ukko.Tag = "ukko";
149        ukko.Color = Color.Purple;
150        AddCollisionHandler(ukko, "piste", PelaajaSaaPisteen);
151        ukko.Image = ukkoKuva;
152
153        AddCollisionHandler(ukko, randomOlio, PelaajaKuolee);
154
155        PhysicsObject palkki = PhysicsObject.CreateStaticObject(2000, 10);
156        Add(palkki);
157        palkki.IgnoresGravity = true;
158        palkki.Position -= new Vector(0, 500);
159        palkki.Color = Color.Transparent;
160        AddCollisionHandler(ukko, palkki, PelaajaKuolee);
161        //AddCollisionHandler(ukko, taso, CollisionHandler.PlaySound("hit"));
162        AddCollisionHandler(ukko,"piste", Rajahdys);
163
164
165        for (int i = 0; i < Paloja(); i++)
166        {
167            Vector kentanPiste = Level.GetRandomPosition();
168           
169            PhysicsObject taso = PhysicsObject.CreateStaticObject(90.0, 30.0);
170            taso.IgnoresGravity = true;
171            Add(taso);
172            taso.Position = kentanPiste;
173            taso.Image = tasoKuva;
174            taso.Tag = "taso";
175            AddCollisionHandler(ukko, taso, CollisionHandler.PlaySound("hit"));
176
177        }
178
179        for (int i = 0; i < 20; i++)
180        { 
181            Vector pisteenPiste = Level.GetRandomPosition();
182
183            PhysicsObject piste = new PhysicsObject(60, 60);
184            piste.IgnoresGravity = true;
185            Add(piste);
186            piste.Position = pisteenPiste;
187            piste.Color = Color.Blue;
188            piste.Tag = "piste";
189            piste.Image = doritosKuva;
190        }
191
192
193
194        Gravity = new Vector(0.0, -800.0);
195
196        Level.Background.Image = taustaKuvat[kenttaNro-1];
197           
198        //Camera.ZoomToLevel();
199        Level.CreateBorders(1, 1, 2, 1.0, Color.Transparent);
200        //Level.Size = new Vector(1650, 1050);           
201        //Level.Background.FitToLevel();
202
203        LiikutaUkkoa();
204
205        LuoPistelaskuri();
206
207        // TODO: Kirjoita ohjelmakoodisi tähän
208
209        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
210        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
211    }
212
213    void PelaajatTormaavat(PlatformCharacter ukko, PhysicsObject taso )
214    {
215        AddCollisionHandler(ukko, taso, CollisionHandler.PlaySound("hit"));
216
217    }
218
219    void PelaajaKuolee(PhysicsObject ukko, PhysicsObject kohde)
220    {
221        ukko.Destroy();
222        kenttaNro = 1;
223    }
224
225    void Rajahdys(PhysicsObject ukko, PhysicsObject piste)
226    {
227
228        int pMaxMaara = 100;
229
230        ExplosionSystem rajahdys = new ExplosionSystem(LoadImage("kalia"), pMaxMaara);
231        Add(rajahdys);
232        double x = piste.X;
233        double y = piste.Y;
234        int pMaara = 10;
235        rajahdys.AddEffect(x, y, pMaara);
236
237    }
238}
Note: See TracBrowser for help on using the repository browser.