source: 2013/26/OskariN/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1.cs @ 4246

Revision 4246, 10.3 KB checked in by osjoneuv, 7 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Pelaaja : PlatformCharacter
10{
11    public ListenContext tikkaillaNappaimet;
12    public ListenContext poisTikkailtaNappaimet;
13
14    public Pelaaja(double leveys, double korkeus)
15        : base(leveys, korkeus)
16    {
17        IsUpdated = true;
18    }
19
20    public override void Update(Time time)
21    {
22        base.Update(time);
23    }
24}
25
26public class Tasohyppelypeli1 : PhysicsGame
27{
28    const double nopeus = 375;
29    const double hyppyNopeus = 550;
30    const int RUUDUN_KOKO = 40;
31
32    Pelaaja pelaaja1;
33    Pelaaja pelaaja2;
34
35    Image luodinKuva = LoadImage("luoti");
36    Image pelaajanKuva2 = LoadImage("pelaaja2 (2)");
37    Image pelaajanKuva = LoadImage("player3");
38    Image aseKuva = LoadImage("gun");
39    Image tikasKuva = LoadImage("Tikkaat");
40
41    DoubleMeter elamaLaskuri1;
42    DoubleMeter elamalaskuri2;
43
44
45    public override void Begin()
46    {
47        Gravity = new Vector(0, -1000);
48        LuoKentta();
49        LisaaNappaimet();
50        Camera.ZoomToLevel();
51        MediaPlayer.Play("game music");
52        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
53        "Aloita peli", "Lopeta");
54        alkuValikko.Color = Color.Black;
55       
56       
57        Add(alkuValikko);
58       
59
60    }
61
62    DoubleMeter LuoElamaLaskuri(double x, double y, Pelaaja pelaaja)
63    {
64       DoubleMeter elamaLaskuri = new DoubleMeter(10);
65        elamaLaskuri.MaxValue = 10;
66        elamaLaskuri.LowerLimit += delegate {
67            ElamaLoppui(pelaaja);
68            elamaLaskuri.Image = LoadImage("");
69            elamaLAskuri.BarImage = LoadImage("");
70        };
71
72        ProgressBar elamaPalkki = new ProgressBar(150, 20);
73        elamaPalkki.X = x;
74        elamaPalkki.Y = y;
75        elamaPalkki.BindTo(elamaLaskuri);
76        Add(elamaPalkki);
77        return elamaLaskuri;
78    }
79
80    void ElamaLoppui(Pelaaja pelaaja)
81    {
82        MessageDisplay.Add("HaHaHa!!! You're dead!");
83        pelaaja.Destroy();
84    }
85
86
87    void LuoKentta()
88    {
89        pelaaja1 = LuoPelaaja(RUUDUN_KOKO, RUUDUN_KOKO, pelaajanKuva);
90        pelaaja2 = LuoPelaaja(RUUDUN_KOKO, RUUDUN_KOKO, pelaajanKuva2);
91        TileMap kentta = TileMap.FromLevelAsset("pelitausta");
92        kentta.SetTileMethod('#', LisaaTaso);
93        kentta.SetTileMethod('*', LisaaAse);
94        kentta.SetTileMethod('N', LisaaPelaaja, pelaaja1);
95        kentta.SetTileMethod('M', LisaaPelaaja, pelaaja2);
96        kentta.SetTileMethod('H', LisaaTikkaat);
97        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
98        Level.CreateBorders();
99        Level.Background.CreateGradient(Color.White, Color.White);
100        elamaLaskuri1 = LuoElamaLaskuri(Screen.Right - 150, Screen.Top - 150, pelaaja1);
101       elamalaskuri2 = LuoElamaLaskuri(Screen.Left +150, Screen.Top - 150, pelaaja2); 
102    }
103
104    void AloitaPeli()
105    { 
106    }
107
108    void ParhaatPisteet()
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        taso.Color = Color.Blue;
117        Add(taso);
118    }
119    void LisaaTikkaat(Vector paikka, double leveys, double korkeus)
120    {
121        PhysicsObject tikkaat = PhysicsObject.CreateStaticObject(leveys, korkeus);
122        tikkaat.Position = paikka;
123         tikkaat.Image = tikasKuva;
124        tikkaat.IgnoresCollisionResponse = true;
125        tikkaat.Tag = "tikkaat";
126        Add(tikkaat);
127    }
128
129   
130
131    void LisaaAse(Vector paikka, double leveys, double korkeus)
132    {
133        PhysicsObject ase = PhysicsObject.CreateStaticObject(leveys, korkeus);
134        ase.IgnoresCollisionResponse = true;
135        ase.Position = paikka;
136        ase.Image = aseKuva;
137        ase.Tag = "gun";
138        Add(ase);
139    }
140
141    Pelaaja LuoPelaaja(double leveys, double korkeus, Image kuva)
142    {
143        Pelaaja pelaaja = new Pelaaja(leveys, korkeus);
144        pelaaja.Image = kuva;
145        return pelaaja;
146    }
147
148    void LisaaPelaaja(Vector paikka, double leveys, double korkeus, Pelaaja pelaaja)
149    {
150        pelaaja.Position = paikka;
151        pelaaja.Mass = 4.0;
152        // AddCollisionHandler(pelaaja1, "tikkaat", delegate(PhysicsObject tormaaja, PhysicsObject kohde) { pelaaja1.StopVertical(); });
153        Add(pelaaja);
154
155        pelaaja.Weapon = new PlasmaCannon (30, 10);
156        pelaaja.Weapon.Ammo.Value = 1000;
157        pelaaja.Weapon.ProjectileCollision = AmmusOsui;
158        pelaaja.
159        Timer onkoTikkaillaAjastin = new Timer();
160        onkoTikkaillaAjastin.Interval = 0.1;
161        onkoTikkaillaAjastin.Timeout += delegate
162        {
163                if (GetObjectsAt(pelaaja.Position, "tikkaat", pelaaja.Width / 2).Count > 0)
164            {
165                // pelaaja1.StopVertical();
166                pelaaja.IgnoresGravity = true;
167                pelaaja.poisTikkailtaNappaimet.Disable();
168                pelaaja.tikkaillaNappaimet.Enable();
169            }
170            else
171            {
172                pelaaja.IgnoresGravity = false;
173                pelaaja.poisTikkailtaNappaimet.Enable();
174                pelaaja.tikkaillaNappaimet.Disable();
175            }
176        };
177        onkoTikkaillaAjastin.Start();
178
179        AssaultRifle ase = new AssaultRifle(20, 5);
180        ase.ProjectileCollision = AmmusOsui;
181        PlasmaCannon plasmaTykki = new PlasmaCannon(20, 5);
182        plasmaTykki.ProjectileCollision = AmmusOsui;
183        Cannon tykki = new Cannon(50, 10);
184        tykki.ProjectileCollision = AmmusOsui;
185        Grenade kranaatti = new Grenade(4.0);
186        ase.InfiniteAmmo = true;
187        plasmaTykki.InfiniteAmmo = true;
188        tykki.InfiniteAmmo = true;
189    }
190
191   
192
193    void AmmuAseella(PlatformCharacter pelaaja)
194    {
195        PhysicsObject ammus = pelaaja.Weapon.Shoot();
196
197        if (ammus != null)
198        {
199            ammus.Size *= 3;
200            ammus.Image = luodinKuva;
201            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
202        }
203    }
204
205    void HeitaKranaatti(PlatformCharacter pelaaja)
206    {
207        Grenade kranu = new Grenade(4.0);
208        ClusterGrenade kranaatti = new ClusterGrenade(4.0, 2);
209        kranaatti.NumberOfClusters = 6;
210        pelaaja.Throw(kranu, Angle.FromDegrees(30), 10000);
211        kranu.Explosion.ShockwaveReachesObject += KranaattiOsui;
212        Add(kranaatti);
213    } 
214
215
216    void KranaattiOsui(IPhysicsObject rajahdyksenKohde, Vector v)
217    {
218        rajahdyksenKohde.Destroy();
219    }
220
221    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
222    {
223        ammus.Destroy();
224        if (kohde == pelaaja1)
225        {
226            elamaLaskuri1.Value -= 3;
227        }
228
229        if (kohde == pelaaja2)
230        {
231            elamalaskuri2.Value -= 3;
232        }
233    }
234
235    void LisaaNappaimet()
236    {
237        pelaaja1.tikkaillaNappaimet = ControlContext.CreateSubcontext();
238        pelaaja1.poisTikkailtaNappaimet = ControlContext.CreateSubcontext();
239        pelaaja2.tikkaillaNappaimet = ControlContext.CreateSubcontext();
240        pelaaja2.poisTikkailtaNappaimet = ControlContext.CreateSubcontext();
241
242        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
243        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
244
245        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
246        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
247        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus).InContext(pelaaja1.poisTikkailtaNappaimet);
248
249        Keyboard.Listen(Key.Up, ButtonState.Down, LiikkuuTikkailla, "Pelaaja liikkuu tikkailla", pelaaja1, 500.0).InContext(pelaaja1.tikkaillaNappaimet);
250        Keyboard.Listen(Key.Down, ButtonState.Down, LiikkuuTikkailla, "Pelaaja liikkuu tikkailla", pelaaja1, -500.0).InContext(pelaaja1.tikkaillaNappaimet);
251        Keyboard.Listen(Key.Up, ButtonState.Released, LiikkuuTikkailla, "Pelaaja liikkuu tikkailla", pelaaja1, 0.0).InContext(pelaaja1.tikkaillaNappaimet);
252        Keyboard.Listen(Key.Down, ButtonState.Released, LiikkuuTikkailla, "Pelaaja liikkuu tikkailla", pelaaja1, 0.0).InContext(pelaaja1.tikkaillaNappaimet);
253
254        Keyboard.Listen(Key.O, ButtonState.Down, Tahtaa, "Tähtää ylös", pelaaja1.Weapon, Angle.FromDegrees(1));
255        Keyboard.Listen(Key.L, ButtonState.Down, Tahtaa, "Tähtää alas", pelaaja1.Weapon, Angle.FromDegrees(-1));
256        Keyboard.Listen(Key.M, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
257        Keyboard.Listen(Key.G, ButtonState.Down, AmmuAseella, "Ammu", pelaaja2);
258
259        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, -nopeus);
260        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja2, nopeus);
261        Keyboard.Listen(Key.W, ButtonState.Down, LiikkuuTikkailla, "Pelaaja liikkuu tikkailla", pelaaja2, 500.0).InContext(pelaaja2.tikkaillaNappaimet);
262        Keyboard.Listen(Key.S, ButtonState.Down, LiikkuuTikkailla, "Pelaaja liikkuu tikkailla", pelaaja2, -500.0).InContext(pelaaja2.tikkaillaNappaimet);
263        Keyboard.Listen(Key.W, ButtonState.Released, LiikkuuTikkailla, "Pelaaja liikkuu tikkailla", pelaaja2, 0.0).InContext(pelaaja2.tikkaillaNappaimet);
264        Keyboard.Listen(Key.S, ButtonState.Released, LiikkuuTikkailla, "Pelaaja liikkuu tikkailla", pelaaja2, 0.0).InContext(pelaaja2.tikkaillaNappaimet);
265        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja2, hyppyNopeus).InContext(pelaaja2.poisTikkailtaNappaimet); ;
266        Keyboard.Listen(Key.Y, ButtonState.Down, Tahtaa, "Tähtää ylös", pelaaja2.Weapon, Angle.FromDegrees(1));
267        Keyboard.Listen(Key.H, ButtonState.Down, Tahtaa, "Tähtää alas", pelaaja2.Weapon, Angle.FromDegrees(1));
268    }
269
270    void LiikkuuTikkailla(Pelaaja pelaaja, double nopeus)
271    {
272        pelaaja.Velocity = new Vector(0, nopeus);
273    }
274
275    void Tahtaa(Weapon ase, Angle kulma)
276    {
277        ase.Angle += kulma;
278    }
279
280    void Liikuta(PlatformCharacter hahmo, double nopeus)
281    {
282        hahmo.Walk(nopeus);
283    }
284
285    void Hyppaa(PlatformCharacter hahmo, double nopeus)
286    {
287        hahmo.Jump(nopeus);
288    }
289}
290
Note: See TracBrowser for help on using the repository browser.