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

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