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

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