source: 2015/30/SamuliP/TheSidescrollsArena/TheSideScrolls/TheSideScrolls/TheSideScrolls/TheSideScrolls.cs @ 7006

Revision 7006, 9.1 KB checked in by samsimpo, 7 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 TheSideScrolls : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    DoubleMeter elamaLaskuri;
16    IntMeter ammustenmaara = new IntMeter(0, 0, 25);
17    PlatformCharacter pelaaja1;
18
19    Image pelaajanKuva = LoadImage("shoulder");
20    Image tahtiKuva = LoadImage("gem");
21    Image topdirtKuva = LoadImage("topdirt");
22    SoundEffect maaliAani = LoadSoundEffect("maali");
23    Image downdirtKuva = LoadImage("downdirt");
24    Image stoneKuva = LoadImage("stone");
25    Image possuKuva = LoadImage("the-boar");
26    Image aseKuva = LoadImage("the-boar");
27    Image ammoKuva = LoadImage("boar-ammo");
28    Image backroundKuva = LoadImage("rainbow");
29    Image tileKuva = LoadImage("tile");
30    public override void Begin()
31    {
32        ClearAll();
33        ammustenmaara.Value = 0;
34        Gravity = new Vector(0, -1000);
35        LuoKentta();
36        LisaaNappaimet();
37        LuoElamaLaskuri();
38
39        Camera.Follow(pelaaja1);
40        Camera.ZoomFactor = 1.2;
41        Camera.StayInLevel = true;
42
43    }
44    void LuoElamaLaskuri()
45    {
46        elamaLaskuri = new DoubleMeter(5);
47        elamaLaskuri.MaxValue = 5;
48        elamaLaskuri.LowerLimit += ElamaLoppui;
49
50        ProgressBar elamaPalkki = new ProgressBar(150, 20);
51        elamaPalkki.X = Screen.Left + 150;
52        elamaPalkki.Y = Screen.Top - 20;
53        elamaPalkki.BindTo(elamaLaskuri);
54        Add(elamaPalkki);
55        elamaPalkki.Angle = Angle.RightAngle;
56        elamaPalkki.Color = Color.Transparent;
57
58        elamaPalkki.BarColor = Color.Red;
59
60        elamaPalkki.BorderColor = Color.Black;
61    }
62    void ElamaLoppui()
63    {
64        MessageDisplay.Add("You Dieded");
65        pelaaja1.Destroy();
66        pelaaja1.Weapon.Destroy();
67    }
68    void LuoPanosLaskuri()
69    {
70
71        Label panosNaytto = new Label();
72        panosNaytto.X = Screen.Left + 200;
73        panosNaytto.Y = Screen.Top -120;
74        panosNaytto.TextColor = Color.Black;
75        panosNaytto.Color = Color.White;
76
77        panosNaytto.BindTo(ammustenmaara);
78        Add(panosNaytto);
79        panosNaytto.Title = "Boar count";
80        panosNaytto.IntFormatString = "{0}/" + ammustenmaara.MaxValue;
81
82
83    }
84    void LuoKentta()
85    {
86        TileMap kentta = TileMap.FromLevelAsset("kentta1");
87        kentta.SetTileMethod('S', LisaaKivi);
88        kentta.SetTileMethod('D', LisaaTaso2);
89        kentta.SetTileMethod('d', LisaaFakeDirt);
90        kentta.SetTileMethod('T', LisaaTaso);
91        kentta.SetTileMethod('*', LisaaTahti);
92        kentta.SetTileMethod('P', LisaaPahis);
93        kentta.SetTileMethod('N', LisaaPelaaja);
94        kentta.SetTileMethod('A', LisaaAmmo);
95        kentta.SetTileMethod('t', LisaaTile);
96        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
97        Level.CreateBorders();
98        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
99        Level.Background.Image = backroundKuva;
100        LuoPanosLaskuri();
101    }
102    void LisaaTile(Vector paikka, double leveys, double korkeus)
103    {
104    PhysicsObject tile = PhysicsObject.CreateStaticObject(leveys, korkeus);
105        tile.Position = paikka;
106        Add(tile);
107        tile.Image = tileKuva;
108        tile.IgnoresCollisionResponse = true;
109    }
110   
111
112    void LisaaTaso(Vector paikka, double leveys, double korkeus)
113    {
114        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
115        taso.Position = paikka;
116        Add(taso);
117        taso.Image = topdirtKuva;
118    }
119    void LisaaTaso2(Vector paikka, double leveys, double korkeus)
120    {
121        PhysicsObject taso2 = PhysicsObject.CreateStaticObject(leveys, korkeus);
122        taso2.Position = paikka;
123        Add(taso2);
124        taso2.Image = downdirtKuva;
125    }
126    void LisaaFakeDirt(Vector paikka, double leveys, double korkeus)
127    {
128        PhysicsObject fdirt = PhysicsObject.CreateStaticObject(leveys, korkeus);
129        fdirt.Position = paikka;
130        Add(fdirt);
131        fdirt.Image = downdirtKuva;
132        fdirt.IgnoresCollisionResponse = true;
133    }
134    void LisaaKivi(Vector paikka, double leveys, double korkeus)
135    {
136        PhysicsObject kivi = PhysicsObject.CreateStaticObject(leveys, korkeus);
137        kivi.Position = paikka;
138        Add(kivi);
139        kivi.Image = stoneKuva;
140        kivi.IsVisible = false;
141    }
142    void LisaaTahti(Vector paikka, double leveys, double korkeus)
143    {
144        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
145        tahti.IgnoresCollisionResponse = true;
146        tahti.Position = paikka;
147        tahti.Image = tahtiKuva;
148        tahti.Tag = "tahti";
149        Add(tahti);
150    }
151
152    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
153    {
154        pelaaja1 = new PlatformCharacter(50, 50);
155        pelaaja1.Position = paikka;
156        pelaaja1.Mass = 4.0;
157        pelaaja1.Image = pelaajanKuva;
158        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
159        Add(pelaaja1);
160
161        pelaaja1.Weapon = new AssaultRifle(40, 25);
162
163        pelaaja1.Weapon.Ammo.Value = 0;
164
165        pelaaja1.Weapon.Ammo.MaxValue = 25;
166
167        pelaaja1.Weapon.CanHitOwner = true;
168
169        pelaaja1.Weapon.FireRate = 5.0;
170
171        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
172
173        pelaaja1.Weapon.Image = aseKuva;
174
175        AddCollisionHandler(pelaaja1, "pahis", VihollisTormaus);
176
177        AddCollisionHandler(pelaaja1, "ammo", AmmoKeräys);
178    }
179
180    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
181    {
182        //ammus.Destroy
183    }
184    void AmmuAseella(PlatformCharacter pelaaja)
185    {
186
187        PhysicsObject ammus = pelaaja.Weapon.Shoot();
188        if (ammus != null)
189        {
190            ammustenmaara.Value--;
191            pelaaja1.Weapon.Ammo.Value = ammustenmaara;
192            ammus.Image = possuKuva;
193            ammus.Size *= 12;
194            ammus.MaximumLifetime = TimeSpan.FromSeconds(10.0);
195            ammus.Tag = "ammus";
196            ammus.IgnoresGravity = true;
197        }
198    }
199    void LisaaAmmo(Vector paikka, double leveys, double korkeus)
200    {
201        PhysicsObject ammo = PhysicsObject.CreateStaticObject(leveys, korkeus);
202        ammo.IgnoresCollisionResponse = true;
203        ammo.Position = paikka;
204        ammo.Image = ammoKuva;
205        ammo.Tag = "ammo";
206        Add(ammo);
207    }
208    void LisaaNappaimet()
209    {
210        Keyboard.Listen(Key.R, ButtonState.Pressed, Begin, "restart game");
211        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
212        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
213
214        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
215        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
216        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
217
218        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
219
220        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
221        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
222        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
223
224        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
225
226        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
227    }
228
229    void Liikuta(PlatformCharacter hahmo, double nopeus)
230    {
231        hahmo.Walk(nopeus);
232    }
233
234    void Hyppaa(PlatformCharacter hahmo, double nopeus)
235    {
236        hahmo.Jump(nopeus);
237    }
238
239    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
240    {
241        maaliAani.Play();
242        MessageDisplay.Add("You got the gem but your princess is on top of another castle :D");
243        tahti.Destroy();
244        hahmo.Destroy();
245        pelaaja1.Weapon.Destroy();
246    }
247    void LisaaPahis(Vector paikka, double leveys, double korkeus)
248    {
249        PhysicsObject pahis = new PhysicsObject(leveys, korkeus);
250        pahis.Shape = Shape.Rectangle;
251        pahis.Mass = 10.0;
252        Add(pahis);
253        pahis.Image = possuKuva;
254        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(200);
255        AddCollisionHandler(pahis, "ammus", AmmusTormaus);
256        satunnaisAivot.ChangeMovementSeconds = 3;
257        pahis.Tag = "pahis";
258        pahis.Brain = satunnaisAivot;
259
260    }
261    void AmmusTormaus(PhysicsObject tormaaja, PhysicsObject kohde)
262    {
263        tormaaja.Destroy();
264        MessageDisplay.Add("xp added");
265       
266    }
267    void VihollisTormaus(PhysicsObject tormaaja, PhysicsObject kohde)
268    {
269        elamaLaskuri.Value -= 1;
270    }
271    void AmmoKeräys(PhysicsObject tormaaja, PhysicsObject kohde)
272    {
273        pelaaja1.Weapon.Ammo.Value = +1;
274        ammustenmaara.Value++;
275        kohde.Destroy();
276    }
277}
Note: See TracBrowser for help on using the repository browser.