source: 2011/24/MiskaK/Sniper/Sniper/Sniper/Peli.cs @ 2012

Revision 2012, 8.9 KB checked in by mikrkana, 8 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 Sniper : PhysicsGame
10{
11   
12    PhysicsObject maalitaulu;
13    Flame liekki;
14    ExplosionSystem rajahdys;
15    PhysicsObject tähtäin;
16    IntMeter pisteLaskuri;
17   
18    InputWindow kysymysIkkuna;
19   
20    PhysicsObject ammusmittari;
21    PhysicsObject pistetausta;
22    PhysicsObject overlätkä;
23    Image taulunKuva = LoadImage("maalitaulu");
24    Image ammusMittari0 = LoadImage("ammukset0");
25    Image ammusMittari1 = LoadImage("ammukset1");
26    Image tähtäimenKuva = LoadImage("tähtäin2");
27    Image tähtäimenLatausKuva = LoadImage("loadtähtäin");
28    Image savuHiukkanen = LoadImage("savuhiukkanen");
29    Image räjähdysHiukkanen = LoadImage("rajahdys");
30    Image pisteTausta = LoadImage("pistetausta");
31    Image youFailed = LoadImage("Game Over");
32    SoundEffect latausÄäni = LoadSoundEffect("Pump Shotgun");
33    SoundEffect ampumisÄäni = LoadSoundEffect("Sniper_Rifle");
34    SoundEffect räjähdysÄäni = LoadSoundEffect("Bomb");
35    int pMaxMaara = 500;
36   
37   
38
39    double työntöVoima = -100.0;
40
41    double työntöVoimaVarasto = 0;
42
43    string Cheat1 = "MegaTarget";
44
45    int doOnce = 0;
46
47    Boolean osuiko = false;
48
49    public override void Begin()
50    {
51        LuoTähtäin();
52        LuoMaalitaulu(RandomGen.NextDouble(-750.0, 750.0) , 600.0);
53       
54        AsetaOhjaimet();
55        LuoKenttä();
56        LuoAmmusMittari();
57        LuoPisteMittari();
58        TyönnäTaulua(työntöVoima);
59       
60       
61    }
62
63    void LuoTähtäin()
64    {
65        tähtäin = new PhysicsObject(100, 100);
66        tähtäin.Image = tähtäimenKuva;
67        Mouse.ListenMovement(0.1, LiikutaTähtäintä, null);
68        tähtäin.IgnoresGravity = true;
69        tähtäin.IgnoresCollisionResponse = true;
70        tähtäin.CanRotate = false;
71
72       
73       
74
75
76        Add(tähtäin, 1);
77    }
78
79    void LuoAmmusMittari()
80    {
81        ammusmittari = new PhysicsObject(300, 300);
82        ammusmittari.Image = ammusMittari1;
83        ammusmittari.IgnoresGravity = true;
84        ammusmittari.IgnoresCollisionResponse = true;
85        ammusmittari.CanRotate = false;
86        ammusmittari.X = 810.0;
87        ammusmittari.Y = -400.0;
88        Add(ammusmittari);
89
90       
91
92
93
94    }
95
96    void PaljastaCheatit()
97    {
98       
99
100        if (pisteLaskuri.Value == 5)
101        {
102            MessageDisplay.TextColor = Color.Red;
103            MessageDisplay.Add("Oversize targets = MegaTarget");
104        }
105    }
106
107    void LuoPisteMittari()
108    {
109        pistetausta = new PhysicsObject(300, 200);
110        pistetausta.Image = pisteTausta;
111        pistetausta.X = -750.0;
112        pistetausta.Y = 400.0;
113        pistetausta.IgnoresGravity = true;
114        pistetausta.IgnoresCollisionResponse = true;
115        pistetausta.CanRotate = false;
116        Add(pistetausta);
117
118        pisteLaskuri = new IntMeter(0);
119
120        Label pisteNaytto = new Label();
121        pisteNaytto.X = Screen.Left + 200;
122        pisteNaytto.Y = Screen.Top - 150;
123        pisteNaytto.TextColor = Color.Red;
124
125        pisteNaytto.BindTo(pisteLaskuri);
126        Add(pisteNaytto);
127    }
128
129   
130
131    void LuoKenttä()
132    {
133        Level.BackgroundColor = Color.Black;
134       
135
136        liekki = new Flame(savuHiukkanen);
137        rajahdys = new ExplosionSystem(räjähdysHiukkanen, pMaxMaara);
138        Add(rajahdys);
139    }
140
141    void AsetaOhjaimet()
142    {
143        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Exit");
144       
145        Keyboard.Listen(Key.R, ButtonState.Pressed, LataaAse, "Reload weapon");
146
147        Keyboard.Listen(Key.P, ButtonState.Pressed, SyötäSalasana, "Input password");
148
149        Keyboard.Listen(Key.Space, ButtonState.Pressed, Pause1, null);
150
151        Keyboard.Listen(Key.Space, ButtonState.Released, Pause2, null);
152
153
154       
155
156       
157 
158
159 
160
161
162    }
163
164    void Pause1()
165    {
166
167        työntöVoimaVarasto = työntöVoima;
168        maalitaulu.Stop();
169        MessageDisplay.TextColor = Color.Red;
170        MessageDisplay.Add("Game paused, release SPACE to continue.");
171    }
172
173    void Pause2()
174    {
175        MessageDisplay.Clear();
176        työntöVoima = työntöVoimaVarasto;
177        maalitaulu.Hit(new Vector(0, työntöVoima));
178    }
179
180
181    void SyötäSalasana()
182    {
183
184        kysymysIkkuna = new InputWindow("Cheat Window", "Input Cheat Code");
185        kysymysIkkuna.TextEntered += KytkeCheatti;
186        Add(kysymysIkkuna);
187    }
188
189    void KytkeCheatti(InputWindow ikkuna)
190    {
191        string vastaus = ikkuna.InputBox.Text;
192
193        if (vastaus == Cheat1)
194        {
195            maalitaulu.Size = new Vector(400.0, 400.0);
196            MessageDisplay.TextColor = Color.Red;
197            MessageDisplay.Add("Mega Targets activated!");
198        }
199
200        else
201        {
202            MessageDisplay.TextColor = Color.Red; 
203            MessageDisplay.Add("Enter valid code!");
204        }
205    }
206
207    void AmmuHuti()
208    { 
209
210        if (osuiko == false)
211        {
212
213            if (tähtäin.Image == tähtäimenLatausKuva)
214            {
215                MessageDisplay.TextColor = Color.Red;
216                MessageDisplay.Add(" Your weapon is not loaded. Press R to reload weapon.");
217            }
218
219            else
220            {
221                ampumisÄäni.Play();
222                tähtäin.Image = tähtäimenLatausKuva;
223                ammusmittari.Image = ammusMittari0;
224
225            }
226        }
227    }
228
229    void LataaAse()
230    {
231        if (tähtäin.Image == tähtäimenLatausKuva)
232        {
233            Timer.SingleShot(2.0, LataaAse2);
234            latausÄäni.Play();
235        }
236
237        else
238        {
239            MessageDisplay.TextColor = Color.Red;
240            MessageDisplay.Add("You are already loaded your weapon.");
241        }
242    }
243
244    void LataaAse2()
245    {
246        tähtäin.Image = tähtäimenKuva;
247        ammusmittari.Image = ammusMittari1;
248    }
249
250   
251    void Ammu()
252    {
253       
254
255        if (tähtäin.Image == tähtäimenLatausKuva)
256        {
257            MessageDisplay.TextColor = Color.Red;
258            MessageDisplay.Add("Your weapon is not loaded. Press R to reload weapon.");
259        }
260
261        else
262        {
263            liekki = new Flame(savuHiukkanen);
264            Add(liekki);
265            Timer.SingleShot(2.0, RajaytaTaulu);
266            tähtäin.Image = tähtäimenLatausKuva;
267            ampumisÄäni.Play();
268            pisteLaskuri.Value++;
269           
270            PaljastaCheatit();
271        }
272
273        if (tähtäin.Image == tähtäimenLatausKuva)
274        {
275            ammusmittari.Image = ammusMittari0;
276        }
277    }
278
279
280
281
282    void RajaytaTaulu()
283    {
284        double x = maalitaulu.X;
285        double y = maalitaulu.Y;
286        rajahdys.AddEffect(x, y, 200);
287        räjähdysÄäni.Play();
288        maalitaulu.Destroy();
289        osuiko = false;
290       
291       
292        Timer.SingleShot(1.0, SammutaLiekki);
293       
294
295
296    }
297
298    void SammutaLiekki()
299    {
300        liekki.Destroy();
301        liekki = new Flame(savuHiukkanen);
302       
303        doOnce = 0;
304        työntöVoima = työntöVoima - 100;
305        LuoMaalitaulu(RandomGen.NextDouble(-750.0, 750.0), 600.0);
306
307       
308       
309    }
310
311    void LuoMaalitaulu( double x, double y )
312    {
313        maalitaulu = new PhysicsObject( 200.0, 200.0);
314        maalitaulu.Image = taulunKuva;
315        maalitaulu.X = x;
316        maalitaulu.Y = y;
317
318       
319
320       
321       
322           
323       
324       
325       
326
327        Mouse.ListenOn(maalitaulu, MouseButton.Left, ButtonState.Pressed, Ammu, null);
328
329        //Mouse.Listen(MouseButton.Left, ButtonState.Pressed, AmmuHuti, null);
330       
331       
332        Add(maalitaulu);
333
334
335    }
336
337   
338
339    void GameOver()
340    {
341        overlätkä = new PhysicsObject(600, 400);
342        overlätkä.Image = youFailed;
343        overlätkä.IgnoresCollisionResponse = true;
344        overlätkä.IgnoresGravity = true;
345        overlätkä.CanRotate = false;
346        overlätkä.X = 0.0;
347        overlätkä.Y = 0.0;
348        Add(overlätkä, 2);
349
350    }
351
352    void TyönnäTaulua(double työnnä)
353    {
354        maalitaulu.Hit(new Vector(0, työnnä));
355    }
356
357
358    void LiikutaTähtäintä(AnalogState hiirenTila)
359    {
360        tähtäin.X = Mouse.PositionOnWorld.X;
361        tähtäin.Y = Mouse.PositionOnWorld.Y;
362
363        Vector hiirenLiike = hiirenTila.MouseMovement;
364
365    }
366
367    protected override void Update(Time time)
368    {
369       
370
371
372        if (liekki != null)
373        {
374            liekki.Position = maalitaulu.Position;
375        }
376
377        if (doOnce == 0)
378        {
379            TyönnäTaulua(työntöVoima);
380            doOnce = 1;
381        }
382
383       
384       
385        base.Update(time);
386    }
387
388
389
390}
391
Note: See TracBrowser for help on using the repository browser.