source: 2012/27/LeeviK/Pong/Pong/Pong/Pong.cs @ 3654

Revision 3654, 6.6 KB checked in by lekopakk, 8 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using Jypeli;
6using Jypeli.Assets;
7using Jypeli.Controls;
8using Jypeli.Effects;
9using Jypeli.Widgets;
10
11public class Pong : PhysicsGame
12{
13    SoundEffect test = LoadSoundEffect("whoosh1");
14    Vector nopeusYlos = new Vector(0, 200);
15    Vector nopeusAlas = new Vector(0, -200);
16
17    PhysicsObject Sun;
18    PhysicsObject Sun2;
19    PhysicsObject Sun3;
20    PhysicsObject Sun4;
21
22    Label Teksti;
23
24    PhysicsObject bonus;
25    PhysicsObject pallo;
26    PhysicsObject maila1;
27    PhysicsObject maila2;
28
29    PhysicsObject vasenReuna;
30    PhysicsObject oikeaReuna;
31
32    IntMeter pelaajan1Pisteet;
33    IntMeter pelaajan2Pisteet;
34
35    public override void Begin()
36    {
37        LuoKentta();
38        AsetaOhjaimet();
39        LisaaLaskurit();
40        AloitaPeli();
41    }
42
43    void LuoKentta()
44    {
45        Teksti = new Label(50.0, 50.0);
46        Teksti.X = 0.0;
47        Teksti.Y = 300.0;
48        Add(Teksti);
49        Teksti.TextColor = Color.White;
50
51         Sun = new PhysicsObject(20.0, 20.0);
52         Sun.Shape = Shape.Star;
53        Sun.X = -300.0;
54        Sun.Y = 200.0;
55        Sun.Color = Color.Yellow;
56        Add(Sun);
57
58        bonus = new PhysicsObject(20.0, 20.0);
59        bonus.Shape = Shape.Heart;
60        bonus.X = 0.0;
61        bonus.Y = 300.0;
62        bonus.Color = Color.Pink;
63        Add(bonus);
64
65
66        Sun = new PhysicsObject(31.0, 20.0);
67        Sun.Shape = Shape.Star;
68        Sun.X = 400.0;
69        Sun.Y = 200.0;
70        Sun.Color = Color.Yellow;
71        Add(Sun);
72
73        Sun2 = new PhysicsObject(20.0, 20.0);
74        Sun2.Shape = Shape.Star;
75        Sun2.X = 300.0;
76        Sun2.Y = 200.0;
77        Sun2.Color = Color.Yellow;
78        Add(Sun2);
79
80        Sun3 = new PhysicsObject(30.0, 40.0);
81        Sun3.Shape = Shape.Star;
82        Sun3.X = 0.0;
83        Sun3.Y = -50.0;
84        Sun3.Color = Color.Yellow;
85        Add(Sun3);
86
87        Sun4 = new PhysicsObject(20.0, 20.0);
88        Sun4.Shape = Shape.Star;
89        Sun4.X = -0.0;
90        Sun4.Y = 100.0;
91        Sun4.Color = Color.Yellow;
92        Add(Sun4);
93
94         //Pallon fysiikka
95
96        pallo = new PhysicsObject(50.0, 50.0);
97        pallo.Shape = Shape.Circle;
98        pallo.X = -200.0;
99        pallo.Y = 0.0;
100        pallo.Restitution = 1.0;
101        pallo.KineticFriction = 0.0;
102        pallo.MomentOfInertia = Double.PositiveInfinity;
103        Add(pallo);
104        pallo.Color = Color.Red;
105        AddCollisionHandler(pallo, KasittelePallonTormays);
106
107        pallo = new PhysicsObject(50.0, 50.0);
108        pallo.Shape = Shape.Circle;
109        pallo.X = -200.0;
110        pallo.Y = 0.0;
111        pallo.Restitution = 1.0;
112        pallo.KineticFriction = 0.0;
113        pallo.MomentOfInertia = Double.PositiveInfinity;
114        Add(pallo);
115        pallo.Color = Color.Red;
116        AddCollisionHandler(pallo, KasittelePallonTormays);
117
118        maila1 = LuoMaila(Level.Left + 20.0, 0.0);
119        maila2 = LuoMaila(Level.Right - 20.0, 0.0);
120
121        vasenReuna = Level.CreateLeftBorder();
122        vasenReuna.Restitution = 1.0;
123        vasenReuna.KineticFriction = 0.0;
124        vasenReuna.IsVisible = true;
125
126        oikeaReuna = Level.CreateRightBorder();
127        oikeaReuna.Restitution = 1.0;
128        oikeaReuna.KineticFriction = 0.0;
129        oikeaReuna.IsVisible = true;
130
131        PhysicsObject ylaReuna = Level.CreateTopBorder();
132        ylaReuna.Restitution = 1.0;
133        ylaReuna.KineticFriction = 0.0;
134        ylaReuna.IsVisible = true;
135
136        PhysicsObject alaReuna = Level.CreateBottomBorder();
137        alaReuna.Restitution = 1.0;
138        alaReuna.IsVisible = true;
139        alaReuna.KineticFriction = 0.0;
140
141        Level.BackgroundColor = Color.Black;
142
143        Camera.ZoomToLevel();
144    }
145
146    PhysicsObject LuoMaila(double x, double y)
147    {
148        PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0);
149        maila.Shape = Shape.Ellipse;
150        maila.X = x;
151        maila.Y = y;
152        maila.Restitution = 1.0;
153        maila.KineticFriction = 0.0;
154        Add(maila);
155        return maila;
156    }
157
158    void LisaaLaskurit()
159    {
160        pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0);
161        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0);
162    }
163
164    IntMeter LuoPisteLaskuri(double x, double y)
165    {
166        IntMeter laskuri = new IntMeter(0);
167        laskuri.MaxValue = 100;
168
169        Label naytto = new Label();
170        naytto.BindTo(laskuri);
171        naytto.X = x;
172        naytto.Y = y;
173        naytto.TextColor = Color.Red;
174        naytto.BorderColor = Level.BackgroundColor;
175        naytto.Color = Color.LightGreen;
176        Add(naytto);
177
178
179        return laskuri;
180    }
181
182    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde)
183    {
184       
185
186        if (kohde == oikeaReuna)
187        {
188           
189            pelaajan1Pisteet.Value += 1;
190        }
191        else if (kohde == vasenReuna)
192        {
193            pelaajan2Pisteet.Value += 1;
194        }
195    }
196
197    void AloitaPeli()
198    {
199        Vector impulssi = new Vector(500.0, 0.0);
200        pallo.Hit(impulssi);
201    }
202
203    void AsetaOhjaimet()
204    {
205        Keyboard.Listen(Key.W, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Maila ylös", maila1, nopeusYlos);
206        Keyboard.Listen(Key.W, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
207        Keyboard.Listen(Key.S, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Maila alas", maila1, nopeusAlas);
208        Keyboard.Listen(Key.S, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
209
210        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Maila ylös", maila2, nopeusYlos);
211        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
212        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Maila alas", maila2, nopeusAlas);
213        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
214
215        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
216        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
217
218    }
219
220    void AsetaNopeus(PhysicsObject maila, Vector nopeus)
221    {
222        if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom))
223        {
224            maila.Velocity = Vector.Zero;
225
226            return;
227        }
228        if ((nopeus.Y > 0) && (maila.Top > Level.Top))
229        {
230            maila.Velocity = Vector.Zero;
231            return;
232        }
233
234        maila.Velocity = nopeus;
235    }
236}
Note: See TracBrowser for help on using the repository browser.