source: 2016/25/SaanaR/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1.cs @ 7488

Revision 7488, 7.3 KB checked in by koannak, 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 Tasohyppelypeli1 : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 850;
13    const int RUUDUN_KOKO = 40;
14    PhysicsObject teleportUlos;
15    PlatformCharacter pelaaja1;
16    int kolikoidenMaara = 0;
17    string[] kentat = new string[] { "kentta1", "kentta2", "kentta3", "kentta4", "kentta5" };
18    int kenttaMenossa = 0;
19    Image pelaajanKuva = LoadImage("kärpänen");
20    Image kolikkoKuva = LoadImage("Piste");
21    Image AmpiaisenKuva = LoadImage("Ampiainen");
22
23    SoundEffect maaliAani = LoadSoundEffect("Kolikko");
24    SoundEffect hyppyAani = LoadSoundEffect("hyppy");
25    Image pilvenreunat = LoadImage("Pilvi");
26    public override void Begin()
27    {
28        LuoAlkuvalikko();
29    }
30    void LuoAlkuvalikko ()
31    {
32        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
33"Aloita peli", "Lopeta");
34        Add(alkuValikko);
35        alkuValikko.AddItemHandler(0, AloitaPeli);
36        alkuValikko.AddItemHandler(1, Exit);
37        alkuValikko.Color = Color.BlueGray;
38    }
39    void AloitaPeli ()
40    {
41        Gravity = new Vector(0, -1000);
42
43        LuoKentta();
44        LisaaNappaimet();
45
46        Camera.Follow(pelaaja1);
47        Camera.ZoomFactor = 1.2;
48        Camera.StayInLevel = true;
49    }
50    void LisaaAse (Vector paikka, double leveys, double korkeus)
51    {
52        PhysicsObject ase = new PhysicsObject(leveys, korkeus/3);
53        ase.Position = paikka;
54        ase.Tag = "ase";
55        ase.Image = LoadImage("ase");
56        Add(ase);
57    }
58    void LuoKentta()
59    {
60        TileMap kentta = TileMap.FromLevelAsset(kentat[kenttaMenossa]);
61        kentta.SetTileMethod('#', LisaaTaso, "taso");
62        kentta.SetTileMethod('*', LisaaKolikko);
63        kentta.SetTileMethod('A', LisaaAmpiainen);
64        kentta.SetTileMethod('N', LisaaPelaaja);
65        kentta.SetTileMethod('-', LisaaAse);
66        kentta.SetTileMethod('T', LisaaTaso, "Teleport");
67        kentta.SetTileMethod('U', LisaaTaso, "TeleportUlos");
68        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
69        Level.CreateBorders();
70        Level.Background.CreateGradient(Color.LightBlue, Color.SkyBlue);
71    }
72    void LisaaAmpiainen(Vector paikka, Double  leveys, double korkeus)
73    {
74        PhysicsObject ampiainen = new PhysicsObject(leveys, korkeus);
75        ampiainen.Position = paikka;
76        ampiainen.IgnoresGravity = true;
77        Add(ampiainen);
78        ampiainen.Image = AmpiaisenKuva;
79        PathFollowerBrain aivot = new PathFollowerBrain(paikka, paikka+new Vector(-680,0));
80        ampiainen.Brain = aivot;
81        ampiainen.Tag = "ampiainen";
82        aivot.Loop = true;
83    }
84    void LisaaTaso(Vector paikka, double leveys, double korkeus, string tyyppi)
85    {
86        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
87        taso.IgnoresExplosions = true;
88        taso.Position = paikka;
89        taso.Shape = Shape.FromImage(pilvenreunat);
90        taso.Image = pilvenreunat;
91        taso.Color = Color.White;
92        taso.Tag = tyyppi;
93        Add(taso);
94        if (tyyppi.Equals("TeleportUlos")) teleportUlos = taso;
95       
96    }
97
98    void LisaaKolikko(Vector paikka, double leveys, double korkeus)
99    {
100        PhysicsObject kolikko = PhysicsObject.CreateStaticObject(leveys, korkeus);
101        kolikko.IgnoresCollisionResponse = true;
102        kolikko.IgnoresExplosions = true;
103        kolikko.Position = paikka;
104        kolikko.Image = kolikkoKuva;
105        kolikko.Tag = "Piste";
106        kolikoidenMaara++;
107        Add(kolikko);
108    }
109
110    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
111    {
112        pelaaja1 = new PlatformCharacter(leveys, korkeus);
113        pelaaja1.Position = paikka;
114        pelaaja1.Mass = 4.0;
115        pelaaja1.Image = pelaajanKuva;
116        AddCollisionHandler(pelaaja1, "Piste", TormaaKolikkoon);
117        AddCollisionHandler(pelaaja1, "ampiainen", TörmääAmpiaiseen);
118        AddCollisionHandler(pelaaja1, "ase", OtaAse);
119        AddCollisionHandler(pelaaja1, "Teleport", SiirraPelaajaa);
120
121        Add(pelaaja1);
122    }
123    void SiirraPelaajaa (PhysicsObject pelaaja, PhysicsObject teleport)
124    {
125        pelaaja1.Position = teleportUlos.Position;
126        pelaaja1.X += pelaaja.Height;
127        pelaaja1.Velocity = Vector.Zero;
128    }
129    void OtaAse (PhysicsObject pelaaja, PhysicsObject ase)
130    {
131        pelaaja1.Weapon = new AssaultRifle(20, 10);
132        ase.Destroy();
133        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
134    }
135    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
136    {
137        ammus.Destroy();
138        Explosion ammusRajahdys = new Explosion(100);
139        ammusRajahdys.Position = kohde.Position;
140        Add(ammusRajahdys);
141        ammusRajahdys.Speed = 170.0;
142        ammusRajahdys.Force = 5;
143        if (kohde.Tag.Equals("ampiainen")) kohde.Destroy();
144       
145    }
146    void TörmääAmpiaiseen (PhysicsObject pelaaja, PhysicsObject ampiainen)
147    {
148        AloitaAlusta();
149
150    }
151    void AloitaAlusta ()
152    {
153        ClearAll();
154        Begin();
155    }
156    void LisaaNappaimet()
157
158    {
159        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
160        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
161
162        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
163        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
164        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
165
166        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
167
168        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
169        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
170        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
171        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
172
173        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
174    }
175
176    void Liikuta(PlatformCharacter hahmo, double nopeus)
177    {
178        hahmo.Walk(nopeus);
179    }
180    void AmmuAseella(PlatformCharacter pelaaja)
181    {
182        PhysicsObject ammus = pelaaja.Weapon.Shoot();
183
184        if (ammus != null)
185        {
186            ammus.IgnoresExplosions = true;
187            //ammus.Size *= 3;
188            //ammus.Image = ...
189            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
190        }
191    }
192
193    void Hyppaa(PlatformCharacter hahmo, double nopeus)
194    {
195        hahmo.Jump(nopeus);
196        hyppyAani.Play();
197    }
198
199    void TormaaKolikkoon(PhysicsObject hahmo, PhysicsObject tahti)
200    {
201        maaliAani.Play();
202        MessageDisplay.Add("You get the coin!");
203        tahti.Destroy();
204        kolikoidenMaara--;
205
206        if (kolikoidenMaara <= 00) SiirrySeuraavaanKenttaan();
207    }
208    void SiirrySeuraavaanKenttaan ()
209    {
210        ClearAll();
211        kenttaMenossa++;
212        if (kenttaMenossa >= kentat.Length) LuoAlkuvalikko();
213        AloitaPeli();
214    }
215
216}
Note: See TracBrowser for help on using the repository browser.