source: 2010/27/jomiilri/Duel/Peli.cs @ 1196

Revision 1196, 8.3 KB checked in by jomiilri, 11 years ago (diff)
Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5
6public class Peli : PhysicsGame
7{
8    PhysicsObject p1;
9    PhysicsObject p2;
10
11    Timer ammusAjastin;
12
13    IntMeter elamaLaskuri1;
14    IntMeter elamaLaskuri2;
15
16    AssaultRifle konekivaari1;
17    AssaultRifle konekivaari2;
18
19    double tyontovoima = 400;
20    const int ruudunLeveys = 32;
21    const int ruudunKorkeus = 32;
22
23    protected override void Begin()
24    {
25        konekivaari1 = new AssaultRifle(20, 5);
26        konekivaari2 = new AssaultRifle(20, 5);
27        konekivaari1.Ammo.Value = 100;
28        konekivaari2.Ammo.Value = 100;
29        konekivaari1.Ammo.MaxValue = 250;
30        konekivaari2.Ammo.MaxValue = 250;
31        konekivaari1.BulletCollision = LuotiOsuu;
32        konekivaari2.BulletCollision = LuotiOsuu;
33
34
35        LuoKentta();
36        LuoElamaLaskuri1();
37        LuoElamaLaskuri2();
38        LuoAmmusLaskuri1();
39        LuoAmmusLaskuri2();
40
41
42        AloitaPeli();
43
44        IsFullScreen = true;
45
46        p1 = LuoHahmo1();
47        p1.LinearDamping = 0.95;
48        p1.Restitution = 0.05;
49        p1.X = Screen.Left + 975;
50        p1.Y = Screen.Top - 760;
51        Add(p1);
52
53        p2 = LuoHahmo2();
54        p2.LinearDamping = 0.95;
55        p2.Restitution = 0.05;
56        p2.X = Screen.Left + 305;
57        p2.Y = Screen.Top - 260;
58        Add(p2);
59
60        LuoOhjaimet();
61    }
62
63    void AloitaPeli()
64    {
65        GameObject alareuna = Level.CreateBottomBorder();
66        GameObject ylareuna = Level.CreateTopBorder();
67        alareuna.Image = LoadImage("tausta1");
68        ylareuna.Image = LoadImage("tausta1");
69
70        Level.Background.Image = LoadImage("taustakuva1");
71        Level.Background.FitToLevel();
72
73        Camera.ZoomToLevel();
74    }
75
76    void LuoKentta()
77    {
78        TileMap ruudut = TileMap.FromFile("TextFile1.txt");
79        ruudut['I'] = LuoSeina;
80        ruudut['*'] = LuoAmmusLaatikko;
81        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
82    }
83
84    PhysicsObject LuoSeina()
85    {
86        PhysicsObject seina = PhysicsObject.CreateStaticObject(32.0, 32.0);
87        seina.Shape = Shapes.Rectangle;
88        seina.Image = LoadImage("tausta1");
89
90        return seina;
91    }
92
93    PhysicsObject LuoHahmo1()
94    {
95        PhysicsObject ukko = new PhysicsObject(32, 32);
96        ukko.Image = LoadImage("pelaaja1");
97        ukko.Add(konekivaari1);
98        ukko.Tag = "p1";
99
100        return ukko;
101    }
102
103    PhysicsObject LuoHahmo2()
104    {
105        PhysicsObject ukko = new PhysicsObject(32, 32);
106        ukko.Image = LoadImage("pelaaja2");
107        ukko.Add(konekivaari2);
108        ukko.Tag = "p2";
109
110        return ukko;
111    }
112
113    void LiikutaPelaajaa(PhysicsObject pelaaja)
114    {
115        Vector tyonto = Vector.FromLengthAndAngle(tyontovoima, pelaaja.Angle);
116        pelaaja.Push(tyonto);
117    }
118
119    void LiikutaPelaajaaTaakse(PhysicsObject pelaaja)
120    {
121        Vector taakse = Vector.FromLengthAndAngle(-tyontovoima, pelaaja.Angle);
122        pelaaja.Push(taakse);
123    }
124
125    void LuoOhjaimet()
126    {
127        Keyboard.Listen(Key.Left, ButtonState.Down, KaannaPelaajaa, null, 3, p1);
128        Keyboard.Listen(Key.Right, ButtonState.Down, KaannaPelaajaa, null, -3, p1);
129        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, null, p1);
130        Keyboard.Listen(Key.Up, ButtonState.Released, PysaytaPelaaja, null, p1);
131        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaaTaakse, null, p1);
132        Keyboard.Listen(Key.RightControl, ButtonState.Down, Ammu, "Ammu", p1, konekivaari1);
133
134        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, KaannaPelaajaa, null, 3, p1);
135        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, KaannaPelaajaa, null, -3, p1);
136        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, LiikutaPelaajaa, null, p1);
137        ControllerOne.Listen(Button.DPadUp, ButtonState.Released, PysaytaPelaaja, null, p1);
138        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, LiikutaPelaajaaTaakse, null, p1);
139        ControllerOne.Listen(Button.A, ButtonState.Down, Ammu, "Ammu", p1, konekivaari1);
140
141        Keyboard.Listen(Key.A, ButtonState.Down, KaannaPelaajaa, null, 3, p2);
142        Keyboard.Listen(Key.D, ButtonState.Down, KaannaPelaajaa, null, -3, p2);
143        Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, null, p2);
144        Keyboard.Listen(Key.W, ButtonState.Released, PysaytaPelaaja, null, p2);
145        Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaaTaakse, null, p2);
146        Keyboard.Listen(Key.F, ButtonState.Down, Ammu, "Ammu", p2, konekivaari2);
147
148        ControllerTwo.Listen(Button.DPadLeft, ButtonState.Down, KaannaPelaajaa, null, 3, p2);
149        ControllerTwo.Listen(Button.DPadRight, ButtonState.Down, KaannaPelaajaa, null, -3, p2);
150        ControllerTwo.Listen(Button.DPadUp, ButtonState.Down, LiikutaPelaajaa, null, p2);
151        ControllerTwo.Listen(Button.DPadUp, ButtonState.Released, PysaytaPelaaja, null, p2);
152        ControllerTwo.Listen(Button.DPadDown, ButtonState.Down, LiikutaPelaajaaTaakse, null, p2);
153        ControllerTwo.Listen(Button.A, ButtonState.Down, Ammu, "Ammu", p2, konekivaari2);
154    }
155
156    void Ammu(PhysicsObject ampuja, Weapon ase)
157    {
158        PhysicsObject ammus = ase.Shoot();
159        if (ammus != null) ammus.Tag = ampuja;
160    }
161
162    void KaannaPelaajaa(int kulma, PhysicsObject pelaaja)
163    {
164        pelaaja.Angle += Angle.Degrees(kulma);
165    }
166
167    void PysaytaPelaaja(PhysicsObject pelaaja)
168    {
169        pelaaja.Stop();
170    }
171
172    void LuotiOsuu(PhysicsObject luoti, PhysicsObject seina)
173    {
174        if (luoti.Tag != seina)
175        {
176            if (seina.Tag.ToString() == "p2")
177            {
178                elamaLaskuri1.Value = elamaLaskuri1.Value - 4;
179            }
180                if (seina.Tag.ToString() == "p1")
181                {
182                elamaLaskuri2.Value = elamaLaskuri2.Value - 4;
183                }
184        luoti.Destroy();
185        }
186
187    }
188
189    void LuoElamaLaskuri1()
190    {
191        elamaLaskuri1 = new IntMeter(100);
192
193        Label elamaNaytto1 = new Label();
194        elamaNaytto1.X = Screen.Left + 100;
195        elamaNaytto1.Y = Screen.Top - 980;
196        elamaNaytto1.TextColor = Color.Red;
197
198        elamaNaytto1.BindTo(elamaLaskuri1);
199        Add(elamaNaytto1);
200    }
201
202    void LuoElamaLaskuri2()
203    {
204        elamaLaskuri2 = new IntMeter(100);
205
206        Label elamaNaytto2 = new Label();
207        elamaNaytto2.X = Screen.Right - 100;
208        elamaNaytto2.Y = Screen.Top - 980;
209        elamaNaytto2.TextColor = Color.Red;
210
211        elamaNaytto2.BindTo(elamaLaskuri2);
212        Add(elamaNaytto2);
213    }
214
215    void LuoAmmusLaskuri1()
216    {
217        Label ammusNaytto1 = new Label();
218        ammusNaytto1.X = Screen.Left + 200;
219        ammusNaytto1.Y = Screen.Top - 980;
220        ammusNaytto1.TextColor = Color.Black;
221
222        ammusNaytto1.BindTo(konekivaari2.Ammo);
223        Add(ammusNaytto1);
224    }
225
226    void LuoAmmusLaskuri2()
227    {
228        Label ammusNaytto2 = new Label();
229        ammusNaytto2.X = Screen.Right - 200;
230        ammusNaytto2.Y = Screen.Top - 980;
231        ammusNaytto2.TextColor = Color.Black;
232
233        ammusNaytto2.BindTo(konekivaari1.Ammo);
234        Add(ammusNaytto2);
235    }
236
237    PhysicsObject LuoAmmusLaatikko()
238    {
239        PhysicsObject ammusLaatikko = new PhysicsObject(18, 12);
240        ammusLaatikko.Image = LoadImage("ammuslaatikko1");
241        Add(ammusLaatikko);
242        AddCollisionHandler(ammusLaatikko, LisaaAmmuksia);       
243        return ammusLaatikko;
244    }
245
246    void LisaaAmmuksia(PhysicsObject ammusLaatikko, PhysicsObject pelaaja)
247    {
248        if (konekivaari1.Ammo.Value == 250) return;
249        else
250        {
251            konekivaari1.Ammo.Value += 50;
252            ammusLaatikko.Destroy();
253        }
254       
255    }
256
257    void LuoAmmusLaatikkoAjastint()
258    {
259        ammusAjastin = new Timer();
260        ammusAjastin.Interval = 40;
261        ammusAjastin.Trigger += LisaaAmmusLaatikoita;
262        Add(ammusAjastin);
263        ammusAjastin.Start();
264
265    }
266
267    void LisaaAmmusLaatikoita(Timer sender)
268    {
269        PhysicsObject laatikko = LuoAmmusLaatikko();
270        laatikko.X = RandomGen.NextDouble(Screen.Left + 100, Screen.Left - 900);
271        laatikko.Y = RandomGen.NextDouble(Screen.Top + 100, Screen.Top - 900);
272    }
273}
Note: See TracBrowser for help on using the repository browser.