source: 2011/31/HeidiH/FysiikkaPeli1/FysiikkaPeli1/FysiikkaPeli1/Peli.cs @ 2515

Revision 2515, 6.1 KB checked in by heemhama, 8 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Peli : PhysicsGame
10{   Vector nopeusYlos =new Vector (0, +200.0);
11    Vector nopeusAlas = new Vector (0, -200.0);
12    PhysicsObject pallo1;
13    PhysicsObject pallo2;
14
15    PhysicsObject maila1;
16    PhysicsObject maila2;
17    PhysicsObject vasenReuna;
18    PhysicsObject oikeaReuna;
19
20    IntMeter pelaajan1Pisteet;
21    IntMeter pelaajan2Pisteet;
22
23   
24
25   
26    public override void Begin()
27    {
28        LuoKentta();
29        AsetaOhjaimet();
30        LisaaLaskurit();
31        AloitaPeli();   // TODO: Kirjoita ohjelmakoodisi tähän
32    }
33
34
35    void LuoKentta()
36    {
37        pallo2 = new PhysicsObject(40.0, 40.0);
38        Add(pallo2);
39        pallo2.Shape = Shape.Circle;
40        pallo2.X = -200.0;
41        pallo2.Y = 0.0;
42        pallo2.Color = Color.DarkMagenta;
43
44        pallo2 = new PhysicsObject(40.0, 40.0);
45        Add(pallo1);
46        pallo1.Shape = Shape.Circle;
47        pallo1.X = -200.0;
48        pallo1.Y = 0.0;
49        pallo1.Color = Color.DarkMagenta;
50        vasenReuna = Level.CreateLeftBorder();
51        vasenReuna.Restitution = 1.0;
52        vasenReuna.IsVisible = false;
53        oikeaReuna = Level.CreateRightBorder();
54        oikeaReuna.Restitution = 1.0;
55        oikeaReuna.IsVisible = false;
56        PhysicsObject alaReuna = Level.CreateBottomBorder();
57        alaReuna.Restitution = 1.0;
58        alaReuna.IsVisible = false;
59        PhysicsObject ylaReuna = Level.CreateTopBorder();
60        ylaReuna.Restitution = 1.0;
61        ylaReuna.IsVisible = false;
62
63        pallo1.Restitution = 1.0;
64        Level.BackgroundColor = Color.Beige;
65        Camera.ZoomToLevel ();
66        MessageDisplay.TextColor = Color.White;
67        maila1 = LuoMaila ( Level.Left +20.0, 0.0);
68        maila2 = LuoMaila(Level.Right - 20.0, 0.0);
69        AddCollisionHandler(pallo1, KasittelePallonTormays);
70        maila2.Color = Color.LimeGreen;
71        maila1.Color = Color.LimeGreen;
72    }
73
74    void AloitaPeli()
75    {
76        Vector impulssi = new Vector(500.0, 0.0);
77        pallo1.Hit(impulssi);
78
79        Vector impulssi = new Vector(500.0, 0.0);
80        pallo2.Hit(impulssi);
81   
82    }
83
84    PhysicsObject LuoMaila(double x, double y)
85    {
86        PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0);
87        maila.Shape = Shape.Rectangle;
88        maila.X = x;
89        maila.Y = y;
90        maila.Restitution = 1.0;
91        Add(maila);
92        return maila;
93    }
94
95    void AsetaOhjaimet()
96    {
97
98        Keyboard.Listen(Key.Z, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas);
99        Keyboard.Listen(Key.Z, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
100
101        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, nopeusYlos);
102        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
103        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, nopeusAlas);
104        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
105
106        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
107
108        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylös", maila1, nopeusYlos);
109        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
110        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
111        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila1, nopeusYlos);
112        ControllerOne.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
113        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila1, nopeusAlas);
114        ControllerOne.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
115
116        ControllerTwo.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila2, nopeusYlos);
117        ControllerTwo.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
118        ControllerTwo.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila2, nopeusAlas);
119        ControllerTwo.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
120
121        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu");
122        ControllerTwo.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu");
123
124    }
125
126    void AsetaNopeus(PhysicsObject maila, Vector nopeus)
127    {
128        if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom))
129        {
130           
131           
132            maila.Velocity = Vector.Zero;
133            return;
134        }
135        if ((nopeus.Y > 0) && (maila.Top > Level.Top))
136        {
137            maila.Velocity = Vector.Zero;
138            return;
139        }
140        maila.Velocity = nopeus;
141    }
142
143    void LisaaLaskurit()
144    {
145        pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0);
146        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0);
147    }
148
149    IntMeter LuoPisteLaskuri(double x, double y)
150    {
151        IntMeter laskuri = new IntMeter(0);
152        laskuri.MaxValue = 10;
153        Label naytto = new Label();
154        naytto.BindTo(laskuri);
155        naytto.X = x;
156        naytto.Y = y;
157        naytto.TextColor = Color.White;
158        naytto.BorderColor = Level.BackgroundColor;
159        naytto.Color = Level.BackgroundColor;
160        Add(naytto);
161       
162        return laskuri;
163
164    }
165
166    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde)
167    {
168        if (kohde == oikeaReuna)
169        {
170            pelaajan1Pisteet.Value += 1;
171        }
172        else if (kohde == vasenReuna)
173        {
174            pelaajan2Pisteet.Value += 1;
175        }
176    }
177   
178   
179   
180}
181 
182
Note: See TracBrowser for help on using the repository browser.