source: 2010/23/jopehell/pong/Peli.cs @ 553

Revision 553, 6.7 KB checked in by paaaanro, 10 years ago (diff)

muutettiin pongia; valmis

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