source: 2012/kerho/IlmariT/NINJAGAME/NINJAGAME/NINJAGAME.cs @ 3956

Revision 3956, 6.7 KB checked in by jotapoti, 6 years ago (diff)

27.4.2013 tehty versio.

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