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

Revision 1317, 5.5 KB checked in by paaaanro, 11 years ago (diff)

pomg toimiipp

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        AddCollisionHandler(pallo, KasittelePallonTormays);
44
45        vasenreuna = Level.CreateLeftBorder();
46        PhysicsObject vasenReuna = Level.CreateLeftBorder();
47        vasenReuna.Restitution = 1.0;
48        vasenReuna.IsVisible = false;
49        oikeareuna = Level.CreateRightBorder();
50        PhysicsObject oikeaReuna = Level.CreateRightBorder();
51        vasenReuna.Restitution = 1.0;
52        vasenReuna.IsVisible = false;
53        PhysicsObject ylaReuna = Level.CreateTopBorder();
54        ylaReuna.Restitution = 1.0;
55        ylaReuna.IsVisible = false;
56        PhysicsObject alaReuna = Level.CreateBottomBorder();
57        alaReuna.Restitution = 1.0;
58        alaReuna.IsVisible = false;
59
60
61        pallo.Restitution = 3.0;
62        pallo.KineticFriction = 0;
63        Level.BackgroundColor = Color.Black;
64        Camera.ZoomToLevel();
65
66
67        maila1 = LuoMaila (Level.Left + 20.0, 0.0);
68        maila2 = LuoMaila(Level.Right - 20.0, 0.0);
69    }
70    void AloitaPeli()
71    {
72        Vector impulssi = new Vector(500.0, 30.0);
73        pallo.Hit(impulssi);
74    }
75    PhysicsObject LuoMaila (double x, double y )
76    {
77        PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0);
78        maila.Shape = Shapes.Rectangle;
79        maila.X = x;
80        maila.Y = y;
81        maila.Restitution = 1.0;
82        Add(maila);
83        return maila;
84}
85    void AsetaOhjaimet()
86    {
87        Keyboard.Listen(Key.W, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylos", maila1, nopeusYlos);
88        Keyboard.Listen(Key.W, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
89        Keyboard.Listen(Key.S, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas);
90        Keyboard.Listen(Key.S, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
91
92        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, nopeusYlos);
93        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
94        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, nopeusAlas);
95        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
96
97        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
98
99        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
100
101
102        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila1, nopeusYlos);
103        ControllerOne.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
104        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila1, nopeusAlas);
105        ControllerOne.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
106
107        ControllerTwo.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila2, nopeusYlos);
108        ControllerTwo.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
109        ControllerTwo.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila2, nopeusAlas);
110        ControllerTwo.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
111
112        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu");
113        ControllerTwo.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu");
114
115    }
116
117    void AsetaNopeus ( PhysicsObject maila, Vector nopeus )
118    {
119        if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom))
120        {
121            maila.Velocity = Vector.Zero;
122            return;
123        }
124        if ((nopeus.Y > 0) && (maila.Top > Level.Top))
125        {
126            maila.Velocity = Vector.Zero;
127            return;
128        }
129   maila.Velocity = nopeus;
130
131    }
132    void LisaaLaskurit()
133    {
134        pelaajan1Pisteet = LuoPisteLaskuri ( Screen.Left + 100.0, Screen.Top -100.0);
135        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0);
136    }
137
138    IntMeter LuoPisteLaskuri(double x, double y)
139    {
140        IntMeter laskuri = new IntMeter(0);
141        laskuri.MaxValue = 10;
142        Label Naytto = new Label();
143        Naytto.BindTo(laskuri);
144        Naytto.X = x;
145        Naytto.Y = y;
146        Naytto.TextColor = Color.Red;
147        Add(Naytto);
148        return laskuri;
149    }
150    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde)
151    {
152        if (kohde == oikeareuna)
153        {
154            pelaajan1Pisteet.Value += 1;
155
156        }
157        else if (kohde == vasenreuna)
158        {
159            pelaajan2Pisteet.Value += 1;
160        }
161    }
162
163}
Note: See TracBrowser for help on using the repository browser.