source: 2010/24/malaleht/Tasohyppely1/Peli.cs @ 1002

Revision 1002, 9.4 KB checked in by malaleht, 10 years ago (diff)
Line 
1using System;
2using Jypeli;
3using Jypeli.ScreenObjects;
4using Jypeli.Assets;
5
6
7class Tasohyppely : PhysicsGame
8{   const int ruudunLeveys = 50;
9    const int ruudunKorkeus = 50;
10
11
12    const double nopeus = 400;
13    const double hyppyVoima = 20000;
14
15    PlatformCharacter pelaaja2;
16    PlatformCharacter pelaaja1;
17
18    IntMeter pistelaskuri1;
19    IntMeter pistelaskuri2;
20    IntMeter pelaaja1hp;
21    IntMeter pelaaja2hp;
22
23    int kenttaNro; // monesko kenttä on menossa
24
25
26    protected override void Begin()
27    {
28
29        luoKentta(0, 0);
30
31        MediaPlayer.Play("Mario");
32
33
34        kenttaNro = 1;
35        Level.Width = 1820;
36        Level.Height = 1125;
37
38         //Luodaan pistelaskuri;
39
40
41         //luodaan pistelaskunäyttö;
42
43
44        // Zoomataan lähemmäksi
45        Camera.ZoomFactor = 0.8;
46
47        Camera.StayInLevel = false;
48
49
50        seuraavaKentta();
51
52
53    }
54    void pelaaja2alarajassa(int arvo)
55    {
56        pelaaja2.Destroy();
57        pistelaskuri1.Value++;
58        if (pistelaskuri1.Value == 5)
59        {
60            Timer ajastin = new Timer();
61            ajastin.Interval = 3;
62            ajastin.Trigger += peliloppu;
63            Add(ajastin);
64            ajastin.Start(1);
65
66            MessageDisplay.Add("pelaaja1 voitti");
67        }
68        else
69        {
70            seuraavaKentta();
71        }
72        }
73    void pelaaja1alarajassa(int arvo)
74    {
75        pelaaja1.Destroy();
76        pistelaskuri2.Value++;
77
78        if (pistelaskuri2.Value == 5)
79        {
80            Timer ajastin = new Timer();
81            ajastin.Interval = 3;
82            ajastin.Trigger += peliloppu;
83            Add(ajastin);
84            ajastin.Start(1);
85
86            MessageDisplay.Add("pelaaja2 voitti");
87        }
88        else
89        {
90            seuraavaKentta();
91        }
92    }
93   
94    void luoKentta(int edellisenPisteet1, int edellisenPisteet2)
95    {
96        Level.CreateBorders();
97        Level.Background.Image = LoadImage("qwerty");
98        Level.Background.FitToLevel(Level);
99
100        Gravity = new Vector(0, -2000);
101
102        for (int i = 0; i < 200; i = i + 9)
103        {
104
105            lisaataso(RandomGen.NextInt(-900, 900), RandomGen.NextInt(-550, 550));
106
107
108        }
109
110        lisaaPelaajat();
111        lisaaNappaimet();
112
113        pelaaja1hp = new IntMeter(10);
114        pelaaja1hp.MinValue = 0;
115        pelaaja1hp.LowerLimit += pelaaja1alarajassa;
116
117        pelaaja2hp = new IntMeter(10);
118        pelaaja2hp.MinValue = 0;
119        pelaaja2hp.LowerLimit += pelaaja2alarajassa;
120
121        ValueDisplay hpNaytto1 = new ValueDisplay();
122        hpNaytto1.Text = "Pelaaja1 HP: ";
123
124        hpNaytto1.X = Screen.Left + 100;
125        hpNaytto1.Y = Screen.Top - 100;
126
127        hpNaytto1.ValueColor = Color.Red;
128        hpNaytto1.TextColor = Color.Red;
129
130        hpNaytto1.BindTo(pelaaja1hp);
131        Add(hpNaytto1);
132
133        ValueDisplay hpNaytto2 = new ValueDisplay();
134        hpNaytto2.Text = "Pelaaja2 HP: ";
135
136        hpNaytto2.X = Screen.Right - 100;
137        hpNaytto2.Y = Screen.Top - 100;
138
139        hpNaytto2.ValueColor = Color.Red;
140        hpNaytto2.TextColor = Color.Red;
141
142        hpNaytto2.BindTo(pelaaja2hp);
143        Add(hpNaytto2);
144
145        pistelaskuri1 = new IntMeter(0);
146        pistelaskuri1.Value = edellisenPisteet1;
147       
148        ValueDisplay pisteNaytto1 = new ValueDisplay();
149        pisteNaytto1.Text = "Pisteitä: ";
150        pisteNaytto1.X = Screen.Left + 500;
151        pisteNaytto1.Y = Screen.Top - 100;
152        pisteNaytto1.ValueColor = Color.Red;
153        pisteNaytto1.TextColor = Color.Red;
154        pisteNaytto1.BindTo(pistelaskuri1);
155        Add(pisteNaytto1);
156        //pistelaskuri1.MaxValue = 1;
157        //pistelaskuri1.UpperLimit += pelaaja1Voittaa;
158       
159        pistelaskuri2 = new IntMeter(0);
160        pistelaskuri2.Value = edellisenPisteet2;
161        ValueDisplay pisteNaytto2 = new ValueDisplay();
162        pisteNaytto2.Text = "Pisteitä: ";
163        pisteNaytto2.X = Screen.Right - 500;
164        pisteNaytto2.Y = Screen.Top - 100;
165        pisteNaytto2.ValueColor = Color.Red;
166        pisteNaytto2.TextColor = Color.Red;
167        pisteNaytto2.BindTo(pistelaskuri2);
168        Add(pisteNaytto2);
169        //pistelaskuri2.MaxValue = 1;
170        //pistelaskuri2.UpperLimit += pelaaja2Voittaa;
171
172    }
173
174    void pelaaja1Voittaa(int value)
175    {
176       
177
178    }
179     void pelaaja2Voittaa(int value)
180    {
181       
182    }
183     void peliloppu(Timer sender)
184    {
185        Exit();
186    }
187    void seuraavaKentta()
188    {
189        int edellisenKentanPisteet1 = pistelaskuri1.Value;
190        int edellisenKentanPisteet2 = pistelaskuri2.Value;
191
192        ClearAll();
193        //pisteLaskuri.Reset();
194
195        kenttaNro += 1; // lisätään kenttänumeroa yhdellä
196        MessageDisplay.Add("Kenttä " + kenttaNro);
197
198        // Asetetaan painovoima
199       
200
201        luoKentta(edellisenKentanPisteet1, edellisenKentanPisteet2);
202       
203
204}
205
206    void lisaataso(double x, double y)
207    {
208        PhysicsObject taso = PhysicsObject.CreateStaticObject(100, 30);
209        taso.Image = LoadImage("battle");
210        taso.X = x;
211        taso.Y = y;
212        Add(taso);
213    }
214
215    void lisaaPelaajat()
216    {
217        pelaaja2 = new PlatformCharacter(60, 80);
218        pelaaja2.Mass = 10.0;
219        pelaaja2.Image = LoadImage("Untitled");
220        AddCollisionHandler(pelaaja2, osuiMaaliin);
221        Add(pelaaja2);
222
223
224        PlasmaCannon pyssy = new PlasmaCannon(100, 40);
225        pelaaja2.Weapon = pyssy;
226
227        pyssy.PlasmaParticleCollision = PalloLyo;
228
229
230        pelaaja1 = new PlatformCharacter(60, 80);
231        pelaaja1.Mass = 10.0;
232        pelaaja1.Image = LoadImage("Untitled 23");
233        pelaaja1.X = 0;
234        pelaaja1.Y = Level.Bottom + 120;
235        PlasmaCannon tykki = new PlasmaCannon(100, 40);
236        pelaaja1.Weapon = tykki;
237        Add(pelaaja1);
238        AddCollisionHandler(pelaaja1, osuiMaaliin);
239        tykki.PlasmaParticleCollision = PalloOsuu;
240    }
241
242    void PalloOsuu(PhysicsObject tankki, PhysicsObject toinen)
243    {
244           
245        if (toinen != pelaaja1){
246       
247            tankki.Destroy();
248            Explosion rajahdys = new Explosion(100);
249            rajahdys.Position = tankki.Position;
250
251            Add(rajahdys);
252
253            if (toinen == pelaaja2)
254            {
255                pelaaja2hp.Value--;
256            }
257        }
258    }
259
260    void PalloLyo(PhysicsObject plasmapallo, PhysicsObject toinen)
261    {
262        if (toinen != pelaaja2)
263        { 
264            plasmapallo.Destroy();
265            Explosion rajahdys = new Explosion(100); 
266            rajahdys.Position = plasmapallo.Position;
267
268            Add(rajahdys);
269
270            if (toinen == pelaaja1) 
271            {
272                pelaaja1hp.Value--;
273            }
274           
275
276        }
277
278    }
279    void lisaaMaali(double x, double y)
280    {
281        PhysicsObject maali = PhysicsObject.CreateStaticObject(50, 50, Shapes.Circle);
282        maali.Tag = "maali";
283        maali.IgnoresCollisionResponse = true;
284        maali.Image = LoadImage("tahti");
285        maali.Position = new Vector(x, y);
286        Add(maali);
287
288    }
289
290    void lisaaNappaimet()
291    {
292
293
294        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
295        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
296
297        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
298        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
299        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
300
301        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
302        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
303
304
305        Keyboard.Listen(Key.A, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja2, -nopeus);
306        Keyboard.Listen(Key.D, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja2, nopeus);
307        Keyboard.Listen(Key.W, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja2, hyppyVoima);
308
309        Keyboard.Listen(Key.Space, ButtonState.Down, pelaaja2.Weapon.Use, "Ammu");
310
311        Keyboard.Listen(Key.Enter, ButtonState.Down, pelaaja1.Weapon.Use, "Ammu");
312
313 
314
315
316        lisaaGamePadNappaimet(ControllerOne);
317    }
318
319    void lisaaGamePadNappaimet(GamePad controller)
320    {
321        controller.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
322
323        controller.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
324        controller.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
325        controller.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
326    }
327
328    void liikuta(PlatformCharacter hahmo, double nopeus)
329    {
330        hahmo.Walk(nopeus);
331    }
332
333    void hyppaa(PlatformCharacter hahmo, double voima)
334    {
335        hahmo.Jump(voima);
336    }
337
338    void osuiMaaliin(PhysicsObject collidingObject, PhysicsObject otherObject)
339    {
340        if (otherObject.Tag.ToString() == "maali")
341        {
342            this.PlaySound("maali");
343            seuraavaKentta();
344            //MessageDisplay.Add("Pääsit läpi kentän " + kenttaNro + ". Pisteitä: " + edellisenKentanPisteet);
345        }
346    }
347
348}
349
Note: See TracBrowser for help on using the repository browser.