source: 2010/31/nico@ala-konni.fi/pong/Peli.cs @ 1600

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