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

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