source: 2014/26/Pyry-PetteriP/Pong/Pong/Pong/Pong.cs @ 5061

Revision 5061, 4.8 KB checked in by pypelli, 7 years ago (diff)

valmis

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