source: 2010/30/samipunn/Misle Launch/Peli.cs @ 1373

Revision 1373, 5.9 KB checked in by samipunn, 10 years ago (diff)

ajastin toimii.

Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5
6public class Peli : PhysicsGame
7{
8    double ohjusOdotus = 10.0;
9
10    Image maastonKuva = LoadImage("kentta");
11
12    Timer Laskuri1;
13    Timer Laskuri2;
14    PhysicsObject laukaisualusta2;
15    PhysicsObject laukaisualusta1;
16    PhysicsObject ohjus1;
17    PhysicsObject ohjus2;
18    double kaantyyOikealle = 5;
19    double kaantyyVasemmalle = -5;
20    protected override void Begin()
21    {
22        Laskuri1 = LuoAikaLaskuri(-150, 0);
23        Laskuri2 = LuoAikaLaskuri(150, 0);
24       
25
26        laukaisualusta1 = PhysicsObject.CreateStaticObject (60, 20);
27        laukaisualusta1.Shape = Shapes.Rectangle;
28        laukaisualusta1.X = -400;
29        laukaisualusta1.Y = -377;
30        laukaisualusta1.Color = Color.Black;
31        Add(laukaisualusta1);
32
33        laukaisualusta2 = PhysicsObject.CreateStaticObject(60, 20);
34        laukaisualusta2.Shape = Shapes.Rectangle;
35        laukaisualusta2.X = 400;
36        laukaisualusta2.Y = -373;
37        laukaisualusta2.Color = Color.Black;
38        Add(laukaisualusta2);
39       
40
41        Shape shape = Shapes.FromImage(1200, 400, maastonKuva);
42        PhysicsObject maasto = PhysicsObject.CreateStaticObject(1200, 400, shape );
43        maasto.Y = Level.Bottom + maasto.Height / 2.5;
44        Add(maasto);
45
46        LuoReunat();
47        Camera.ZoomToLevel();
48        Camera.StayInLevel = true;
49
50        ohjus1 = LuoOhjus(-400, -340);
51        ohjus2 = LuoOhjus(400, -340);
52       
53
54       
55        AsetaOhjaimet();
56
57        Painovoima();
58        Ilmanvastus();
59    }
60
61    private PhysicsObject LuoOhjus(double x, double y)
62    {
63        PhysicsObject ohjus = new PhysicsObject(10, 40);
64        ohjus.Shape = Shapes.Rectangle;
65        ohjus.X = x;
66        ohjus.Y = y;
67        AddCollisionHandler(ohjus, Tormays);
68        Add(ohjus);
69        return ohjus;
70    }
71    private void nollaaOhjus(PhysicsObject ohjus, double x, double y)
72    {
73        ohjus.X = x;
74        ohjus.Y = y;
75        ohjus.Stop();
76        ohjus.Angle = new Angle();
77        Add(ohjus);
78    }
79
80
81    void AsetaOhjaimet()
82    {
83        Keyboard.Listen(Key.Z, ButtonState.Down, OhjusKaantyy, "Kaanna Ohjusta Vasemmalle", ohjus1, kaantyyVasemmalle);
84        Keyboard.Listen(Key.Z, ButtonState.Released, OhjusKaantyy, null, ohjus1,0.0);
85        Keyboard.Listen(Key.A, ButtonState.Down, OhjusKaantyy, "Kaanna Ohjusta Oikealle", ohjus1, kaantyyOikealle);
86        Keyboard.Listen(Key.A, ButtonState.Released, OhjusKaantyy, null, ohjus1,0.0);
87
88        Keyboard.Listen(Key.Up, ButtonState.Down, Ohjus2Kaantyy, "Kaanna Ohjusta2 Vasemmalle", ohjus2, kaantyyVasemmalle);
89        Keyboard.Listen(Key.Up, ButtonState.Released, Ohjus2Kaantyy, null, ohjus2, 0.0);
90        Keyboard.Listen(Key.Down, ButtonState.Down, Ohjus2Kaantyy, "Kaanna Ohjusta2 Oikealle", ohjus2, kaantyyOikealle);
91        Keyboard.Listen(Key.Down, ButtonState.Released, Ohjus2Kaantyy, null, ohjus2, 0.0);
92
93        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
94        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
95
96    }
97    void OhjusKaantyy(PhysicsObject ohjus, double nopeus)
98    {
99        Angle valiaik = ohjus.Angle;
100        valiaik.Degree += nopeus;
101        ohjus.Angle = valiaik;
102    }
103
104    void Ohjus2Kaantyy(PhysicsObject ohjus2, double nopeus)
105    {
106        Angle valiaik = ohjus2.Angle;
107        valiaik.Degree += nopeus;
108        ohjus2.Angle = valiaik;
109    }
110    void Paivitys()
111    {
112        ohjus1.Push(Vector.FromLengthAndAngle(1500, ohjus1.Angle + Angle.RightAngle));
113        ohjus2.Push(Vector.FromLengthAndAngle(1500, ohjus2.Angle + Angle.RightAngle));
114    }
115
116    void Painovoima()
117    {
118        Gravity = new Vector(0.0, -800.0);
119    }
120
121    void Ilmanvastus()
122    {
123       ohjus1.LinearDamping = 0.9;
124       ohjus2.LinearDamping = 0.9;
125    }
126    protected override void Update(Time time)
127    {
128        Paivitys();
129        base.Update(time);
130    }
131
132    void LuoReunat()
133    {
134        Level.CreateBottomBorder();
135        Level.CreateTopBorder();
136    }
137
138    void Tormays(PhysicsObject ohjus, PhysicsObject kohde)
139    {
140        Remove(ohjus);
141        Explosion rajahdys = new Explosion(60);
142        rajahdys.Position = ohjus.Position;
143        rajahdys.Speed = 300.0;
144        rajahdys.Force = 90;       
145        Add(rajahdys);
146
147        if (ohjus == ohjus1)   
148        {
149            KaynnistaLaskuri(Laskuri1, ohjusOdotus);
150        }
151        if (ohjus == ohjus2)
152        {
153            KaynnistaLaskuri(Laskuri2, ohjusOdotus);
154        }
155    }
156
157    Timer LuoAikaLaskuri(double x, double y)
158    {
159        DoubleMeter alaspainLaskuri = new DoubleMeter(ohjusOdotus);
160
161        Timer aikaLaskuri = new Timer();
162        aikaLaskuri.Interval = 0.1;
163        aikaLaskuri.Trigger += LaskeAlaspain;
164        aikaLaskuri.Tag = alaspainLaskuri;
165        Add(aikaLaskuri);
166
167        Label aikaNaytto = new Label();
168        aikaNaytto.TextColor = Color.White;
169        aikaNaytto.DecimalPlaces = 1;
170        aikaNaytto.BindTo(alaspainLaskuri);
171        aikaNaytto.X = x;
172        aikaNaytto.Y = y;
173        Add(aikaNaytto);
174
175        return aikaLaskuri;
176    }
177
178    void KaynnistaLaskuri(Timer timer, double aikaaJaljella)
179    {
180        DoubleMeter alaspainLaskuri = (DoubleMeter)(timer.Tag);
181        alaspainLaskuri.Value = aikaaJaljella;
182
183        timer.Start();
184    }
185
186    void LaskeAlaspain(Timer timer)
187    {
188        DoubleMeter alaspainLaskuri = (DoubleMeter)(timer.Tag);
189        alaspainLaskuri.Value -= 0.1;
190
191        if (alaspainLaskuri.Value <= 0)
192        {
193           
194            timer.Stop();
195
196            if (timer == Laskuri1)
197            {
198                 nollaaOhjus(ohjus1, -400, -340);
199            }
200
201            if (timer == Laskuri2)
202            {
203                nollaaOhjus(ohjus2, 400, -340); 
204            }
205           
206           
207        }
208    }
209
210
211   
212
213   
214
215
216
217}
218
Note: See TracBrowser for help on using the repository browser.