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

Revision 5100, 7.1 KB checked in by otweijo, 7 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    enum Pelimuoto { Yksinpeli, Moninpeli, Survival }
14
15    ColorTileMap ruudut;
16
17    public Image pelaajanKuva = LoadImage("pelaajan kuva");
18    public Image lyontiKuva = LoadImage("lyonti anim");
19    public Image potkuKuva = LoadImage("potku anim");
20    public Image[] kavelyAnimaatio = LoadImages("kavely anim", "kavely anim2");
21    Image taustaKuva;
22
23    public override void Begin()
24    {
25        Peli = this;
26        LuoAlkuvalikko();
27        taustaKuva = LoadImage("valikon tausta");
28        Level.Background.Image = taustaKuva;
29    }
30
31    void AloitaPeli(Pelimuoto muoto)
32    {
33        ClearAll();
34        LuoKentta();
35        if (muoto == Pelimuoto.Yksinpeli)
36        {
37            //LuoPelaaja(new Vector(Level.Left + 100, Level.Bottom + 100), 1);
38            ruudut = ColorTileMap.FromLevelAsset("LAYOUT");
39            ruudut.SetTileMethod(Color.Black, LuoSeina);
40            ruudut.SetTileMethod(Color.Azure, LuoTaso);
41            ruudut.SetTileMethod(Color.Red, LuoPelaaja, 1, "yksinpeli");
42            //ruudut.SetTileMethod(Color.BrightGreen, LuoPelaaja);
43
44            ruudut.Execute();
45            LuoVihollinen(new Vector(Level.Right - 100, Level.Bottom + 100));
46        }
47
48        if (muoto == Pelimuoto.Moninpeli)
49        {
50           
51            ruudut = ColorTileMap.FromLevelAsset("LAYOUT");
52            ruudut.SetTileMethod(Color.Black, LuoSeina);
53            ruudut.SetTileMethod(Color.Azure, LuoTaso);
54            ruudut.SetTileMethod(Color.Red, LuoPelaaja, 1, "taistelu");
55            ruudut.SetTileMethod(Color.YellowGreen, LuoPelaaja, 2, "taistelu");
56            ruudut.Execute();
57            //LuoPelaaja(new Vector(Level.Left + 100, Level.Bottom + 100), 1);
58            //LuoPelaaja(new Vector(Level.Right - 100, Level.Bottom + 100), 2);
59        }
60        if (muoto == Pelimuoto.Survival)
61        {
62            ruudut = ColorTileMap.FromLevelAsset("LAYOUT");
63            ruudut.SetTileMethod(Color.Black, LuoSeina);
64            ruudut.SetTileMethod(Color.Azure, LuoTaso);
65            ruudut.SetTileMethod(Color.Gray, LuoPelaaja, 1, "coop");
66            ruudut.SetTileMethod(Color.Cyan, LuoPelaaja, 2, "coop");
67            ruudut.Execute();
68            //LuoPelaaja(new Vector(Level.Left + 100, Level.Bottom + 100), 1);
69            //LuoPelaaja(new Vector(Level.Right - 100, Level.Bottom + 100), 2);
70        }
71 
72        LuoOhjaimet(muoto);
73        Camera.ZoomFactor += 0.075;
74        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
75        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
76    }
77
78    void LuoKentta()
79    {
80        Gravity = new Vector(0.0, -800.0);
81       Level.Size = new Vector(Screen.Width, Screen.Height);
82       
83      /*  PhysicsObject alaReuna = Level.CreateBottomBorder();
84        alaReuna.Tag = "lattia";
85       *
86
87
88        PhysicsObject vasenReuna = Level.CreateLeftBorder();
89        vasenReuna.IsVisible = false;
90        PhysicsObject oikeareuna = Level.CreateRightBorder();
91        oikeareuna.IsVisible = false;
92        */
93       
94    }
95    void LuoSeina(Vector paikka, double leveys, double korkeus)
96    {
97        PhysicsObject seina = PhysicsObject.CreateStaticObject(leveys, korkeus);
98        seina.Position = paikka;
99        seina.IsVisible = false;
100        Add(seina);
101    }
102    void LuoTaso(Vector paikka, double leveys, double korkeus)
103    {
104        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
105        taso.Position = paikka;
106        taso.Tag = "lattia";
107        taso.Color = Color.Gray;
108        Add(taso);
109    }
110
111    void LuoPelaaja(Vector paikka, double leveys, double korkeus, int numero, String tagi)
112    {
113        Pelaaja p = new Pelaaja(500, 500, 100);
114        p.Position = new Vector(paikka.X, paikka.Y + 750);
115        //p.CanRotate = false;
116        p.Restitution = 0.1;
117        p.Image = pelaajanKuva;
118        //p.TextureFillsShape = true;
119        p.Shape = Shape.FromImage(pelaajanKuva);
120        p.Tag = tagi;
121        p.CanRotate = false;
122        p.KineticFriction = 0.0;
123        p.LinearDamping = 0.95;
124        p.Animation = new Animation(kavelyAnimaatio);
125        p.Animation.FPS = 3;
126        p.Animation.Start();
127        Add(p);
128        Pelaajat[numero - 1] = p;
129        AddCollisionHandler<PhysicsObject, PhysicsObject>(p, "lattia", delegate { p.IsOnGround = true; });
130        AddCollisionHandler<Pelaaja, Vihollinen>(p, delegate(Pelaaja pelaaja, Vihollinen v) { v.Elamat.Value -= 10; });
131    }
132
133    void LuoVihollinen(Vector paikka)
134    {
135        Vihollinen vihu = new Vihollinen(50, 50, 100);
136        vihu.Position = paikka;
137        vihu.Tag = "vihollinen";
138        vihu.IgnoresCollisionResponse = true;
139        Add(vihu);
140    }
141
142    void LuoOhjaimet(Pelimuoto muoto)
143    {
144        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja 1 hyppää", Pelaajat[0]);
145        Keyboard.Listen(Key.A, ButtonState.Down, Liiku, "Pelaaja 1 liikkuu vasen", Pelaajat[0], new Vector(-500.0, 0.0));
146        Keyboard.Listen(Key.D, ButtonState.Down, Liiku, "Pelaaja 1 liikkuu oikea", Pelaajat[0], new Vector(500.0, 0.0));
147        Keyboard.Listen(Key.F, ButtonState.Pressed, Pelaajat[0].Lyo, "Pelaaja 1 lyö");
148        Keyboard.Listen(Key.S, ButtonState.Pressed, Pelaajat[0].Potkaise, "Pelaaja 1 potkaise");
149        if (muoto == Pelimuoto.Moninpeli || muoto == Pelimuoto.Survival)
150        {
151            Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja 2 hyppää", Pelaajat[1]);
152            Keyboard.Listen(Key.Left, ButtonState.Down, Liiku, "Pelaaja 2 liikkuu vasen", Pelaajat[1], new Vector(-500.0, 0.0));
153            Keyboard.Listen(Key.Right, ButtonState.Down, Liiku, "Pelaaja 2 liikkuu oikea", Pelaajat[1], new Vector(500.0, 0.0));
154            Keyboard.Listen(Key.J, ButtonState.Pressed, Pelaajat[1].Lyo, "Pelaaja 2 lyö");
155            Keyboard.Listen(Key.Down, ButtonState.Pressed, Pelaajat[1].Potkaise, "Pelaaja 2 potkaise");
156        }
157    }
158
159    void Hyppaa(Pelaaja pelaaja)
160    {
161        if (pelaaja.IsOnGround) 
162        {
163            pelaaja.Hit(new Vector(0.0, 1000.0));
164            pelaaja.IsOnGround = false;
165        }
166
167    }
168
169    void Liiku(Pelaaja pelaaja, Vector suunta)
170    {
171        pelaaja.Push(suunta);
172    }
173    void LuoAlkuvalikko()
174    {
175        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
176        "Yksinpeli", "Moninpeli", "Survival", "Lopeta");
177        Add(alkuValikko);
178        alkuValikko.SetButtonColor(Color.Black);
179        alkuValikko.SetButtonTextColor(Color.Red);
180        alkuValikko.AddItemHandler(0, delegate { AloitaPeli(Pelimuoto.Yksinpeli); });
181        alkuValikko.AddItemHandler(1, delegate { AloitaPeli(Pelimuoto.Moninpeli); });
182        alkuValikko.AddItemHandler(2, delegate { AloitaPeli(Pelimuoto.Survival); });
183    }
184}
Note: See TracBrowser for help on using the repository browser.