source: 2010/27/jakasalm/pong/Peli.cs @ 1092

Revision 1092, 5.5 KB checked in by paaaanro, 10 years ago (diff)

uusi bog peli

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