source: 2010/27/alelaho/Pongi/Peli.cs @ 1083

Revision 1083, 5.5 KB checked in by paaaanro, 10 years ago (diff)

Pongi peli siirretty muistitikulta. (Pongipeli tehty valmiiksi kotona)

Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4
5//using System;
6//using Jypeli;
7//using Jypeli.ScreenObjects;
8//using Jypeli.Assets;
9
10public class Peli : PhysicsGame
11{
12    Vector nopeusYlos = new Vector( 0, 300 );
13    Vector nopeusAlas = new Vector( 0, -300 );
14
15    PhysicsObject pallo;
16    PhysicsObject maila1;
17    PhysicsObject maila2;
18
19    PhysicsObject vasenReuna;
20    PhysicsObject oikeaReuna;
21
22    IntMeter pelaajan1Pisteet;
23    IntMeter pelaajan2Pisteet;
24
25    protected override void Begin()
26    {
27        LuoKentta();
28        AsetaOhjaimet();
29        LisaaLaskurit();
30        AloitaPeli();
31    }
32
33    void LuoKentta()
34    {
35        pallo = new PhysicsObject( 40.0, 40.0 );
36        pallo.Shape = Shapes.Circle;
37        pallo.X = -200.0;
38        pallo.Y = 0.0;
39        pallo.Restitution = 1.0;
40        Add( pallo );
41        AddCollisionHandler( pallo, KasittelePallonTormays );
42
43        maila1 = LuoMaila( Level.Left + 20.0, 0.0 );
44        maila2 = LuoMaila( Level.Right - 20.0, 0.0 );
45
46        vasenReuna = Level.CreateLeftBorder();
47        vasenReuna.Restitution = 1.0;
48        vasenReuna.IsVisible = false;
49        oikeaReuna = Level.CreateRightBorder();
50        oikeaReuna.Restitution = 1.0;
51        oikeaReuna.IsVisible = false;
52        PhysicsObject ylaReuna = Level.CreateTopBorder();
53        ylaReuna.Restitution = 1.0;
54        ylaReuna.IsVisible = false;
55        PhysicsObject alaReuna = Level.CreateBottomBorder();
56        alaReuna.Restitution = 1.0;
57        alaReuna.IsVisible = false;
58
59        Level.BackgroundColor = Color.Black;
60
61        Camera.ZoomToLevel();
62    }
63
64    PhysicsObject LuoMaila( double x, double y )
65    {
66        PhysicsObject maila = PhysicsObject.CreateStaticObject( 20.0, 100.0 );
67        maila.Shape = Shapes.Rectangle;
68        maila.X = x;
69        maila.Y = y;
70        maila.Restitution = 1.0;
71        Add( maila );
72        return maila;
73    }
74
75    void LisaaLaskurit()
76    {
77        pelaajan1Pisteet = LuoPisteLaskuri( Screen.Left + 100.0, Screen.Top - 100.0 );
78        pelaajan2Pisteet = LuoPisteLaskuri( Screen.Right - 100.0, Screen.Top - 100.0 );
79    }
80
81    IntMeter LuoPisteLaskuri( double x, double y )
82    {
83        IntMeter laskuri = new IntMeter( 0 );
84        laskuri.MaxValue = 10;
85        Label naytto = new Label();
86        naytto.BindTo( laskuri );
87        naytto.X = x;
88        naytto.Y = y;
89        naytto.TextColor = Color.White;
90        Add( naytto );
91        return laskuri;
92    }
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( 500.0, 200.0 );
109        pallo.Hit( impulssi );
110    }
111
112    void AsetaOhjaimet()
113    {
114        Keyboard.Listen( Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylös", maila1, nopeusYlos );
115        Keyboard.Listen( Key.A, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero );
116        Keyboard.Listen( Key.Z, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas );
117        Keyboard.Listen( Key.Z, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero );
118
119        Keyboard.Listen( Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, nopeusYlos );
120        Keyboard.Listen( Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero );
121        Keyboard.Listen( Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, nopeusAlas );
122        Keyboard.Listen( Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero );
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
141    void AsetaNopeus( PhysicsObject maila, Vector nopeus )
142    {
143        if ( ( nopeus.Y < 0 ) && ( maila.Bottom < Level.Bottom ) )
144        {
145            maila.Velocity = Vector.Zero;
146            return;
147        }
148        if ( ( nopeus.Y > 0 ) && ( maila.Top > Level.Top ) )
149        {
150            maila.Velocity = Vector.Zero;
151            return;
152        }
153
154        maila.Velocity = nopeus;
155    }
156}
Note: See TracBrowser for help on using the repository browser.