source: 2013/27/IlmariT/NINJAGAME/NINJAGAME/NINJAGAME.cs @ 4410

Revision 4407, 8.8 KB checked in by imtverin, 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 NINJAGAME : PhysicsGame
10{
11    const double nopeus = 440;
12
13
14
15    const double hyppyNopeus = 910;
16    const int RUUDUN_KOKO = 40;
17
18    PlatformCharacter pelaaja1;
19
20    Image pelaajanKuva = LoadImage("NINJAGAME");
21    Image tahtiKuva = LoadImage("PISTE");
22    Image lyoKuva = LoadImage("Lyo");
23    Image vihuKuva = LoadImage("vihu");
24    Image vihuKuva2 = LoadImage("vihu2");
25    Image judduaKuva = LoadImage("juddua");
26    Image blokki2kuva = LoadImage("blokki2");
27    SoundEffect maaliAani = LoadSoundEffect("maali");
28
29    private Image[] ninjanKavely = LoadImages("NINJAGAME", "NINJAGAME2");
30    private Image[] ninjanPaikallaanolo = LoadImages("NINJAGAME");
31
32    Image taustaKuva = LoadImage("Cityyyyyy!");
33    Image taustaKuva4 = LoadImage("taustat");
34    Image blokki;
35
36    int kenttaNro = 3;
37
38    public override void Begin()
39    {
40        SeuraavaKentta();
41
42
43    }
44
45    void SeuraavaKentta()
46    {
47        ClearAll();
48        ClearControls();
49
50        LuoPistelaskuri();
51        blokki = judduaKuva;
52
53        if (kenttaNro == 1)
54        {
55            LuoKentta("kentta1");
56            Level.Background.Image = taustaKuva;
57            Level.Background.FitToLevel();
58        }
59        else if (kenttaNro == 2)
60        {
61            LuoKentta("kentta2");
62            Level.Background.Image = taustaKuva;
63            Level.Background.FitToLevel();
64        }
65        else if (kenttaNro == 3)
66        {
67            LuoKentta("kentta3");
68            Level.Background.Image = taustaKuva;
69            Level.Background.FitToLevel();
70        }
71        else if (kenttaNro == 4)
72        {
73            blokki = blokki2kuva;
74            LuoKentta("kentta4");
75            Level.Background.Image = taustaKuva4;
76            Level.Background.FitToLevel();
77        }
78        else if (kenttaNro > 3) Exit();
79       
80        MessageDisplay.Add("Kerää " + pisteLaskuri.MaxValue + " expapalleroa!");
81        Gravity = new Vector(0, -1000);
82        LisaaNappaimet();
83        Camera.Follow(pelaaja1);
84        Camera.ZoomFactor = 1.2;
85        Camera.StayInLevel = true;
86    }
87
88
89    IntMeter pisteLaskuri;
90
91    void LuoPistelaskuri()
92    {
93        pisteLaskuri = new IntMeter(0);
94        pisteLaskuri.MaxValue = 0;
95        pisteLaskuri.UpperLimit += KaikkiKeratty;
96
97        Label pisteNaytto = new Label();
98        pisteNaytto.X = Screen.Left + 400;
99        pisteNaytto.Y = Screen.Top - 50;
100        pisteNaytto.TextColor = Color.Black;
101        pisteNaytto.Color = Color.White;
102
103        pisteNaytto.BindTo(pisteLaskuri);
104        Add(pisteNaytto);
105    }
106
107    void LuoKentta(string kentanNimi)
108    {
109        TileMap kentta = TileMap.FromLevelAsset(kentanNimi);
110        kentta.SetTileMethod('#', LisaaTaso);
111        kentta.SetTileMethod('*', LisaaTahti);
112        kentta.SetTileMethod('V', LisaaVihollinen);
113        kentta.SetTileMethod('S', LisaaVihollinen2);
114        kentta.SetTileMethod('O', LisaaVihollinen3);
115        kentta.SetTileMethod('N', LisaaPelaaja);
116        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
117        Level.CreateBorders();
118        PhysicsObject alareuna = Level.CreateBottomBorder();
119        AddCollisionHandler(pelaaja1, alareuna, PutoaaRotkoon);
120
121        //   Level.Background.CreateGradient(Color.White, Color.SkyBlue);
122    }
123
124    void LisaaTaso(Vector paikka, double leveys, double korkeus)
125    {
126        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
127        taso.Position = paikka;
128        taso.Color = Color.Black;
129        Add(taso);
130        taso.Image = blokki;
131    }
132
133    void LisaaTahti(Vector paikka, double leveys, double korkeus)
134    {
135        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
136        tahti.IgnoresCollisionResponse = true;
137        tahti.Position = paikka;
138        tahti.Image = tahtiKuva;
139        tahti.Tag = "tahti";
140        pisteLaskuri.MaxValue += 1;
141        Add(tahti);
142    }
143
144    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
145    {
146        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
147        tahti.IgnoresCollisionResponse = true;
148        tahti.Position = paikka;
149        tahti.Image = vihuKuva;
150        tahti.Tag = "vihu";
151        Add(tahti);
152    }
153
154    void LisaaVihollinen2(Vector paikka, double leveys, double korkeus)
155    {
156        PlatformCharacter vihu2 = new PlatformCharacter(leveys, korkeus);
157
158        vihu2.Position = paikka;
159        vihu2.Image = vihuKuva2;
160        vihu2.Tag = "vihu2";
161        Add(vihu2);
162
163        vihu2.Weapon = new AssaultRifle(1, 1);
164        vihu2.Weapon.Ammo.Value = 1000;
165        vihu2.Weapon.ProjectileCollision = AmmusOsui;
166
167
168        Timer ajastin = new Timer();
169        ajastin.Interval = 1.5;
170        ajastin.Timeout += delegate { VihollinenAmpuu(vihu2); };
171        ajastin.Start();
172        vihu2.Destroyed += delegate { vihu2.Weapon.Destroy(); ajastin.Stop();  };
173       
174    }
175    void LisaaVihollinen3(Vector paikka, double leveys, double korkeus)
176    {
177    }
178    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
179    {
180        ammus.Destroy();
181        if (pelaaja1 == kohde)
182        {
183            Kuoleminen(pelaaja1);
184        }
185    }
186
187    void VihollinenAmpuu(PlatformCharacter vihu2)
188    {
189        if (pelaaja1.X < vihu2.X)
190        {
191            //vihu2.Weapon.Angle = Angle.StraightAngle;
192            vihu2.Turn(Direction.Left);
193        }
194        else
195        {
196            //vihu2.Weapon.Angle = Angle.Zero;
197            vihu2.Turn(Direction.Right);
198        }
199
200        vihu2.Weapon.Shoot();
201    }
202
203    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
204    {
205        pelaaja1 = new PlatformCharacter(leveys, korkeus);
206        pelaaja1.Position = paikka;
207        pelaaja1.Mass = 4.0;
208        pelaaja1.Image = pelaajanKuva;
209        //pelaaja1.Animation.FPS = 1;
210        //pelaaja1.AnimIdle = new Animation(ninjanPaikallaanolo);
211        //pelaaja1.AnimWalk = new Animation(ninjanKavely);
212        //pelaaja1.Animation.Start();
213        AddCollisionHandler(pelaaja1, "tahti", TormaaExpapalloon);
214        AddCollisionHandler(pelaaja1, "vihu", TormaaViholliseen);
215        AddCollisionHandler(pelaaja1, "vihu2", TormaaViholliseen);
216        Add(pelaaja1);
217    }
218
219    void LisaaNappaimet()
220    {
221        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
222        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
223
224        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
225        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
226        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
227        Mouse.Listen(MouseButton.Left, ButtonState.Down, Lyo, "Lyö", pelaaja1);
228
229        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
230        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
231        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
232        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
233
234        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
235    }
236
237    void Liikuta(PlatformCharacter hahmo, double nopeus)
238    {
239        hahmo.Walk(nopeus);
240    }
241
242    void Hyppaa(PlatformCharacter hahmo, double nopeus)
243    {
244        hahmo.Jump(nopeus);
245    }
246
247    void Lyo(PlatformCharacter hahmo)
248    {
249        hahmo.Image = lyoKuva;
250
251        Timer.SingleShot(0.5, delegate
252        {
253            hahmo.Image = pelaajanKuva;
254            hahmo.Tag = "";
255        });
256
257        hahmo.Tag = "lyo";
258    }
259
260    void TormaaExpapalloon(PhysicsObject hahmo, PhysicsObject expapallo)
261    {
262        maaliAani.Play();
263        MessageDisplay.Add("PUHKAISIT EXPAPALLERON POKS!");
264        expapallo.Destroy();
265        pisteLaskuri.AddValue(1);
266    }
267
268    void TormaaViholliseen(PhysicsObject hahmo, PhysicsObject vihu)
269    {
270        maaliAani.Play();
271
272        if (hahmo.Tag.Equals("lyo")) vihu.Destroy();
273        else
274        {
275            Kuoleminen(hahmo);
276            Level.BackgroundColor = Color.DarkRed;
277        }
278    }
279
280    void KaikkiKeratty()
281    {
282        kenttaNro = kenttaNro + 1;
283        SeuraavaKentta();
284    }
285
286    void PutoaaRotkoon(PhysicsObject hahmo, PhysicsObject rotko)
287    {
288        Kuoleminen(hahmo);
289    }
290
291    void Kuoleminen(PhysicsObject hahmo)
292    {
293        MessageDisplay.Add("KUOLIT");
294        hahmo.Destroy();
295        Timer.SingleShot(2, SeuraavaKentta);
296    }
297}
Note: See TracBrowser for help on using the repository browser.