source: 2010/30/mikmatla/NinjaPeli/Peli.cs @ 1456

Revision 1456, 7.7 KB checked in by mikmatla, 11 years ago (diff)
Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5
6
7class Tasohyppely : PhysicsGame
8{
9    const double nopeus = 200;
10    const double hyppyVoima = 4000;
11
12    const int ruudunLeveys = 30;
13    const int ruudunKorkeus = 40;
14
15    PlatformCharacter pelaaja1;
16    PlatformCharacter pelaaja2;
17
18    DoubleMeter voimaPelaaja1;
19    DoubleMeter voimaPelaaja2;
20
21    Image NinjaKuoli = LoadImage("Ninja Kuoli");
22    Image PiraattiKuoli = LoadImage("Piraatti Kuoli");
23
24    Image paikallaanVasemmalle;
25    Image paikallaanVasemmalle2;
26    Image paikallaanOikealle = LoadImage("Pelaaja");
27    Image paikallaanOikealle2 = LoadImage("Pelaaja2");
28
29    Image[] kavelyVasemmalle;
30    Image[] kavelyVasemmalle2;
31    Image[] kavelyOikealle = LoadImages("Pelaaja Juoksu1", "Pelaaja Juoksu2", "Pelaaja Juoksu3", "Pelaaja Juoksu4");
32    Image[] kavelyOikealle2 = LoadImages("Pelaaja2 Juoksu1", "Pelaaja2 Juoksu2", "Pelaaja2 Juoksu3", "Pelaaja2 Juoksu4");
33
34    protected override void Begin()
35    {
36
37        paikallaanVasemmalle = Image.Mirror(paikallaanOikealle);
38        kavelyVasemmalle = Image.Mirror(kavelyOikealle);
39        paikallaanVasemmalle2 = Image.Mirror(paikallaanOikealle2);
40        kavelyVasemmalle2 = Image.Mirror(kavelyOikealle2);
41
42        luoKentta();
43
44    }
45
46    void luoKentta()
47    {
48        ClearAll();
49
50        Gravity = new Vector(0, -1200);
51
52        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
53
54        lisaaPelaaja1();
55        lisaaPelaaja2();
56
57        TileMap ruudut = TileMap.FromFile("kentta1.txt");
58        ruudut['='] = LuoPalikka;
59        ruudut['1'] = LuoPelaaja1;
60        ruudut['2'] = LuoPelaaja2;
61        ruudut['E'] = LuoExit;
62        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
63
64        lisaaNappaimet();
65
66        voimaPelaaja1 = LuoVoimamittari(500, 500);
67        voimaPelaaja1.LowerLimit += VoimaLoppuiPelaaja1;
68
69        voimaPelaaja2 = LuoVoimamittari(-500, 500);
70        voimaPelaaja2.LowerLimit += VoimaLoppuiPelaaja2;
71
72
73        Camera.ZoomToLevel();
74
75    }
76
77    PhysicsObject LuoExit()
78    {
79        PhysicsObject exit = PhysicsObject.CreateStaticObject(20.0, 100.0);
80        exit.Shape = Shapes.Rectangle;
81        exit.Restitution = 1.0;
82       
83        Add(exit);
84
85        return exit;
86    }
87   
88    PhysicsObject LuoPelaaja1()
89    {
90        PhysicsObject palikka = pelaaja1;
91        return palikka;
92    }
93
94    PhysicsObject LuoPelaaja2()
95    {
96        PhysicsObject palikka = pelaaja2;
97        return palikka;
98    }
99
100    PhysicsObject LuoPalikka()
101    {
102        PhysicsObject palikka = PhysicsObject.CreateStaticObject(50.0, 50.0);
103        palikka.Color = Color.Gray;
104        return palikka;
105    }
106
107    void lisaaTaso(double x, double y)
108    {
109        PhysicsObject taso = PhysicsObject.CreateStaticObject(100, 30);
110        taso.Color = Color.Green;
111        taso.X = x;
112        taso.Y = y;
113        taso.Tag = "taso";
114        Add(taso);
115    }
116
117    void lisaaPelaaja1()
118    {
119        pelaaja1 = new PlatformCharacter(30, 50);
120        pelaaja1.Mass = 4.0;
121        pelaaja1.Image = LoadImage("Pelaaja");
122        pelaaja1.X = 0;
123        pelaaja1.Y = Level.Bottom + 120;
124
125        Add(pelaaja1);
126
127        AssaultRifle pyssy = new AssaultRifle(0, 0);
128        pelaaja1.Weapon = pyssy;
129        pyssy.BulletCollision = Luoti1Osuu;
130       
131        pyssy.Angle += Angle.Degrees(7);
132
133        pelaaja1.LeftIdleAnimation = new Animation(paikallaanVasemmalle2);
134        pelaaja1.RightIdleAnimation = new Animation(paikallaanOikealle2);
135
136        pelaaja1.LeftWalkingAnimation = new Animation(kavelyVasemmalle2);
137        pelaaja1.RightWalkingAnimation = new Animation(kavelyOikealle2);
138
139    }
140
141    void lisaaPelaaja2()
142    {
143        pelaaja2 = new PlatformCharacter(30, 50);
144        pelaaja2.Mass = 4.0;
145        pelaaja2.Image = LoadImage("Pelaaja2");
146        pelaaja2.X = 0;
147        pelaaja2.Y = Level.Bottom + 120;
148
149        Add(pelaaja2);
150
151        AssaultRifle pyssy = new AssaultRifle(0, 0);
152        pelaaja2.Weapon = pyssy;
153        pyssy.BulletCollision = Luoti2Osuu;
154        pyssy.Angle += Angle.Degrees(7);
155
156        pelaaja2.LeftIdleAnimation = new Animation(paikallaanVasemmalle);
157        pelaaja2.RightIdleAnimation = new Animation(paikallaanOikealle);
158
159        pelaaja2.LeftWalkingAnimation = new Animation(kavelyVasemmalle);
160        pelaaja2.RightWalkingAnimation = new Animation(kavelyOikealle);
161
162    }
163
164
165    void lisaaNappaimet()
166    {
167        Keyboard.Listen(Key.F2, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
168        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
169
170        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Piraatti: Liikkuu vasemmalle", pelaaja1, -nopeus);
171        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Piraatti: Liikkuu oikealle", pelaaja1, nopeus);
172        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Piraatti: Hyppää", pelaaja1, hyppyVoima);
173        Keyboard.Listen(Key.RightControl, ButtonState.Down, pelaaja1.Weapon.Use, "Piraatti: Ammu");
174
175        Keyboard.Listen(Key.A, ButtonState.Down, liikuta, "Ninja: Liikkuu vasemmalle", pelaaja2, -nopeus);
176        Keyboard.Listen(Key.D, ButtonState.Down, liikuta, "Ninja: Liikkuu oikealle", pelaaja2, nopeus);
177        Keyboard.Listen(Key.W, ButtonState.Pressed, hyppaa, "Ninja: Hyppää", pelaaja2, hyppyVoima);
178        Keyboard.Listen(Key.LeftControl, ButtonState.Down, pelaaja2.Weapon.Use, "Ninja: Ammu");
179    }
180
181    void liikuta(PlatformCharacter hahmo, double nopeus)
182    {
183        hahmo.Walk(nopeus);
184    }
185
186    void hyppaa(PlatformCharacter hahmo, double voima)
187    {
188        hahmo.Jump(voima);
189    }
190
191    void Luoti1Osuu(PhysicsObject luoti, PhysicsObject toinen)
192    {
193        if (toinen != pelaaja1)
194        {
195            luoti.Destroy();
196            Explosion rajahdys = new Explosion(40);
197            rajahdys.Force = 100;
198            rajahdys.Position = luoti.Position;
199            Add(rajahdys);
200        }
201
202        if (toinen == pelaaja2)
203        {
204            voimaPelaaja2.Value--;
205        }
206
207    }
208    void Luoti2Osuu(PhysicsObject luoti, PhysicsObject toinen)
209    {
210
211        if (toinen != pelaaja2)
212        {
213            luoti.Destroy();
214            Explosion rajahdys = new Explosion(40);
215            rajahdys.Force = 100;
216            rajahdys.Position = luoti.Position;
217            Add(rajahdys);
218           
219        }
220
221        if (toinen == pelaaja1)
222        {
223            voimaPelaaja1.Value--;
224        }
225    }
226
227
228    DoubleMeter LuoVoimamittari(double x, double y)
229    {
230        DoubleMeter voimaMittari = new DoubleMeter(10);
231        voimaMittari.MaxValue = 10;
232        BarGauge voimaPalkki = new BarGauge(20, 150);
233        voimaPalkki.BindTo(voimaMittari);
234        Add(voimaPalkki);
235
236        voimaPalkki.X = x;
237        voimaPalkki.Y = y;
238        voimaPalkki.BarColor = Color.Black;
239        voimaPalkki.BorderColor = Color.Black;
240        voimaPalkki.Angle = Angle.Degrees(90);
241
242        return voimaMittari;
243    }
244
245    void VoimaLoppuiPelaaja1(double mittarinArvo)
246    {
247        MessageDisplay.Add("Pelaaja1 kuoli");
248        Timer.SingleShot(3.0, luoKentta);
249        pelaaja1.Destroy();
250        PhysicsObject Hautakivi = new PhysicsObject (30, 50);
251        Hautakivi.Image = NinjaKuoli;
252        Hautakivi.Position = pelaaja1.Position;
253        Add(Hautakivi);
254    }
255
256    void VoimaLoppuiPelaaja2(double mittarinArvo)
257    {
258        MessageDisplay.Add("Pelaaja2 kuoli");
259        Timer.SingleShot(3.0, luoKentta);
260        pelaaja2.Destroy();
261        PhysicsObject Hautakivi = new PhysicsObject(30, 50);
262        Hautakivi.Image = PiraattiKuoli;
263        Hautakivi.Position = pelaaja2.Position;
264        Add(Hautakivi);
265    }
266
267}
Note: See TracBrowser for help on using the repository browser.