source: 2010/30/samipunn/Pong/Peli.cs @ 1311

Revision 1311, 5.4 KB checked in by samipunn, 13 years ago (diff)

Lisätty lumiukko, ponq valmis.

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