source: 2010/30/janiemit/FysiikkaPeli3/Peli.cs @ 1391

Revision 1391, 6.0 KB checked in by paaaanro, 9 years ago (diff)

peli talteen.

Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5
6public class Peli : PhysicsGame
7{
8    Vector nopeusoikealle = new Vector(2000, 0);
9    Vector nopeusvasemmalle = new Vector(-2000, 0);
10    const double pallonNopeus = 500;
11
12    Vector pysahdy = new Vector(0, 0);
13
14    PhysicsObject pallo;
15    PhysicsObject maila1;
16    // PhysicsObject maila2;
17    IntMeter pelaajan1Pisteet;
18    IntMeter pelaajanhp; 
19
20
21    protected override void Begin()
22    {
23
24        LuoKentta();
25        AsetaOhjaimet();
26        AloitaPeli();
27        LisaaLaskurit();
28
29       
30       
31
32    }
33
34    void TiileenTormattiin(PhysicsObject tiili, PhysicsObject tormaaja)
35    {
36        // Jos tormaaja == pallo (esim.)
37        // niin tiili räjähtää...
38
39        if (tormaaja == pallo)
40        {
41            Timer.SingleShot(0.1, tiili.Destroy);
42
43         
44           
45                pelaajan1Pisteet.Value += 10;
46           
47
48        }
49
50
51    }
52    PhysicsObject LuoTiili(double X, double Y)
53    {
54        //Paikallaan pysyvä
55        PhysicsObject tiili = PhysicsObject.CreateStaticObject(100.0, 20.0);
56        AddCollisionHandler(tiili, TiileenTormattiin);
57        tiili.X = X;
58        tiili.Y = Y;
59        Add(tiili);
60        return tiili;
61
62    }
63    void LuoKentta()
64    {
65        pallo = new PhysicsObject(40.0, 40.0);
66        pallo.Shape = Shapes.Circle;
67        pallo.Color = Color.Red;
68        pallo.X = 0.0;
69        pallo.Y = -340.0;
70        pallo.KineticFriction = 0.0;
71        pallo.Restitution = 2.0;
72
73        Add(pallo);
74
75        //Level.CreateBorders(90.0, true);
76        Level.BackgroundColor = Color.Black;
77        pallo.Restitution = 1.0;
78        Camera.ZoomToLevel();
79
80        maila1 = LuoMaila(0.0, -390.0);
81        //Add(maila1);
82        //maila2 = LuoMaila(0.0,-365.0);
83
84
85    }
86    void AloitaPeli()
87    {
88        Vector impulssi = new Vector(0.0, 200.0);
89        pallo.Hit(impulssi);
90    }
91    void AsetaOhjaimet()
92    {
93        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa vasemmalle", maila1, nopeusvasemmalle);
94        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, maila1, pysahdy);
95        Keyboard.Listen(Key.D, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa oikealle", maila1, nopeusoikealle);
96        Keyboard.Listen(Key.D, ButtonState.Released, AsetaNopeus, null, maila1, pysahdy);
97        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
98        Keyboard.Listen(Key.F1, ButtonState.Pressed,uudistatiili ,"uusi tiili kasa" );
99    }
100    void AsetaNopeus(PhysicsObject maila, Vector nopeus)
101    {
102        maila.Velocity = nopeus;
103        if ((maila.Right) > Level.Right)
104        {
105            maila.X = maila.X - 4;
106            maila.Velocity = Vector.Zero;
107        }
108        if ((maila.Left) < Level.Left)
109        {
110            maila.X = maila.X + 4;
111            maila.Velocity = Vector.Zero;
112        }
113    }
114    PhysicsObject LuoMaila(double x, double y)
115    {
116        PhysicsObject maila = PhysicsObject.CreateStaticObject(200.0, 10.0,Shapes.Rectangle,CollisionShapeQuality.Best);
117        maila.X = x;
118        maila.Y = y;
119        maila.Restitution = 1.0;
120        maila.Color = Color.ForestGreen;
121        maila.IgnoresCollisionResponse = false;
122        Add(maila);
123
124        return maila;
125    }
126
127
128    protected override void Update(Time time)
129    {
130
131        if (pallo != null && Math.Abs(pallo.Velocity.Y) < pallonNopeus)
132        {
133            pallo.Velocity = new Vector(pallo.Velocity.X, pallo.Velocity.Y * 1.1);
134        }
135        Vector pallonNykyinenVektori = Vector.FromLengthAndAngle(pallo.Velocity.Magnitude, pallo.Velocity.Angle);
136        if (pallo.X < Level.Left)
137        {
138            pallonNykyinenVektori.X = pallonNykyinenVektori.X * -1;
139            pallo.X = pallo.X + 5;
140        }
141        if (pallo.X > Level.Right)
142        {
143            pallonNykyinenVektori.X = pallonNykyinenVektori.X * -1;
144            pallo.X = pallo.X - 5;
145        }
146        if (pallo.Y > Level.Top)
147        {
148            pallonNykyinenVektori.Y = pallonNykyinenVektori.Y * -1;
149            pallo.Y = pallo.Y - 5;
150        }
151        if (pallo.Y < Level.Bottom)
152        {
153            pallonNykyinenVektori.Y = pallonNykyinenVektori.Y * -1;
154            pallo.Y = pallo.Y + 5;
155            pelaajanhp.Value -= 1;
156        }
157       
158     
159        pallo.Velocity = pallonNykyinenVektori;
160        base.Update(time);
161    }
162    void LisaaLaskurit()
163    {
164        pelaajan1Pisteet = LuoPisteLaskuri(350, 350,"pisteet");
165        pelaajanhp = LuoPisteLaskuri(-350, 350,"HP");
166        pelaajanhp.Value = 10;
167
168    }
169    IntMeter LuoPisteLaskuri(double x, double y,string texti )
170    {
171        IntMeter laskuri = new IntMeter(0);
172       
173        Label naytto = new Label();
174        naytto.BindTo(laskuri);
175        naytto.X = x;
176        naytto.Y = y;
177        naytto.TextColor = Color.Red;
178        Add(naytto);
179        Label textit = new Label(texti);
180        Add(textit);
181        textit.X = naytto.X - 360;
182        //textit.Color = Color.Red;
183        return laskuri;
184    }
185   
186    void uudistatiili()
187    { 
188     for (int i = 0; i < 10; i++)
189        {
190            LuoTiili(-450 + i * 101, 100);
191        }
192        for (int j = 0; j < 9; j++)
193        {
194            LuoTiili(-400 + j * 101, 121);
195        }
196        for (int y = 0; y < 8; y++)
197        {
198            LuoTiili(-350 + y * 101, 142);
199        }
200        for (int x = 0; x < 7; x++)
201        {
202            LuoTiili(-300 + x * 101, 163);
203        }
204        for (int z = 0; z < 6; z++)
205        {
206            LuoTiili(-250 + z * 101, 184);
207}
208        for (int s = 0; s < 5; s++)
209        {
210            LuoTiili(-200 + s * 101, 205);
211        }
212        for (int g = 0; g < 4; g++)
213        {
214            LuoTiili(-150 + g * 101, 226);
215        }
216        for (int p = 0; p < 3; p++)
217        {
218            LuoTiili(-100 + p * 101, 247);
219        }
220    }
221
222
223
224
225
226
227
228
229
230}
Note: See TracBrowser for help on using the repository browser.