source: 2011/24/EeroP/FysiikkaPeli1/FysiikkaPeli1/FysiikkaPeli1/Peli.cs @ 1992

Revision 1992, 4.8 KB checked in by eejoprit, 11 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Peli : PhysicsGame
10{
11    Vector nopeusylös = new Vector (0.0, 200.0);
12    Vector nopeusalas = new Vector(0.0, -200.0);
13   
14    PhysicsObject pallo;
15
16
17
18    PhysicsObject maila1;
19    PhysicsObject maila2;
20
21    IntMeter pelaaja1pisteet;
22    IntMeter pelaaja2pisteet;
23
24    PhysicsObject vasenreuna;
25    PhysicsObject oikeareuna;
26
27    public override void Begin()
28    {
29        // TODO: Kirjoita ohjelmakoodisi tähän
30
31
32        luokentta();
33        asetaohjaimet();
34        lisaalaskurit();
35        aloitapeli();
36
37     
38   
39    }
40
41   
42    void luokentta()
43    {
44        Camera.ZoomToLevel();
45
46        Level.BackgroundColor = Color.Black;
47       
48        vasenreuna = Level.CreateLeftBorder();
49        vasenreuna.Restitution = 1.0;
50        vasenreuna.IsVisible = false;
51
52        oikeareuna = Level.CreateRightBorder();
53        oikeareuna.Restitution = 1.0;
54        oikeareuna.IsVisible = false;
55
56        PhysicsObject yläreuna = Level.CreateTopBorder();
57        yläreuna.Restitution = 1.0;
58        yläreuna.IsVisible = false;
59
60        PhysicsObject alareuna = Level.CreateBottomBorder();
61        alareuna.Restitution = 1.0;
62        alareuna.IsVisible = false;
63
64        //pallo
65        pallo = new PhysicsObject(40.0, 40.0);
66        Add(pallo);
67        pallo.Shape = Shape.Circle;
68        pallo.X = -200.0;
69        pallo.Y = 0.0;
70        pallo.Restitution = 1.0;
71        pallo.Color = Color.Lime;
72
73        AddCollisionHandler (pallo, pallontormays);
74
75        maila1 = luomaila (Level.Left + 20.0, 0.0);
76        maila2 = luomaila(Level.Right - 20.0, 0.0);
77
78
79        MessageDisplay.TextColor = Color.Aqua;
80
81       
82       
83    }
84
85   
86    void aloitapeli()
87    {
88        Vector impulssi = new Vector(500.0, 0.0);
89        pallo.Hit(impulssi);
90    }
91
92   
93    PhysicsObject luomaila(double x, double y)
94    {
95        //maila
96        PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0);
97        maila.Shape = Shape.Rectangle;
98        maila.Color = Color.Lime; 
99        maila.X = x;
100        maila.Y = y;
101        maila.Restitution = 1.5;
102        Add(maila);
103
104        return maila;
105    }
106
107   
108    void asetaohjaimet()
109    {
110        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "poistu");
111
112        Keyboard.Listen(Key.A, ButtonState.Down, asetanopeus, "pelaaja1 liikuttaa mailaa ylös", maila1, nopeusylös);
113        Keyboard.Listen(Key.A, ButtonState.Released, asetanopeus, null, maila1, Vector.Zero );
114        Keyboard.Listen(Key.Z, ButtonState.Down, asetanopeus, "pelaaja1 liikuttaa mailaa alas", maila1, nopeusalas);
115        Keyboard.Listen(Key.Z, ButtonState.Released, asetanopeus, null, maila1, Vector.Zero);
116
117        Keyboard.Listen(Key.Up, ButtonState.Down, asetanopeus, "pelaaja1 liikuttaa mailaa ylös", maila2, nopeusylös);
118        Keyboard.Listen(Key.Up, ButtonState.Released, asetanopeus, null, maila2, Vector.Zero);
119        Keyboard.Listen(Key.Down, ButtonState.Down, asetanopeus, "pelaaja2 liikuttaa mailaa alas", maila2, nopeusalas);
120        Keyboard.Listen(Key.Down, ButtonState.Released, asetanopeus, null, maila2, Vector.Zero);
121        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "näytä ohjeet");
122       
123        Keyboard.Listen(Key.F2, ButtonState.Pressed, Begin, "lisää palloja :DD");
124    }
125
126   
127    void asetanopeus(PhysicsObject maila, Vector nopeus)
128    {
129        if ((nopeus.Y > 0) && (maila.Top > Level.Top))
130        {
131            maila.Velocity = Vector.Zero;
132            return;
133        }
134
135        if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom))
136        {
137            maila.Velocity = Vector.Zero;
138            return;
139        }
140
141        maila.Velocity = nopeus;
142    }
143
144
145    void lisaalaskurit()
146    {
147        pelaaja1pisteet = luopistelaskuri(Screen.Left + 200.0, Screen.Top - 200.0);
148    pelaaja2pisteet = luopistelaskuri (Screen.Right - 200.0, Screen.Top - 200.0);
149    }
150
151    IntMeter luopistelaskuri(double x, double y)
152    { 
153        IntMeter laskuri = new IntMeter(0);
154        laskuri.MaxValue = 10;
155        Label naytto = new Label();
156        naytto.BindTo(laskuri);
157        naytto.X = x;
158        naytto.Y = y;
159        naytto.TextColor = Color.Aqua;
160        naytto.BorderColor = Level.BackgroundColor;
161        naytto.Color = Level.BackgroundColor;
162        Add(naytto);
163
164        return laskuri;
165    }
166
167    void pallontormays(PhysicsObject pallo, PhysicsObject kohde)
168   
169    {
170        if (kohde == oikeareuna)
171        {
172            pelaaja1pisteet.Value += 1;
173        }
174
175        else if (kohde == vasenreuna)
176        {
177            pelaaja2pisteet.Value += 1;
178
179        }
180    }
181
182   
183 
184
185}
186
Note: See TracBrowser for help on using the repository browser.