source: 2010/30/pyryl/pong/Peli.cs @ 1331

Revision 1331, 5.5 KB checked in by paaaanro, 11 years ago (diff)
Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5
6public class Peli : PhysicsGame
7{
8    Vector nopeusYlos = new Vector(0, 800);
9    Vector nopeusAlas = new Vector(0, -800);
10
11    PhysicsObject pallo;
12    PhysicsObject maila1;
13    PhysicsObject maila2;
14    PhysicsObject oikeareuna;
15    PhysicsObject vasenreuna;
16
17
18    IntMeter pelaajan1Pisteet;
19    IntMeter pelaajan2Pisteet;
20
21    protected override void Begin()
22    {
23        LuoKentta();
24        AsetaOhjaimet();
25        AloitaPeli();
26        LisaaLaskurit();
27        //TODO: Alusta peli tässä
28       // LuoKentta();
29       
30       
31
32    }
33    void LuoKentta()
34    {
35        pallo = new PhysicsObject(40.0, 40.0);
36
37        pallo.Shape = Shapes.Circle;
38        Add(pallo);
39        pallo.X = 0.0;
40        pallo.Y = 0.0;
41
42
43
44        AddCollisionHandler(pallo, KasittelePallonTormays);
45
46        vasenreuna = Level.CreateLeftBorder();
47        PhysicsObject vasenReuna = Level.CreateLeftBorder();
48        vasenReuna.Restitution = 1.0;
49        vasenReuna.IsVisible = false;
50        oikeareuna = Level.CreateRightBorder();
51        PhysicsObject oikeaReuna = Level.CreateRightBorder();
52        vasenReuna.Restitution = 1.0;
53        vasenReuna.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        pallo.Restitution = 100.0;
63        pallo.KineticFriction = 0;
64        Level.BackgroundColor = Color.Turquoise
65            ;
66        Camera.ZoomToLevel();
67
68
69        maila1 = LuoMaila (Level.Left + 20.0, 0.0);
70        maila2 = LuoMaila(Level.Right - 20.0, 0.0);
71    }
72    void AloitaPeli()
73    {
74        Vector impulssi = new Vector(2500.0, 0.0);
75        pallo.Hit(impulssi);
76    }
77    PhysicsObject LuoMaila (double x, double y )
78    {
79        PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0);
80        maila.Shape = Shapes.Rectangle;
81        maila.X = x;
82        maila.Y = y;
83        maila.Restitution = 1.0;
84        Add(maila);
85        return maila;
86
87}
88    void AsetaOhjaimet()
89    {
90        Keyboard.Listen(Key.W, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylos", maila1, nopeusYlos);
91        Keyboard.Listen(Key.W, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
92        Keyboard.Listen(Key.S, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas);
93        Keyboard.Listen(Key.S, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
94
95        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, nopeusYlos);
96        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
97        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, nopeusAlas);
98        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
99
100        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
101
102        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
103
104
105        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila1, nopeusYlos);
106        ControllerOne.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
107        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila1, nopeusAlas);
108        ControllerOne.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
109
110        ControllerTwo.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila2, nopeusYlos);
111        ControllerTwo.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
112        ControllerTwo.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila2, nopeusAlas);
113        ControllerTwo.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
114
115        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu");
116        ControllerTwo.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu");
117
118    }
119
120    void AsetaNopeus ( PhysicsObject maila, Vector nopeus )
121    {
122        if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom))
123        {
124            maila.Velocity = Vector.Zero;
125            return;
126        }
127        if ((nopeus.Y > 0) && (maila.Top > Level.Top))
128        {
129            maila.Velocity = Vector.Zero;
130            return;
131        }
132   maila.Velocity = nopeus;
133
134    }
135    void LisaaLaskurit()
136    {
137        pelaajan1Pisteet = LuoPisteLaskuri ( Screen.Left + 100.0, Screen.Top -100.0);
138        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0);
139    }
140
141    IntMeter LuoPisteLaskuri(double x, double y)
142    {
143        IntMeter laskuri = new IntMeter(0);
144        laskuri.MaxValue = 100;
145        Label Naytto = new Label();
146        Naytto.BindTo(laskuri);
147        Naytto.X = x;
148        Naytto.Y = y;
149        Naytto.TextColor = Color.Red;
150        Add(Naytto);
151        return laskuri;
152    }
153    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde)
154    {
155        if (kohde == oikeareuna)
156        {
157            pelaajan1Pisteet.Value += 1;
158
159        }
160        else if (kohde == vasenreuna)
161        {
162            pelaajan2Pisteet.Value += 1;
163        }
164    }
165
166}
Note: See TracBrowser for help on using the repository browser.