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

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