source: 2014/23/AnttiR/stick/stick/stick/stick.cs @ 4883

Revision 4883, 6.9 KB checked in by jotapoti, 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 stick : PhysicsGame
10{
11    double y = -1000;
12    double x = 0;
13    private Pelaaja pelaaja1;
14    private Pelaaja pelaaja2;
15    private const double RUUDUN_LEVEYS = 40;
16    private const double RUUDUN_KORKEUS = 40;
17    DoubleMeter elamalaskuri;
18   
19   
20
21    public override void Begin()
22    {
23        // TODO: Kirjoita ohjelmakoodisi tähän
24        // TODO: poista edellinen teksti
25        // TODO: Voi hitsi etkö ollenkaan jaksa poistaa niitä <_<
26        // TODO: Ilmeisesti en, tätyy tsempata
27       
28        SetGravity(x, y); //luo painovoiman
29
30        //pelaaja1 = new Pelaaja(RUUDUN_LEVEYS, RUUDUN_KORKEUS, 10, 1, 800, 200, "Sotilas");
31        pelaaja1 = new Pelaaja(RUUDUN_LEVEYS, RUUDUN_KORKEUS, 4, 2, 600, 250, "Kiitaja");
32        pelaaja2 = new Pelaaja(RUUDUN_LEVEYS, RUUDUN_KORKEUS, 10, 1, 600, 200, "Sotilas");
33        //pelaaja2 = new Pelaaja(RUUDUN_LEVEYS, RUUDUN_KORKEUS, 4, 2, 600, 250, "Kiitaja");
34        // elpit, hypyt, hyppykorkeus, vauhti, luokan nimi
35
36        LuoKentta("Kenttäkokeilu2");
37
38        luokontrollit();
39
40
41    }
42
43    void DoUI(Pelaaja pelaaja)
44    {
45        elamalaskuri = new DoubleMeter(pelaaja.MaxHP);
46        elamalaskuri.MaxValue = 10;
47        //elamalaskuri.LowerLimit += ElamaLoppui;
48
49        ProgressBar elamaPalkki = new ProgressBar(100, 20);
50        elamaPalkki.X = Screen.Left + 100;
51        elamaPalkki.Y = Screen.Bottom + 100;
52        elamaPalkki.BindTo(elamalaskuri);
53        elamaPalkki.Color = Color.Black;
54        Add(elamaPalkki);
55
56    }
57
58    void luokontrollit()
59    {
60        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
61
62        /// P1
63
64        Keyboard.Listen(Key.W, ButtonState.Pressed, delegate
65        {
66            hyppaa(pelaaja1, 1);
67        }, "Hyppää tiettyyn suuntaan, tässä ylös");
68
69        Keyboard.Listen(Key.S, ButtonState.Pressed, delegate
70        {
71            hyppaa(pelaaja1, 2);
72        }, "Hyppää tiettyyn suuntaan, tässä alas");
73
74        Keyboard.Listen(Key.D, ButtonState.Down, delegate
75        {
76            Vector vauhti = new Vector(10, 0);
77            kavele(1, pelaaja1);
78        }, "kävele johonkin suuntaan");
79        Keyboard.Listen(Key.A, ButtonState.Down, delegate
80        {
81            Vector vauhti = new Vector(10, 0);
82            kavele(-1, pelaaja1);
83        }, "kävele johonkin suuntaan");
84        Keyboard.Listen(Key.G, ButtonState.Pressed, delegate
85        {
86            Rajayta(pelaaja1, 100);
87        }, "rajaytysisku.");
88
89        /// P2
90
91        Keyboard.Listen(Key.Up, ButtonState.Pressed, delegate
92        {
93            hyppaa(pelaaja2, 1);
94        }, "Hyppää tiettyyn suuntaan, tässä ylös");
95
96        Keyboard.Listen(Key.Down, ButtonState.Pressed, delegate
97        {
98            hyppaa(pelaaja2, 2);
99        }, "Hyppää tiettyyn suuntaan, tässä alas");
100
101        Keyboard.Listen(Key.Right, ButtonState.Down, delegate
102        {
103            Vector vauhti = new Vector(10, 0);
104            kavele(1, pelaaja2);
105        }, "kävele johonkin suuntaan");
106        Keyboard.Listen(Key.Left, ButtonState.Down, delegate
107        {
108            Vector vauhti = new Vector(10, 0);
109            kavele(-1, pelaaja2);
110        }, "kävele johonkin suuntaan");
111
112        Keyboard.Listen(Key.NumPad4, ButtonState.Pressed, delegate
113        {
114            Rajayta(pelaaja2, 100);
115        }, "rajaytysisku.");
116    }
117
118    void SetGravity(double x, double y)
119    {
120        Gravity = new Vector(x, y);
121    }
122    //Abilityt
123
124    void Rajayta(Pelaaja pelaaja, int numero)
125    {
126        //cd 12s, dmg 2
127        if (pelaaja.IgnoresExplosions == false)
128        {
129        pelaaja.IgnoresExplosions = true;
130        Explosion rajahdys = new Explosion(numero);
131        rajahdys.Position = pelaaja.Position;
132        rajahdys.Image = null;
133        rajahdys.ShockwaveColor = new Color(200, 200, 200, 90);
134            rajahdys.AddShockwaveHandler("pelaaja", HitByShockWave);
135        Add(rajahdys);
136        Timer.SingleShot(3, delegate
137        {
138            pelaaja.IgnoresExplosions = false;
139        });
140        }
141    }
142    void HitByShockWave(Pelaaja pelaaja, Vector suunta)
143    {
144        if (pelaaja.IgnoresExplosions = false)
145        {
146            pelaaja.elpit.AddValue(-2);
147        }
148        }
149    }
150    //Liikkuminen
151    void hyppaa(Pelaaja pelaaja, int suunta)
152    {
153        if (pelaaja.hypyt > 0)
154        {
155            if (suunta == 1)
156            {   
157                pelaaja.Hit(new Vector(0, pelaaja.Hyppykorkeus));
158                pelaaja.hypyt--;
159            }   
160            if (suunta == 2)
161            {
162                pelaaja.Hit(new Vector(0, -500));
163            }
164        }
165    }
166
167    void kavele(int suunta , Pelaaja pelaaja)
168    {
169        pelaaja.Walk(pelaaja.Nopeus * suunta);
170    }
171
172    void LuoKentta(String kentta)
173    {
174        ColorTileMap ruudut = ColorTileMap.FromLevelAsset(kentta);
175        ruudut.SetTileMethod(Color.Black, LuoSeina);
176        ruudut.SetTileMethod(Color.FromHexCode("00ff00"), LuoPelaaja, pelaaja1);
177        ruudut.SetTileMethod(Color.FromHexCode("ff0000"), LuoPelaaja, pelaaja2);
178        ruudut.Execute(RUUDUN_LEVEYS, RUUDUN_KORKEUS);
179    }
180    void LuoPelaaja(Vector paikka, double leveys, double korkeus, Pelaaja pelaaja)
181    {       
182        pelaaja.Size = new Vector(leveys / 1.5, korkeus / 1.5);
183        pelaaja.Position = paikka;
184        pelaaja.Shape = Shape.Rectangle;
185        pelaaja.Restitution = 0;
186        pelaaja.Image = LoadImage("Ukko");
187        AddCollisionHandler<Pelaaja, PhysicsObject>(pelaaja, "Seina", TormasiSeinaan);
188        Add(pelaaja);
189    }
190    void TormasiSeinaan(Pelaaja pelaaja, PhysicsObject seina)
191    {
192        if (pelaaja.Velocity.Y < 0)
193        {
194            pelaaja.hypyt = pelaaja.Hyppymax;
195        }
196    }
197
198    void LuoSeina(Vector paikka, double leveys, double korkeus)
199    {
200        PhysicsObject Seina = PhysicsObject.CreateStaticObject(leveys, korkeus);
201        Seina.Position = paikka;
202        Seina.Shape = Shape.Rectangle;
203        Seina.Color = Color.Black;
204        Seina.Tag = "Seina";
205        Add(Seina);
206    }
207}
208
209class Pelaaja : PlatformCharacter
210{
211    public string hahmo = "";
212    public int MaxHP { get; set; }
213    public IntMeter elpit;
214    public int hypyt;
215    public int Nopeus;
216    public string Hahmo;
217    public int Hyppymax { get; set; }
218    public int Hyppykorkeus { get; set; }
219    public Pelaaja(Double leveys, double korkeus, int maxhp, int hyppymax, int hyppykorkeus, int nopeus, string hahmo)
220        : base(leveys, korkeus)
221    {
222        Hyppymax = hyppymax;
223        Nopeus = nopeus;
224        Hyppykorkeus = hyppykorkeus;
225        hypyt = Hyppymax;
226        Hahmo = hahmo;
227        MaxHP = maxhp;
228        elpit = new IntMeter(maxhp, 0, maxhp);
229    }
230
231}
Note: See TracBrowser for help on using the repository browser.