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

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