source: 2014/26/OttoW/Sticman The Last Stand/Sticman The Last Stand/Sticman The Last Stand/Sticman_The_Last_Stand.cs @ 5158

Revision 5158, 9.6 KB checked in by lajomart, 8 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Sticman_The_Last_Stand : PhysicsGame
10{
11    public static Sticman_The_Last_Stand Peli;
12    public Pelaaja[] Pelaajat = new Pelaaja[2];
13    public Vihollinen[] Viholliset = new Vihollinen[10];
14    enum Pelimuoto { Yksinpeli, Moninpeli, Survival }
15
16    ColorTileMap ruudut;
17
18    public Image pelaajanKuva = LoadImage("pelaajan kuva");
19    public Image vihunKuva = LoadImage("vihu velho");
20    public Image lyontiKuva = LoadImage("lyonti anim");
21    public Image potkuKuva = LoadImage("potku anim");
22    public Image[] kavelyAnimaatio = LoadImages("kavely anim", "kavely anim2");
23    Image taustaKuva;
24    public Image aseenkuva = LoadImage("deagle");
25
26    public override void Begin()
27    {
28        Peli = this;
29        LuoAlkuvalikko();
30        taustaKuva = LoadImage("valikon tausta");
31        Level.Background.Image = taustaKuva;
32        MediaPlayer.Play("part_of_-rainski-10200_hifi");
33        //MediaPlayer.PlayFromFile("part_of_-rainski-10200_hifi.mp3");
34        MediaPlayer.IsRepeating = true;
35    }
36
37    void AloitaPeli(Pelimuoto muoto)
38    {
39        ClearAll();
40        LuoKentta();
41        if (muoto == Pelimuoto.Yksinpeli)
42        {
43            ruudut = ColorTileMap.FromLevelAsset("LAYOUT");
44            ruudut.SetTileMethod(Color.Black, LuoSeina);
45            ruudut.SetTileMethod(Color.Azure, LuoTaso);
46            ruudut.SetTileMethod(Color.Red, LuoPelaaja, 1, "yksinpeli");
47
48            ruudut.Execute();
49            int vihuNumero = 0;
50            LuoVihollinen(new Vector(RandomGen.NextDouble(Level.Right, Level.Right + 500), RandomGen.NextDouble(Level.Bottom, Level.Top)), vihuNumero);
51        }
52
53        if (muoto == Pelimuoto.Moninpeli)
54        {
55
56            ruudut = ColorTileMap.FromLevelAsset("LAYOUT");
57            ruudut.SetTileMethod(Color.Black, LuoSeina);
58            ruudut.SetTileMethod(Color.Azure, LuoTaso);
59            ruudut.SetTileMethod(Color.Red, LuoPelaaja, 1, "taistelu");
60            ruudut.SetTileMethod(Color.YellowGreen, LuoPelaaja, 2, "taistelu");
61            ruudut.Execute();
62            //LuoPelaaja(new Vector(Level.Left + 100, Level.Bottom + 100), 1);
63            //LuoPelaaja(new Vector(Level.Right - 100, Level.Bottom + 100), 2);
64        }
65        if (muoto == Pelimuoto.Survival)
66        {
67            ruudut = ColorTileMap.FromLevelAsset("LAYOUT");
68            ruudut.SetTileMethod(Color.Black, LuoSeina);
69            ruudut.SetTileMethod(Color.Azure, LuoTaso);
70            ruudut.SetTileMethod(Color.Gray, LuoPelaaja, 1, "coop");
71            ruudut.SetTileMethod(Color.Cyan, LuoPelaaja, 2, "coop");
72            ruudut.Execute();
73
74            int i = 10;
75            int vihuNumero = 0;
76
77            while (i > 0)
78            {
79                int j = RandomGen.NextInt(1, 4);
80
81                if (j == 1)
82                {
83                    LuoVihollinen(new Vector(RandomGen.NextDouble(Level.Left - 500, Level.Left), RandomGen.NextDouble(Level.Bottom, Level.Top)), vihuNumero);
84                    vihuNumero++;
85                }
86                else
87                {
88                    if (j == 2)
89                    {
90                        LuoVihollinen(new Vector(RandomGen.NextDouble(Level.Left - 500, Level.Right + 500), RandomGen.NextDouble(Level.Top, Level.Top + 500)), vihuNumero);
91                        vihuNumero++;
92                    }
93                    else
94                    {
95                        LuoVihollinen(new Vector(RandomGen.NextDouble(Level.Right, Level.Right + 500), RandomGen.NextDouble(Level.Bottom, Level.Top)), vihuNumero);
96                        vihuNumero++;
97                    }
98                }
99
100                i--;
101            }
102            //LuoPelaaja(new Vector(Level.Left + 100, Level.Bottom + 100), 1);
103            //LuoPelaaja(new Vector(Level.Right - 100, Level.Bottom + 100), 2);
104        }
105
106        LuoOhjaimet(muoto);
107        Camera.ZoomFactor += 0.075;
108
109    }
110
111    void LuoKentta()
112    {
113        Gravity = new Vector(0.0, -1500.0);
114        Level.Size = new Vector(Screen.Width, Screen.Height);
115    }
116    void LuoSeina(Vector paikka, double leveys, double korkeus)
117    {
118        PhysicsObject seina = PhysicsObject.CreateStaticObject(leveys, korkeus);
119        seina.Position = paikka;
120        seina.CollisionIgnoreGroup = 1;
121        seina.IsVisible = false;
122        Add(seina);
123    }
124    void LuoTaso(Vector paikka, double leveys, double korkeus)
125    {
126        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
127        taso.Position = paikka;
128        taso.CollisionIgnoreGroup = 1;
129        taso.Tag = "lattia";
130        taso.Color = Color.Black;
131        Add(taso);
132    }
133
134    void LuoPelaaja(Vector paikka, double leveys, double korkeus, int numero, String tagi)
135    {
136        Pelaaja p = new Pelaaja(150, 150, 100);
137        p.Position = new Vector(paikka.X, paikka.Y + 100);
138        //p.CanRotate = false;
139        p.Restitution = 0.1;
140        p.Image = pelaajanKuva;
141        //p.TextureFillsShape = true;
142        p.Shape = Shape.FromImage(pelaajanKuva);
143        p.Tag = tagi;
144        p.CanRotate = false;
145        p.KineticFriction = 0.0;
146        p.LinearDamping = 0.95;
147        p.Animation = new Animation(kavelyAnimaatio);
148        p.Animation.FPS = 3;
149        p.Animation.Start();
150
151        if (p.Tag.ToString() == "coop")
152        {
153            p.Aseenkuva();
154        }
155
156        Add(p);
157        Pelaajat[numero - 1] = p;
158        AddCollisionHandler<PhysicsObject, PhysicsObject>(p, "lattia", delegate { p.IsOnGround = true; });
159        AddCollisionHandler<Pelaaja, Vihollinen>(p, delegate(Pelaaja pelaaja, Vihollinen v) { v.Elamat.Value -= 10; });
160        AddCollisionHandler(p, tormasi);
161
162        LuoElamaLaskuri(numero);
163    }
164    void tormasi(PhysicsObject pelaaja, PhysicsObject kohde)
165    {
166        if (kohde.Tag.ToString() == "taistelu")
167        {
168            MessageDisplay.Add("Pelaaja törmäsi!");
169        }
170        if (kohde.Tag.ToString() == "vihollinen")
171        {
172            Pelaaja p = pelaaja as Pelaaja;
173            p.Elamat.Value -= 10;
174        }
175    }
176
177    void LuoVihollinen(Vector paikka, int vihuNumero)
178    {
179        Vihollinen vihu = new Vihollinen(150, 150, 100);
180        vihu.Position = paikka;
181        vihu.Tag = "vihollinen";
182        vihu.Image = vihunKuva;
183        vihu.Shape = Shape.FromImage(vihunKuva);
184        vihu.CollisionIgnoreGroup = 1;
185        Viholliset[vihuNumero] = vihu;
186        Add(vihu);
187    }
188
189    void LuoOhjaimet(Pelimuoto muoto)
190    {
191        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
192        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
193
194        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja 1 hyppää", Pelaajat[0]);
195        Keyboard.Listen(Key.A, ButtonState.Down, Liiku, "Pelaaja 1 liikkuu vasen", Pelaajat[0], new Vector(-750.0, 0.0));
196        Keyboard.Listen(Key.D, ButtonState.Down, Liiku, "Pelaaja 1 liikkuu oikea", Pelaajat[0], new Vector(750.0, 0.0));
197        Keyboard.Listen(Key.F, ButtonState.Pressed, Pelaajat[0].Lyo, "Pelaaja 1 lyö");
198        Keyboard.Listen(Key.S, ButtonState.Pressed, Pelaajat[0].Potkaise, "Pelaaja 1 potkaise");
199        if (muoto == Pelimuoto.Moninpeli || muoto == Pelimuoto.Survival)
200        {
201            Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja 2 hyppää", Pelaajat[1]);
202            Keyboard.Listen(Key.Left, ButtonState.Down, Liiku, "Pelaaja 2 liikkuu vasen", Pelaajat[1], new Vector(-750.0, 0.0));
203            Keyboard.Listen(Key.Right, ButtonState.Down, Liiku, "Pelaaja 2 liikkuu oikea", Pelaajat[1], new Vector(750.0, 0.0));
204            Keyboard.Listen(Key.J, ButtonState.Pressed, Pelaajat[1].Lyo, "Pelaaja 2 lyö");
205            Keyboard.Listen(Key.Down, ButtonState.Pressed, Pelaajat[1].Potkaise, "Pelaaja 2 potkaise");
206        }
207    }
208    void LuoElamaLaskuri(int numero)
209    {
210            Pelaajat[numero -1].Elamat.LowerLimit += delegate { kuolema(numero); };
211
212            ProgressBar elamaPalkki = new ProgressBar(150, 20);
213            if (numero == 1)
214            {
215                elamaPalkki.X = Screen.Left + 150;
216                elamaPalkki.Y = Screen.Top - 20;
217            }
218            if (numero == 2)
219            {
220                elamaPalkki.X = Screen.Right - 150;
221                elamaPalkki.Y = Screen.Top - 20;
222            }
223            elamaPalkki.BindTo(Pelaajat[numero - 1].Elamat);
224            Add(elamaPalkki);
225    }
226
227    void kuolema(int numero)
228    {
229        Pelaajat[numero - 1].Destroy();
230    }
231
232    void Hyppaa(Pelaaja pelaaja)
233    {
234        if (pelaaja.IsOnGround)
235        {
236            pelaaja.Hit(new Vector(0.0, 1500.0));
237            pelaaja.IsOnGround = false;
238        }
239
240    }
241
242    void Liiku(Pelaaja pelaaja, Vector suunta)
243    {
244        pelaaja.Push(suunta);
245    }
246    void LuoAlkuvalikko()
247    {
248        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
249        "Yksinpeli", "Moninpeli", "Survival", "Lopeta");
250        Add(alkuValikko);
251        alkuValikko.SetButtonColor(Color.Black);
252        alkuValikko.SetButtonTextColor(Color.Red);
253        alkuValikko.BorderColor = Color.Red;
254        alkuValikko.ActiveColor = Color.Black;
255        alkuValikko.SelectionColor = Color.Black;
256        alkuValikko.AddItemHandler(0, delegate { AloitaPeli(Pelimuoto.Yksinpeli); });
257        alkuValikko.AddItemHandler(1, delegate { AloitaPeli(Pelimuoto.Moninpeli); });
258        alkuValikko.AddItemHandler(2, delegate { AloitaPeli(Pelimuoto.Survival); });
259    }
260}
Note: See TracBrowser for help on using the repository browser.