source: 2011/24/OtsoM/Pong/Pong/FysiikkaPeli/Peli.cs @ 2050

Revision 2050, 4.4 KB checked in by otkamiet, 8 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using Jypeli;
6using Jypeli.Widgets;
7
8class Peli : PhysicsGame
9{    Vector nopeusYlös = new Vector( 0, 200 );
10     Vector nopeusAlas = new Vector( 0, -200 );
11
12
13    PhysicsObject pallo;
14    PhysicsObject maila1;
15    PhysicsObject maila2;
16    PhysicsObject vasenReuna;
17    PhysicsObject oikeaReuna;
18    IntMeter pelaajan1Pisteet;
19    IntMeter pelaajan2Pisteet;
20
21    public override void Begin()
22    {
23        // TODO: Kirjoita ohjelmakoodisi tähän
24        LuoKentta();
25        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
26        AsetaOhjaimet();
27        LisaaLaskurit();
28        AloitaPeli();
29    }
30
31    void LuoKentta()
32    {
33
34        pallo = new PhysicsObject(50.0, 50.0);
35        pallo.Shape = Shape.Circle;
36
37        AddCollisionHandler( pallo, KasittelePallonTormays );   
38           
39           
40           
41        pallo.Restitution = 1.0;
42        pallo.Color = Color.Fuchsia;
43        pallo.X = -150.0;
44        pallo.Y = 0.0;
45
46        Add(pallo);
47
48        maila1 = LuoMaila( Level.Left + 20.0, 0.0);
49        maila2 = LuoMaila( Level.Right - 20.0, 0.0);
50        vasenReuna = Level.CreateLeftBorder();
51        vasenReuna.Restitution = 1.0;
52        vasenReuna.IsVisible = false;
53
54        oikeaReuna = Level.CreateRightBorder();
55        oikeaReuna.Restitution = 1.0;
56        oikeaReuna.IsVisible = false;
57        PhysicsObject ylaReuna = Level.CreateTopBorder();
58        ylaReuna.Restitution = 1.0;
59        ylaReuna.IsVisible = false;
60        PhysicsObject alaReuna = Level.CreateBottomBorder();
61 
62        vasenReuna.Restitution = 1.0;
63        vasenReuna.IsVisible = false;
64       
65       
66       
67        Level.BackgroundColor = Color.Lime;
68        Camera.ZoomToLevel();
69    }
70   
71
72
73    void AloitaPeli()
74    {
75        Vector impulssi = new Vector(600.0, 0.0);
76        pallo.Hit(impulssi);
77   
78
79    }
80 
81   
82
83
84    PhysicsObject  LuoMaila( double x, double y ){
85       
86PhysicsObject 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
93        return maila;
94
95
96
97
98    }
99
100
101
102
103
104
105
106    void AsetaOhjaimet()
107    {
108        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylös", maila1, nopeusYlös);
109        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
110
111        Keyboard.Listen(Key.Z, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas);
112        Keyboard.Listen(Key.Z, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
113        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
114
115
116        {
117            Keyboard.Listen(Key.I, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, nopeusYlös);
118            Keyboard.Listen(Key.I, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
119
120            Keyboard.Listen(Key.K, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, nopeusAlas);
121            Keyboard.Listen(Key.K, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
122            Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
123
124
125
126
127
128        }
129    }
130
131    void AsetaNopeus(PhysicsObject maila, Vector nopeus)
132    {
133        maila.Velocity = nopeus;
134    }
135
136    void LisaaLaskurit()
137    {
138     pelaajan1Pisteet = LuoPisteLaskuri( Screen.Left + 100.0, Screen.Top - 100.0 );
139     pelaajan2Pisteet = LuoPisteLaskuri( Screen.Right - 100.0, Screen.Top - 100.0 );
140
141    //...
142   
143   
144   
145    }
146
147
148    IntMeter LuoPisteLaskuri( double x, double y )
149
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        return laskuri;
162
163
164
165
166    }
167
168
169    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde)
170    {
171        if (kohde == vasenReuna)
172
173            pelaajan1Pisteet.Value += 1;
174
175
176
177
178
179        else if (kohde == vasenReuna)
180            pelaajan2Pisteet.Value += 1;
181
182
183    }
184
185
186
187
188
189}
Note: See TracBrowser for help on using the repository browser.