source: 2013/26/MikkoF/Taistelupeli alpha/Taistelupeli alpha/Taistelupeli alpha/Taistelupeli_alpha.cs @ 4308

Revision 4308, 9.7 KB checked in by mifredri, 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 Taistelupeli_alpha : PhysicsGame
10{
11    private Image[] hahmonKavely = LoadImages("Hahmo1 kävely1", "Hahmo1 kävely2");
12    private Image[] hahmoSeisoo = LoadImages("Hahmo1");
13    private Image[] hahmoHyppää = LoadImages("hahmo1 Hyppy");
14    private Image[] hahmoTippuu = LoadImages("Hahmo1 Tippuminen" );
15    private Image[] hahmoLaskeutuu = LoadImages("hahmo1 Laskeutuminen");
16    private Image[] HahmoLyö = LoadImages("Hahmo1 Lyönti 1", "Hahmo1 Lyönti2");
17    private Image[] HahmoPotkaisee = LoadImages("Hahmo1 potku1", "Hahmo1 potku2");
18   
19    Image HahmoKuva1 = LoadImage("Hahmo1");
20    Animation lyomisAnimaatio;
21    //Animation hahmonTippuminen;
22    Animation PotkaisuAnimaatio;
23
24    PlatformCharacter Hahmo1, Hahmo2;
25    double LiikkumisNopeus = 400.0;
26
27    DoubleMeter elamaLaskuri;
28    DoubleMeter elamaLaskuri2;
29
30    public override void Begin()
31    {
32        // TODO: Kirjoita ohjelmakoodisi tähän
33        //hahmonTippuminen = new Animation(hahmoTippuu);
34        MultiSelectWindow alkuValikko = new MultiSelectWindow("Taistelupeli", "Aloita peli");
35        //alkuValikko.AddItemHandler(0, "Aloita Peli");
36        Add (alkuValikko);
37
38        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
39       
40
41        Level.BackgroundColor = Color.Green;
42
43       
44        LuoKentta();
45        AsetaOhjaimet();
46        AsetaOhjaimet2();
47        elamaLaskuri = LuoElamaLaskuri(Screen.Left + 150, Screen.Top - 30, Hahmo1);
48        elamaLaskuri2 = LuoElamaLaskuri(Screen.Right - 150, Screen.Top - 30, Hahmo2);
49    }
50    void LuoKentta()
51    {
52        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("Kenttä1");
53
54        ruudut.SetTileMethod("3330FF", LuoPelaaja);
55        ruudut.SetTileMethod("FF2F21", LuoPelaaja2);
56        ruudut.SetTileMethod("23C665", LuoTaso);
57        //ruudut.SetTileMethod("FFF205", TapaPelaaja);
58
59        ruudut.Execute(20, 20);
60
61        PhysicsObject alareuna = PhysicsObject.CreateStaticObject(Level.Width * 10, 20);
62        alareuna.Y = Level.Bottom;
63        Add(alareuna);
64
65        Gravity = new Vector(0, -1500); 
66    }
67
68    void LuoPelaaja(Vector paikka, double leveys, double korkeus) 
69    {
70        Hahmo1 = new PlatformCharacter(40, 70);
71        //Hahmo1.Image = HahmoKuva1;
72        Add(Hahmo1);
73        Hahmo1.Tag = "Pelaaja1";
74        Hahmo1.Position = paikka;
75        Hahmo1.AnimWalk = new Animation(hahmonKavely);
76        Hahmo1.AnimWalk.FPS =  5;
77        Hahmo1.AnimIdle = new Animation(hahmoSeisoo);
78        Hahmo1.AnimJump = new Animation(hahmoHyppää);
79        Hahmo1.AnimFall = new Animation(hahmoTippuu);
80        lyomisAnimaatio = new Animation(HahmoLyö);
81        lyomisAnimaatio.FPS = 4;
82        PotkaisuAnimaatio = new Animation(HahmoPotkaisee);
83        PotkaisuAnimaatio.FPS = 2;
84        //Hahmo1.AnimFall = hahmonTippuminen;
85        //Hahmo1.LoopFallAnim = true;
86        //Hahmo1.AnimFall.StopOnLastFrame = true;
87
88        AddCollisionHandler<PlatformCharacter, PhysicsObject>(Hahmo1, "taso", hahmoOsuu);
89       
90    }
91
92    void LuoPelaaja2(Vector paikka, double leveys, double korkeus)
93    {
94        Hahmo2 = new PlatformCharacter(40, 70);
95        //Hahmo2.Image = HahmoKuva1;
96        Add(Hahmo2);
97        Hahmo2.Position = paikka;
98        Hahmo2.Tag = "Pelaaja2";
99        Hahmo2.AnimWalk = new Animation(hahmonKavely);
100        Hahmo2.AnimWalk.FPS = 5;
101        Hahmo2.AnimIdle = new Animation(hahmoSeisoo);
102        Hahmo2.AnimJump = new Animation(hahmoHyppää);
103        Hahmo2.AnimFall = new Animation(hahmoTippuu);
104        lyomisAnimaatio = new Animation(HahmoLyö);
105        lyomisAnimaatio.FPS = 4;
106        PotkaisuAnimaatio = new Animation(HahmoPotkaisee);
107        PotkaisuAnimaatio.FPS = 2;
108        //Hahmo1.AnimFall = hahmonTippuminen;
109        //Hahmo1.LoopFallAnim = true;
110        //Hahmo1.AnimFall.StopOnLastFrame = true;
111
112        AddCollisionHandler<PlatformCharacter, PhysicsObject>(Hahmo2, "taso", hahmoOsuu);
113    }
114    void hahmoOsuu(PlatformCharacter hahmo, PhysicsObject Taso)
115    {
116        if (hahmo.Velocity.Y < 0)
117        {
118            laskeutuu(hahmo);
119        }
120    }
121
122    void LuoTaso(Vector paikka, double leveys, double korkeus)
123    {
124        PhysicsObject Taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
125        Taso.Position = paikka;
126        Taso.Tag = "taso";
127        //Taso.Image = groundImage;
128        Taso.CollisionIgnoreGroup = 1;
129        Add(Taso);
130
131    }
132   
133    void AsetaOhjaimet()
134    {
135        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
136        Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, "Kävelee", Hahmo1, -LiikkumisNopeus);
137        Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa, "Kävelee", Hahmo1, LiikkumisNopeus);
138        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppää, "Kävelee", Hahmo1, 1000.0);
139        Keyboard.Listen(Key.V, ButtonState.Pressed, Lyö, "Lyö", Hahmo1);
140        Keyboard.Listen(Key.B, ButtonState.Pressed, Potki, "Potki", Hahmo1);
141       
142
143    }
144
145    void AsetaOhjaimet2()
146    {
147        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
148        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, "Kävelee", Hahmo2, -LiikkumisNopeus);
149        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, "Kävelee", Hahmo2, LiikkumisNopeus);
150        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppää, "Kävelee", Hahmo2, 1000.0);
151        Keyboard.Listen(Key.NumPad7, ButtonState.Pressed, Lyö, "Lyö", Hahmo2);
152        Keyboard.Listen(Key.NumPad8, ButtonState.Pressed, Potki, "Potki", Hahmo2);
153
154
155    }
156
157    void LiikutaPelaajaa(PlatformCharacter Pelaaja, double nopeus)
158    {
159        Pelaaja.Walk(nopeus);
160    }
161
162    void Hyppää(PlatformCharacter Pelaaja, double nopeus)
163    {
164        bool Tuplahyppy = Pelaaja.Jump(nopeus);
165        if (Tuplahyppy == false) 
166        {
167            GameObject taso = GetObjectAt(Pelaaja.Position, "taso", Pelaaja.Width);
168            if (taso != null)
169            {
170                MessageDisplay.Add("hyppy");
171                Pelaaja.ForceJump(nopeus);
172            }
173        }
174
175    }
176
177    void laskeutuu(PlatformCharacter pelaaja)
178    {
179        pelaaja.AnimWalk = null;
180        pelaaja.AnimIdle = null;
181        pelaaja.Animation = new Animation(hahmoLaskeutuu);
182        pelaaja.Animation.FPS = 5;
183        pelaaja.Animation.Start(1);
184
185        pelaaja.Animation.Played += delegate
186        {
187            pelaaja.AnimIdle = new Animation(hahmoSeisoo);
188            pelaaja.AnimWalk = new Animation(hahmonKavely);
189            pelaaja.AnimWalk.FPS = 5;
190
191        };
192    }
193
194    void Lyö(PlatformCharacter Pelaaja)
195    {
196        Pelaaja.PlayAnimation(lyomisAnimaatio);
197
198        Vector lyontiPaikka = Pelaaja.Position;
199        double lyontiEtaisyys = Pelaaja.Width;
200        if (Pelaaja.FacingDirection == Direction.Left)
201            lyontiPaikka -= new Vector(lyontiEtaisyys, 0);
202        else
203            lyontiPaikka += new Vector(lyontiEtaisyys, 0);
204
205        //GameObject testi = new GameObject(20, 20);
206        //testi.Position = lyontiPaikka;
207        //Add(testi);
208
209        foreach (var olio in GetObjectsAt(lyontiPaikka, Pelaaja.Width / 2))
210        {
211            if (olio == Pelaaja)
212                continue;
213            else if ("Pelaaja1".Equals(olio.Tag)) elamaLaskuri.Value -= 5;
214            else if ("Pelaaja2".Equals(olio.Tag)) elamaLaskuri2.Value -= 5;
215
216        }
217    }
218
219    void Potki(PlatformCharacter Pelaaja)
220    {
221        Pelaaja.PlayAnimation(PotkaisuAnimaatio);
222
223        Vector potkuPaikka = Pelaaja.Position;
224        double potkuEtaisyys = Pelaaja.Width*1.3;
225        if (Pelaaja.FacingDirection == Direction.Left)
226            potkuPaikka -= new Vector(potkuEtaisyys, 0);
227        else
228            potkuPaikka += new Vector(potkuEtaisyys, 0);
229
230        //GameObject testi = new GameObject(20, 20);
231        //testi.Position = lyontiPaikka;
232        //Add(testi);
233
234        foreach (var olio in GetObjectsAt(potkuPaikka, Pelaaja.Width / 2))
235        {
236            if (olio == Pelaaja)
237                continue;
238
239            else if ("Pelaaja1".Equals(olio.Tag))
240            {
241                elamaLaskuri.Value -= 15;
242                if (potkuPaikka.X < Pelaaja.Position.X)
243                    ((PhysicsObject)olio).Hit(new Vector(-3000, 300));
244                else
245                    ((PhysicsObject)olio).Hit(new Vector(3000, 300));
246            }
247
248            else if ("Pelaaja2".Equals(olio.Tag))
249            {
250                elamaLaskuri2.Value -= 15;
251                if (potkuPaikka.X < Pelaaja.Position.X)
252                    ((PhysicsObject)olio).Hit(new Vector(-3000, 300));
253                else
254                    ((PhysicsObject)olio).Hit(new Vector(3000, 300));
255            }
256        }
257
258    }
259
260   
261    DoubleMeter LuoElamaLaskuri(double x, double y, PlatformCharacter hahmo)
262    {
263        DoubleMeter elamaLaskuri = new DoubleMeter(100, 00, 100);
264        elamaLaskuri.LowerLimit += delegate { ElamaLoppui(hahmo); };
265
266        LuoElamaPalkki(elamaLaskuri, x, y);
267
268        return elamaLaskuri;
269       
270    }
271
272    void LuoElamaPalkki(DoubleMeter mittari, double x, double y)
273    {
274        ProgressBar elamaPalkki = new ProgressBar(150, 50);
275        elamaPalkki.X = x;
276        elamaPalkki.Y = y;
277        elamaPalkki.BindTo(mittari);
278        elamaPalkki.Color = Color.Red;
279        elamaPalkki.BarColor = Color.Purple;
280        Add(elamaPalkki);
281    }
282
283    void ElamaLoppui(PlatformCharacter pelaaja)
284    {
285        MessageDisplay.Add("Elämät loppuivat");
286        pelaaja.Destroy();
287    }
288
289
290   
291
292}
Note: See TracBrowser for help on using the repository browser.