source: 2012/30/ArttuP/NarutoVSsasuke/NarutoVSsasuke/NarutoVSsasuke/NarutoVSsasuke.cs @ 3805

Revision 3805, 13.2 KB checked in by arosiipu, 8 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 NarutoVSsasuke : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14    SoundEffect hyppyaani=LoadSoundEffect("Naruto_jump_air");
15
16    PlatformCharacter pelaaja1;
17    Image Taustakuva = LoadImage("tausta");
18    Image[] Kavelykuvat = LoadImages("juoksu 1", "juoksu2");
19    Image[] Hyppykuvat = LoadImages("hyppy 1");
20    Image pelaajanKuva = LoadImage("perus asento");
21    Image[] Pelaaja1combo = LoadImages("combo 1", "combo 2", "combo 3");
22    SoundEffect maaliAani = LoadSoundEffect("maali");
23    SoundEffect lyontiaani = LoadSoundEffect("Naruto_jump_air2");
24    SoundEffect superaaniNaruto = LoadSoundEffect("Naruto_monument_shock");
25    SoundEffect superaaniSasuke= LoadSoundEffect("Naruto_monument_shock2");
26    PlatformCharacter pelaaja2;
27    Image[] Kavelykuvat2 = LoadImages("Juoksu B","Juoksu B 2");
28    Image[] Pelaaja2combo = LoadImages("combo 1 B (1)","combo 1 B (12)","combo 1 B (2)","combo 1 B (3)","combo 1 B (4)");
29    Image pelaajanKuva2 = LoadImage("perusasento B");
30    Image hyppykuvat2 = LoadImage("hyppy B");
31    Image[] Rasengan = new Image[29]; // = LoadImages("rasengan1", "rasengan3", "rasengan2", "rasengan", "rasengan", );
32    Image[] Chidori = new Image[17];
33    IntMeter P1elama = new IntMeter(50, 0, 50);
34    IntMeter P2elama = new IntMeter(50, 0, 50);
35    IntMeter P1energia = new IntMeter(0, 0, 5);
36    IntMeter P2energia = new IntMeter(0, 0, 5);
37    Image palloKuva = LoadImage("pallo");
38    Image Ruumiskuva = LoadImage("kuolo");
39    Image Ruumiskuva2 = LoadImage("kuolo B");
40
41    public override void Begin()
42    {
43        for (int i = 1; i <= 17; i++)
44        {
45            Chidori[i - 1] = LoadImage("chidori " + i);
46        }
47        for (int i = 1; i <= 29; i++)
48        {
49            Rasengan[i-1] = LoadImage("rasengan" + i);
50
51        }
52
53        AlkuValikko();
54    }
55
56    void AlkuValikko()
57    {
58        ClearAll();
59        MediaPlayer.Play("Naruto Shippuden Ultimate Ninja Storm 2 - The Beast Set Loose Soundtrack");
60        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
61            "Aloita peli", "Lopeta");
62        alkuValikko.ItemSelected += PainettiinValikonNappia;
63
64        Add(alkuValikko);
65    }
66
67    void PainettiinValikonNappia(int valinta)
68    {
69        switch (valinta)
70        {
71            case 0:
72                AloitaPeli();
73                break;
74            case 1:
75                Exit();
76                break;
77        }
78    }
79
80    void AloitaPeli()
81    {
82        ClearAll();
83        Gravity = new Vector(0, -1000);
84
85        LuoKentta();
86        LuoElamaLaskurit();
87        LisaaNappaimet();
88
89        P1elama.Value = 50;
90        P2elama.Value = 50;
91        P1energia.Value = 0;
92        P2energia.Value = 0;
93
94        Timer ajastin = new Timer();
95        ajastin.Interval = 3;
96        ajastin.Timeout += LuoPallo;
97        ajastin.Start();
98
99       // Camera.Follow(pelaaja1);
100        Camera.ZoomToLevel();
101        //Camera.StayInLevel = true;
102
103        MediaPlayer.Play("Fight Music 1");
104        MediaPlayer.IsRepeating = true;
105    }
106
107    void LuoPallo()
108    {
109        PhysicsObject Pallo = new PhysicsObject(30, 30, Shape.Circle);
110        Pallo.X = RandomGen.NextDouble(Level.Left, Level.Right);
111        Pallo.Y = RandomGen.NextDouble(Level.Bottom, Level.Top);
112        Pallo.Shape = Shape.Circle;
113        Pallo.Color = Color.LightBlue;         Pallo.Tag = "pallo";
114        Add(Pallo);
115        Pallo.IgnoresGravity = true;
116
117        Timer ajastin = new Timer();
118        ajastin.Interval = 15;
119        ajastin.Timeout += delegate { Pallo.Destroy(); };
120        ajastin.Start();
121    }
122
123    void LuoElamaLaskurit()
124    {
125        //elamaLaskuri = new Meter(10);
126        //elamaLaskuri.LowerLimit += ElamaLoppui;
127
128        ProgressBar elamaPalkki = new ProgressBar(150, 20);
129        elamaPalkki.BarColor = Color.Green;
130        elamaPalkki.X = Screen.Left + 230;
131        elamaPalkki.Y = Screen.Top - 60;
132        elamaPalkki.Width = 400;
133        elamaPalkki.BindTo(P1elama);
134        Add(elamaPalkki);
135
136        ProgressBar energiaPalkki = new ProgressBar(150, 20);
137        energiaPalkki.BarColor = Color.Blue;
138        energiaPalkki.X = Screen.Left + 230;
139        energiaPalkki.Y = Screen.Top - 100;
140        energiaPalkki.Width = 400;
141        energiaPalkki.BindTo(P1energia);
142        Add(energiaPalkki);
143
144
145        ProgressBar elamaPalkki2 = new ProgressBar(150, 20);
146        elamaPalkki2.BarColor = Color.Green;
147        elamaPalkki2.X = Screen.Right - 230;
148        elamaPalkki2.Y = Screen.Top - 60;
149        elamaPalkki2.Width = 400;
150        elamaPalkki2.BindTo(P2elama);
151        Add(elamaPalkki2);
152
153        ProgressBar energiaPalkki2 = new ProgressBar(150, 20);
154        energiaPalkki2.BarColor = Color.Blue;
155        energiaPalkki2.X = Screen.Right - 230;
156        energiaPalkki2.Y = Screen.Top - 100;
157        energiaPalkki2.Width = 400;
158        energiaPalkki2.BindTo(P2energia);
159        Add(energiaPalkki2);
160    }
161
162    void LuoKentta()
163    {
164        TileMap kentta = TileMap.FromLevelAsset("kentta1");
165        kentta.SetTileMethod('#', LisaaTaso);
166        kentta.SetTileMethod('*', LisaaTahti);
167        kentta.SetTileMethod('N', LisaaPelaaja);
168        kentta.SetTileMethod('S', LisaaPelaaja2);
169        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
170        Surfaces reunat = Level.CreateBorders();
171        reunat.Bottom.Color = Color.Black;
172        reunat.Top.Color = Color.Black;
173        reunat.Left.Color = Color.Black;
174        reunat.Right.Color = Color.Black;
175        Level.Background.Image = Taustakuva;
176        Level.Background.FitToLevel();
177    }
178
179    void LisaaTaso(Vector paikka, double leveys, double korkeus)
180    {
181        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
182        taso.Position = paikka;
183        taso.Color = Color.Brown;
184        Add(taso);
185    }
186
187    void LisaaTahti(Vector paikka, double leveys, double korkeus)
188    {
189    }
190    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
191    {
192        pelaaja1 = new PlatformCharacter(leveys, korkeus);
193        pelaaja1.Position = paikka;
194        pelaaja1.Mass = 4.0;
195        pelaaja1.Image = pelaajanKuva;
196        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
197        Add(pelaaja1);
198        pelaaja1.AnimWalk = new Animation(Kavelykuvat);
199        pelaaja1.AnimWalk.FPS = 6;
200        pelaaja1.AnimIdle = new Animation(pelaajanKuva);
201        pelaaja1.AnimJump = new Animation(Hyppykuvat) ;
202        AddCollisionHandler(pelaaja1, "pallo",  KeraaPallo);
203    }
204
205    void KeraaPallo(PhysicsObject pelaaja, PhysicsObject pallo)
206    {
207        if (pelaaja == pelaaja1) P1energia.Value++;
208        if (pelaaja == pelaaja2) P2energia.Value++;
209        pallo.Destroy();
210    }
211
212    void LisaaPelaaja2(Vector paikka, double leveys, double korkeus)
213    {
214        pelaaja2 = new PlatformCharacter(leveys, korkeus);
215        pelaaja2.Position = paikka;
216        pelaaja2.Mass = 4.0;
217        pelaaja2.Image = pelaajanKuva2;
218        //AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
219        Add(pelaaja2);
220        pelaaja2.AnimWalk = new Animation(Kavelykuvat2);
221        pelaaja2.AnimWalk.FPS = 6;
222        pelaaja2.AnimIdle = new Animation(pelaajanKuva2);
223        pelaaja2.AnimJump = new Animation(hyppykuvat2);
224        AddCollisionHandler(pelaaja2, "pallo", KeraaPallo);
225    }
226    void LisaaNappaimet()
227    {
228        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
229        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
230
231        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
232        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
233        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
234
235        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
236
237       
238        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
239        ControllerOne.Listen(Button.B, ButtonState.Pressed, Isku, "lyo vastustajaa", pelaaja1);
240        ControllerOne.ListenAnalog(AnalogControl.LeftStick, 0.1, LiikutaTatilla, "Liikuta pelaajaa tattia pyörittämällä.", pelaaja1, nopeus);
241        ControllerOne.Listen(Button.Y, ButtonState.Pressed, SuperIsku, "Tee superliike (kun mittari on täynnä)", pelaaja1);
242        ControllerTwo.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja2, hyppyNopeus);
243        ControllerTwo.Listen(Button.B, ButtonState.Pressed, Isku, "lyo vastustajaa", pelaaja2);
244        ControllerTwo.ListenAnalog(AnalogControl.LeftStick, 0.1, LiikutaTatilla, "Liikuta pelaajaa tattia pyörittämällä.", pelaaja2, nopeus);
245        ControllerTwo.Listen(Button.Y, ButtonState.Pressed, SuperIsku, "Tee superisku (kun mittari on täynnä)", pelaaja2);
246
247    }
248    void Isku(PlatformCharacter pelaaja)
249    {
250        Animation iskuanimaatio;
251        lyontiaani.Play();
252
253        PlatformCharacter vastustaja;
254
255        if (pelaaja == pelaaja1)
256        {
257            iskuanimaatio = new Animation(Pelaaja1combo);
258            vastustaja = pelaaja2;
259        }
260        else
261        {
262            iskuanimaatio = new Animation(Pelaaja2combo);
263            vastustaja = pelaaja1;
264        }
265        iskuanimaatio.FPS = 6;
266        pelaaja.PlayAnimation(iskuanimaatio);
267
268        PhysicsObject alue;
269        alue = new PhysicsObject(15, 15);
270        alue.Color = Color.Transparent;
271        alue.Position = pelaaja.Position+pelaaja.FacingDirection.GetVector()*50;
272        Add(alue);
273        alue.IgnoresCollisionResponse = true;
274        alue.IgnoresGravity = true;
275        Timer ajastin = new Timer();
276        ajastin.Interval=0.2;
277        ajastin.Timeout += delegate { alue.Destroy(); };
278        ajastin.Start();
279
280        alue.Collided += delegate { iskuosuu(vastustaja,1); alue.Destroy(); };
281
282    }
283
284
285    void iskuosuu(PlatformCharacter pelaaja, int vahinko)
286    {
287        if (pelaaja == pelaaja1)
288        {
289            P1elama.Value -= vahinko;
290            if (P1elama.Value <= 0)
291            {
292                PhysicsObject ruumis = new PhysicsObject(Ruumiskuva);
293                ruumis.Position = pelaaja1.Position;
294                Add(ruumis);
295                pelaaja1.Position = new Vector(-1000,0);
296                pelaaja1.Destroy();
297            }
298        }
299        else
300        {
301            P2elama.Value -= vahinko;
302            if (P2elama.Value <= 0)
303            {
304                PhysicsObject ruumis = new PhysicsObject(Ruumiskuva2);
305                ruumis.Position = pelaaja2.Position;
306                Add(ruumis);
307                pelaaja2.Position = new Vector(-1000, 0);
308                pelaaja2.Destroy();
309            }
310        }
311
312        if (P1elama.Value <= 0 || P2elama.Value <= 0)
313        {
314            Timer ajastin = new Timer();
315
316            ajastin.Interval = 3;
317            ajastin.Timeout += delegate { AlkuValikko(); };
318            ajastin.Start();
319        }
320    }
321
322    void SuperIsku(PlatformCharacter pelaaja)
323    {
324
325        Animation iskuanimaatio;
326        superaaniNaruto.Play();
327        PlatformCharacter vastustaja;
328
329        if (pelaaja == pelaaja1)
330        {
331            if (P1energia.Value != 5) return;
332            P1energia.Value = 0;
333            iskuanimaatio = new Animation(Rasengan);
334            vastustaja = pelaaja2;
335        }
336        else
337        {
338            if (P2energia.Value != 5) return;
339            P2energia.Value = 0;
340            iskuanimaatio = new Animation(Chidori);
341            superaaniSasuke.Play();
342            vastustaja = pelaaja1;
343        }
344
345        pelaaja.Width *= 2;
346        pelaaja.Height *= 1.5;
347
348        iskuanimaatio.FPS = 6;
349        pelaaja.PlayAnimation(iskuanimaatio);
350        iskuanimaatio.Played += delegate { pelaaja.Width = RUUDUN_KOKO; pelaaja.Height = RUUDUN_KOKO; };
351
352
353        PhysicsObject alue;
354        alue = new PhysicsObject(40, 40);
355        alue.Color = Color.Transparent;
356        alue.Position = pelaaja.Position + pelaaja.FacingDirection.GetVector() * 50;
357        Add(alue);
358        alue.IgnoresCollisionResponse = true;
359        alue.IgnoresGravity = true;
360        Timer ajastin = new Timer();
361        ajastin.Interval = 0.2;
362        ajastin.Timeout += delegate { alue.Destroy(); };
363        ajastin.Start();
364
365        alue.Collided += delegate { iskuosuu(vastustaja,5); alue.Destroy(); };
366
367    }
368
369    void Liikuta(PlatformCharacter hahmo, double nopeus)
370    {
371        hahmo.Walk(nopeus);
372    }
373
374    void LiikutaTatilla (AnalogState tatinTila, PlatformCharacter hahmo, double nopeus)
375    {
376        hahmo.Walk(tatinTila.StateVector.X * nopeus);
377    }
378
379    void Hyppaa(PlatformCharacter hahmo, double nopeus)
380    {
381        hyppyaani.Play();
382        hahmo.Jump(nopeus);
383    }
384
385    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
386    {
387        maaliAani.Play();
388        MessageDisplay.Add("Keräsit tähden!");
389        tahti.Destroy();
390    }
391}
Note: See TracBrowser for help on using the repository browser.