source: 2010/24/vehakala/Lamari10/Peli.cs @ 973

Revision 973, 9.0 KB checked in by vehakala, 11 years ago (diff)

valmis peli :D

Line 
1using System;
2using Jypeli;
3using Jypeli.ScreenObjects;
4using Jypeli.Assets;
5
6public class Peli : PhysicsGame
7{
8    PhysicsObject pelaaja2;
9    PhysicsObject pelaaja1;
10    PhysicsObject kiekko;
11    bool kiekkoPelaajalla = false;
12    string kenellaKiekko;
13    PhysicsObject maali;
14
15    IntMeter pistelaskuri1;
16    IntMeter pistelaskuri2;
17
18    //double maxNopeus = 200;
19
20
21
22
23    protected override void Begin()
24    {
25        LuoKentta();
26        AsetaNappaimet();
27        AsetaGamePadOhjaimet();
28        LuoKiekko();
29        LisaaPisteNaytto1();
30        LisaaPisteNaytto2();
31    }
32
33    void LisaaPisteNaytto1()
34    {
35        pistelaskuri1 = new IntMeter(0);
36        ValueDisplay pisteNaytto1 = new ValueDisplay();
37        pisteNaytto1.Text = "maaleja: ";
38        pisteNaytto1.X = Screen.Right + -100;
39        pisteNaytto1.Y = Screen.Top - 100;
40        pisteNaytto1.ValueColor = Color.Red;
41        pisteNaytto1.TextColor = Color.Red;
42        pisteNaytto1.BindTo(pistelaskuri1);
43        Add(pisteNaytto1);
44
45    }
46    void LisaaPisteNaytto2()
47    {
48        pistelaskuri2 = new IntMeter(0);
49        ValueDisplay pisteNaytto2 = new ValueDisplay();
50        pisteNaytto2.Text = "maaleja: ";
51        pisteNaytto2.X = Screen.Left + 100;
52        pisteNaytto2.Y = Screen.Top - 100;
53        pisteNaytto2.ValueColor = Color.Red;
54        pisteNaytto2.TextColor = Color.Red;
55        pisteNaytto2.BindTo(pistelaskuri2);
56        Add(pisteNaytto2);
57    }
58
59
60    void LuoKentta()
61    {
62        Level.Width = 1024;
63        Level.Height = 768;
64        Level.CreateBorders(0.1, false); // Laitetaan kentälle näkyvät reunat       
65        Level.Background.Image = LoadImage("lamaritausta");
66        Level.Background.Size = new Vector(Level.Width, 513.0 / 828.0 * Level.Width);
67        Level.BackgroundColor = Color.White;
68        Camera.ZoomToLevel(0.0);
69
70        pelaaja2 = LisaaPelaaja("pelaaja2", "mailamies1", -100, 0.0);
71        pelaaja1 = LisaaPelaaja("pelaaja1", "suomi", 100.0, 0.0);
72        LuoMaali(440.0, 0);
73
74    }
75
76    PhysicsObject LisaaPelaaja(string tag, string kuva, double x, double y)
77    {
78        PhysicsObject pelaaja = new PhysicsObject(30.0, 30.0);
79        pelaaja.Image = LoadImage(kuva);
80        pelaaja.Tag = tag;
81        pelaaja.X = x;
82        pelaaja.Y = y;
83        Add(pelaaja);
84        pelaaja.Restitution = 0.1;
85        pelaaja.AngularDamping = 0.95;
86        AddCollisionHandler(pelaaja, PelaajaTormasi);
87        return pelaaja;
88    }
89
90    void AsetaNappaimet()
91    {
92        Keyboard.Listen(Key.Left, ButtonState.Down, Kaanna, null, pelaaja2, Angle.Degrees(5));
93        Keyboard.Listen(Key.Right, ButtonState.Down, Kaanna, null, pelaaja2, Angle.Degrees(-5));
94        Keyboard.Listen(Key.Up, ButtonState.Down, Kiihdyta, null, pelaaja2, 5.0);
95        Keyboard.Listen(Key.Down, ButtonState.Down, Kiihdyta, null, pelaaja2, -5.0);
96        Keyboard.Listen(Key.RightShift, ButtonState.Pressed, LopetaSpinnaus, "Lopeta spinnaus", pelaaja2);
97
98        Keyboard.Listen(Key.Space, ButtonState.Pressed, Laukaise, "laukaise kiekko", pelaaja2);
99
100        Keyboard.Listen(Key.A, ButtonState.Down, Kaanna, null, pelaaja1, Angle.Degrees(5));
101        Keyboard.Listen(Key.D, ButtonState.Down, Kaanna, null, pelaaja1, Angle.Degrees(-5));
102        Keyboard.Listen(Key.S, ButtonState.Down, Kiihdyta, null, pelaaja1, 5.0);
103        Keyboard.Listen(Key.W, ButtonState.Down, Kiihdyta, null, pelaaja1, -5.0);
104        Keyboard.Listen(Key.LeftShift, ButtonState.Pressed, LopetaSpinnaus, "Lopeta spinnaus", pelaaja1);
105        Keyboard.Listen(Key.LeftControl, ButtonState.Pressed, Laukaise, "laukaise kiekko", pelaaja1);
106
107        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
108
109    }
110
111    void AsetaGamePadOhjaimet()
112    {
113        //Pelaaja 1
114        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Kaanna, null, pelaaja1, Angle.Degrees(5));
115        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Kaanna, null, pelaaja1, Angle.Degrees(-5));
116        ControllerOne.Listen(Button.B, ButtonState.Down, LopetaSpinnaus, null, pelaaja1);
117        ControllerOne.Listen(Button.A, ButtonState.Down, Kiihdyta, null, pelaaja1, -5.0);
118        ControllerOne.Listen(Button.RightTrigger, ButtonState.Pressed, LaukaiseXbox, "laukaise kiekko", pelaaja1, ControllerOne);
119
120        //Pelaaja2
121
122        ControllerTwo.Listen(Button.DPadLeft, ButtonState.Down, Kaanna, null, pelaaja2, Angle.Degrees(5));
123        ControllerTwo.Listen(Button.DPadRight, ButtonState.Down, Kaanna, null, pelaaja2, Angle.Degrees(-5));
124        ControllerTwo.Listen(Button.B, ButtonState.Down, LopetaSpinnaus, null, pelaaja2);
125        ControllerTwo.Listen(Button.A, ButtonState.Down, Kiihdyta, null, pelaaja2, 5.0);
126        ControllerTwo.Listen(Button.RightTrigger, ButtonState.Pressed, LaukaiseXbox, "laukaise kiekko", pelaaja2, ControllerTwo);
127
128    }
129
130    void LopetaSpinnaus(PhysicsObject pelaaja)
131    {
132        pelaaja.Velocity = Vector.Zero;
133    }
134
135    void Kiihdyta(PhysicsObject pelaaja, double length)
136    {
137        pelaaja.Velocity += Vector.FromLengthAndAngle(length, pelaaja.Angle);
138    }
139
140    void Kaanna(PhysicsObject pelaaja, Angle kulma)
141    {
142        pelaaja.Angle += kulma;
143    }
144
145    void Laukaise(PhysicsObject pelaaja)
146    {
147        if (kiekkoPelaajalla && pelaaja.Tag.ToString() == kenellaKiekko)
148        {
149            kiekko.Hit(new Vector(500, 0));
150            kiekkoPelaajalla = false;
151        }
152    }
153
154    void LaukaiseXbox(PhysicsObject pelaaja, GamePad g)
155    {
156        double tatinAsento = g.RightTriggerState;
157        if (tatinAsento > 0.1)
158        {
159            Laukaise(pelaaja);
160        }
161    }
162
163    void LuoKiekko()
164    {
165        kiekko = new PhysicsObject(10.0, 10.0, Shapes.Circle);
166        kiekko.Color = Color.Black;
167        kiekko.Tag = "kiekko";
168        kiekko.Restitution = 0.6;
169        Add(kiekko);
170        AddCollisionHandler(kiekko, KasittelekiekonTormays);
171    }
172
173    void PelaajaTormasi(PhysicsObject tormaaja, PhysicsObject kohde)
174    {
175
176        if (kohde.Tag.ToString() == "kiekko")
177        {
178            //MessageDisplay.Add("Osuttiin kiekkoon");
179            kiekkoPelaajalla = true;
180            kenellaKiekko = tormaaja.Tag.ToString();
181        }
182
183        if (kohde.Tag.ToString() == "pelaaja1")
184        {
185            kenellaKiekko = tormaaja.Tag.ToString();
186        }
187
188        if (kohde.Tag.ToString() == "pelaaja2")
189        {
190            kenellaKiekko = tormaaja.Tag.ToString();
191        }
192
193    }
194
195    protected override void Update(Time time)
196    {
197        if (kiekkoPelaajalla && kenellaKiekko == "pelaaja1")
198        {
199            kiekko.Position = pelaaja1.Position;
200        }
201        else if (kiekkoPelaajalla && kenellaKiekko == "pelaaja2")
202        {
203            kiekko.Position = pelaaja2.Position;
204        }
205
206        base.Update(time);
207    }
208
209    PhysicsObject LuoMaali(double x, double y)
210    {
211        PhysicsObject maali = PhysicsObject.CreateStaticObject(50.0, 100.0);
212        PhysicsObject tolppa1 = PhysicsObject.CreateStaticObject(50.0, 10.0);
213        PhysicsObject tolppa2 = PhysicsObject.CreateStaticObject(50.0, 10.0);
214        PhysicsObject tolppa3 = PhysicsObject.CreateStaticObject(20.0, 100.0);
215
216
217        maali.X = x;
218        maali.Y = y;
219
220
221        maali.Image = LoadImage("maal1");
222
223        maali.Tag = "oikea maali";
224
225        tolppa1.Shape = Shapes.Rectangle;
226        tolppa2.Shape = Shapes.Rectangle;
227        tolppa2.Shape = Shapes.Rectangle;
228        tolppa1.X = x;
229        tolppa1.Y = maali.Top;
230        tolppa1.Color = Color.Red;
231
232
233        tolppa2.X = x;
234        tolppa2.Y = maali.Bottom;
235        tolppa2.Color = Color.Red;
236
237        tolppa3.X = maali.Right;
238        //tolppa3.Y = maali;
239        tolppa3.Color = Color.Red;
240
241        maali.IgnoresCollisionResponse = true;
242
243        Add(maali);
244        Add(tolppa1);
245        Add(tolppa2);
246        Add(tolppa3);
247
248
249        // x-koordinaatti, y-koordinaati, leveys, korkeus
250        LuoSeina(0, 310, 1000, 15);
251        LuoSeina(0, -310, 1000, 15);
252        LuoSeina(480, 15, 20, 650);
253        LuoSeina(-480, 15, 20, 650);
254       
255
256
257
258
259
260
261
262        return maali;
263    }
264    void KasittelekiekonTormays(PhysicsObject kiekko, PhysicsObject kohde)
265    {
266        //kun kiekko menee maalin, peli alkaa keskeltä.
267
268        if (kohde.Tag.ToString() == "oikea maali")
269        {
270            if (kenellaKiekko == "pelaaja1")
271            {
272                pistelaskuri1.Value++;
273            }
274
275            if (kenellaKiekko == "pelaaja2")
276                pistelaskuri2.Value++;
277            {
278                // pelaaja 2 saa pisteen
279            }
280
281            kiekko.Stop();
282            kiekko.Position = Vector.Zero;
283        }
284    }
285    void LuoSeina(double x, double y, double leveys, double korkeus) 
286    {
287        PhysicsObject seina = PhysicsObject.CreateStaticObject(leveys, korkeus);
288
289        seina.IsVisible = false;
290        seina.Position = new Vector(x, y);
291        seina.Color = Color.Black;
292        Add(seina);
293    }
294
295
296}
297
298
299
300
301
302
303
304
305
306
Note: See TracBrowser for help on using the repository browser.