source: 2011/26/OttoM/taistelu-jaska/taistelu-jaska/Peli.cs @ 2285

Revision 2285, 9.8 KB checked in by oteimatt, 8 years ago (diff)

Talletus.

Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5
6
7class Tasohyppely : PhysicsGame
8
9{
10    IntMeter pisteLaskuri;
11
12    Animation vihuhahmo;
13
14    Animation vihuhahmo2;
15
16    const int vihollisenElamat = 2;
17
18    const double nopeus = 200;
19    const double hyppyVoima = 1000;
20
21    const int ruudunLeveys = 50;
22    const int ruudunKorkeus = 50;
23
24    bool jaskaLyo;
25    PlatformCharacter pelaaja1;
26    //PlatformCharacter miniführer;
27
28    Image[] jaskaKuvat = LoadImages("taistelu-jaska", "taistelu-jaska1");
29    Image[] jaskaKuvatPeilattu;
30
31    Image[] miniführerkuvatL = LoadImages("mini führerl1", "mini führerl2");
32    Image[] miniführerkuvatLpeilattu;
33    Image[] miniführerkuvat = LoadImages("mini führer juoksu 1", "mini führer juoksu 2");
34    Image[] miniführerkuvatpeilattu;
35    Image[] jaskaHyokkaa = LoadImages("taistelu-jaska tilanne 1 osa 2",
36            "taistelu-jaska tilanne 1 osa 3",
37            "taistelu-jaska tilanne 1 osa 4",
38            "taistelu-jaska tilanne 1 osa 5",
39            "taistelu-jaska tilanne 2 osa 1",
40            "taistelu-jaska tilanne 2 osa 2",
41            "taistelu-jaska tilanne 2 osa 3",
42            "taistelu-jaska tilanne 2 osa 4",
43            "taistelu-jaska tilanne 2 osa 5");
44    Image ristikuva = LoadImage("risti");
45
46    Image[] jaskaHyokkaaPeilattu;
47
48
49   public override void Begin()
50    {
51        //pelaaja1.FacingDirection == Direction.Left
52
53       
54
55        LataaKuvat();
56
57        luoKentta("POHJA.txt");
58
59       
60    }
61
62    void LataaKuvat()
63    {
64        jaskaKuvatPeilattu = Image.Mirror(jaskaKuvat);
65        jaskaHyokkaaPeilattu = Image.Mirror(jaskaHyokkaa);
66        miniführerkuvatpeilattu = Image.Mirror(miniführerkuvat);
67        miniführerkuvatLpeilattu = Image.Mirror(miniführerkuvatL);
68
69    }
70   
71    void luoKentta(string kenttaTiedosto)
72    {
73        ClearAll();
74        TileMap ruudut = TileMap.FromFile(kenttaTiedosto);
75        ruudut.SetTileMethod('=', LuoSeina);
76        ruudut.SetTileMethod('T', LuoTaisteluJaska);
77        ruudut.SetTileMethod('V', luoMiniFührer);
78        ruudut.SetTileMethod('F', luoristi);
79        ruudut.Execute(ruudunLeveys, ruudunKorkeus);
80        Camera.Follow(pelaaja1);
81        Camera.ZoomFactor = 1.2;
82        Camera.StayInLevel = true;
83        lisaaNappaimet();
84        Gravity = new Vector(0, -1000);
85
86        LuoLaskuri();
87
88        Timer ajastin = new Timer();
89        ajastin.Interval = 10.0;
90        ajastin.Trigger += lisaaMiniFührerA;
91        ajastin.Start();
92
93        //Level.Background.CreateGradient(Color.White, Color.SkyBlue);
94    }
95
96    void LuoSeina(Vector paikka, double leveys, double korkeus)
97    {
98        PhysicsObject taso = PhysicsObject.CreateStaticObject(ruudunLeveys, ruudunKorkeus);
99        taso.Color = Color.Black;
100        taso.Position = paikka;
101        Add (taso);
102    }
103
104    void luoristi(Vector paikka, double leveys, double korkeus)
105    {
106        PhysicsObject risti = PhysicsObject.CreateStaticObject(leveys*1, korkeus*2);
107        risti.Position = paikka;
108        risti.Image = ristikuva;
109        risti.Tag = "risti";
110        Add(risti);
111    }
112
113
114    void lisaaMiniFührerA(Timer ajastin)
115    {
116        Vector paikka;
117
118        if (RandomGen.NextInt(100) < 50)
119        {
120            paikka = new Vector(Level.Right - 100, -200);
121        }
122        else
123        {
124            paikka = new Vector(Level.Left + 100, -200);
125        }
126
127        luoMiniFührer(paikka, 128, 128);
128 
129    }
130
131
132    void luoMiniFührer(Vector paikka, double leveys, double korkeus)
133    {
134        PlatformCharacter miniführer = new PlatformCharacter(128, 128, Shape.Circle);
135        miniführer.Mass = 4.0;
136        miniführer.Color = Color.Black;
137        vihuhahmo = new Animation(miniführerkuvat);
138        vihuhahmo.FPS = 5.0;
139        miniführer.RightIdleAnimation = vihuhahmo;
140        miniführer.Position = paikka;
141
142        //miniführer.RightWalkingAnimation = new Animation(miniführerkuvat);
143
144        vihuhahmo2 = new Animation(miniführerkuvatpeilattu);
145        vihuhahmo2.FPS = 5.0;
146        miniführer.LeftIdleAnimation = vihuhahmo2;
147   
148        //miniführer.LeftWalkingAnimation = new Animation(miniführerkuvatpeilattu);
149
150        FollowerBrain seuraajanAivot = new FollowerBrain( pelaaja1 , 100.0 );
151        seuraajanAivot.Target = pelaaja1;
152        miniführer.Brain = seuraajanAivot;
153        miniführer.Tag = vihollisenElamat;
154       
155        Timer aikaLaskuri = new Timer();
156        aikaLaskuri.Interval = 0.5;
157        aikaLaskuri.Trigger += Viholliskavely;
158        aikaLaskuri.Tag = miniführer;
159        //Add(aikaLaskuri);
160        aikaLaskuri.Start();
161        Add(miniführer);
162     
163    }
164 
165    void Viholliskavely(Timer ajastin)
166    { 
167        PlatformCharacter vihollinen = ((PlatformCharacter)ajastin.Tag);
168
169        Vector etaisyys = new Vector(pelaaja1.X - vihollinen.X, pelaaja1.Y - vihollinen.Y);
170
171        if (etaisyys.X < 0 && etaisyys.Magnitude < 130)
172        {
173            vihollinenLyo(vihollinen, miniführerkuvatLpeilattu);
174        }
175        else if (etaisyys.X > 0 && etaisyys.Magnitude < 130)
176        {
177            vihollinenLyo(vihollinen, miniführerkuvatL);
178        }
179        else if (etaisyys.X > 0 && etaisyys.Magnitude > 100)
180        {
181            vihollinen.Animation = vihuhahmo;
182            //vihollinen.Animation.Start();
183        }
184        else if (etaisyys.X < 0 && etaisyys.Magnitude > 100)
185        {
186            vihollinen.Animation = vihuhahmo2;
187            //vihollinen.Animation.Start();
188        }
189    }
190
191    void vihollinenLyo(PlatformCharacter vihu, Image[] lyontiKuvat)
192    {
193        vihu.Animation = new Animation(lyontiKuvat);
194        vihu.Animation.Start(1);
195        vihu.Animation.FPS = 10.0;
196        pisteLaskuri.Value--;
197    }
198
199    void LuoTaisteluJaska(Vector paikka, double leveys, double korkeus)
200    {
201        pelaaja1 = new PlatformCharacter(128, 128, Shape.Circle);
202        jaskaLyo = false;
203        // Animaation asettaminen ei toimi jos pelaaja1 on alustettu näin
204         //pelaaja1 = new PlatformCharacter(128, 128, Shapes.Rectangle);
205
206        pelaaja1.Mass = 4.0;
207        pelaaja1.Color = Color.Black;
208        pelaaja1.Position = paikka;
209       
210        pelaaja1.RightIdleAnimation = new Animation(LoadImage("taistelu-jaska"));
211        pelaaja1.LeftIdleAnimation = new Animation(Image.Mirror(LoadImage("taistelu-jaska")));
212        pelaaja1.RightWalkingAnimation = new Animation(jaskaKuvat);
213        pelaaja1.RightWalkingAnimation.FPS = 5;       
214        pelaaja1.LeftWalkingAnimation = new Animation(jaskaKuvatPeilattu);
215        pelaaja1.LeftWalkingAnimation.FPS = 5;
216
217        AddCollisionHandler(pelaaja1, JaskaOsuuJohonkin);
218        Add(pelaaja1);
219    }
220
221
222    void lisaaPelaajat()
223    {
224        pelaaja1 = new PlatformCharacter(40, 40);
225        pelaaja1.Mass = 4.0;
226        pelaaja1.Image = LoadImage("norsu");
227        pelaaja1.X = 0;
228        pelaaja1.Y = Level.Bottom + 120;
229
230        Add(pelaaja1);
231    }
232
233    void lisaaNappaimet()
234    {
235        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
236        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
237
238        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
239        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
240        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
241        Keyboard.Listen(Key.Space, ButtonState.Pressed, lyo, "Lyö", pelaaja1, jaskaHyokkaaPeilattu, jaskaHyokkaa);
242
243        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
244
245        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
246        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
247        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
248    }
249
250    void lyo(PlatformCharacter hahmo, Image[] kuvatVasemmalle, Image[] kuvatOikealle)
251    {
252        if (hahmo.FacingDirection == Direction.Left)
253        {
254            hahmo.Animation = new Animation(kuvatVasemmalle);
255        }
256        if (hahmo.FacingDirection == Direction.Right)
257        {
258            hahmo.Animation = new Animation(kuvatOikealle);
259        }
260
261        hahmo.Animation.Start(1);
262
263        jaskaLyo = true;
264
265        Timer lyontiLoppuu = new Timer();
266        lyontiLoppuu.Interval = 0.3;
267        lyontiLoppuu.Trigger += JaskanLyontiLoppuu;
268        lyontiLoppuu.Start(1);
269    }
270
271    void LuoLaskuri()
272    {
273        pisteLaskuri = new IntMeter(10000);
274
275        pisteLaskuri.LowerLimit += delegate { Begin(); };
276        Label pisteNaytto = new Label();
277        pisteNaytto.X = Screen.Left + 100;
278        pisteNaytto.Y = Screen.Top - 100;
279        pisteNaytto.TextColor = Color.Red;
280
281        pisteNaytto.BindTo(pisteLaskuri);
282        Add(pisteNaytto);
283    }
284
285
286    void JaskanLyontiLoppuu(Timer ajastin)
287    {
288        jaskaLyo = false;
289    }
290
291    void liikuta(PlatformCharacter hahmo, double nopeus)
292    {
293        hahmo.Walk(nopeus);
294    }
295
296    void hyppaa(PlatformCharacter hahmo, double voima)
297    {
298        hahmo.Jump(voima);
299
300    }
301
302    void JaskaOsuuJohonkin(PhysicsObject jaska, PhysicsObject kohde)
303    {
304        if (jaskaLyo)
305        {
306            if (kohde is PlatformCharacter)
307            {
308                int hipareita = (int)kohde.Tag;
309                hipareita--;
310                kohde.Tag = hipareita;
311                if (hipareita == 0)
312                    kohde.Destroy();
313            }
314        }
315        if (kohde.Tag.ToString() == "risti")
316        {
317            luoKentta("POHJA2.txt");
318        }
319       
320
321
322    }
323
324
325
326
327}
328
Note: See TracBrowser for help on using the repository browser.