source: 2012/26/ElmoR/Hurja Arska/Hurja Arska/Hurja Arska/Hurja_Arska.cs @ 3406

Revision 3406, 12.1 KB checked in by elperohu, 8 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9class Pelaaja : PhysicsObject
10{
11    public Pelaaja(double leveys, double korkeus)
12        : base(leveys, korkeus)
13    {
14    }
15}
16
17class TyhmaVihu : PhysicsObject
18{
19    public IntMeter elamaLaskuri = new IntMeter(3, 0, 3);
20
21    public TyhmaVihu(double leveys, double korkeus)
22        : base(leveys, korkeus)
23    {
24        //elamaLaskuri.LowerLimit += vihuKuolee;
25    }
26   
27    // void vihuKuolee()
28    //{
29       
30    //    int elamaa = RandomGen.NextInt(0, 25);
31    //    if (elamaa > 24 && IsDestroyed == false)
32    //    {
33    //        Hurja_Arska.LuoMakkara(this.Game);
34    //    }
35    //    this.Destroy();
36    //}
37
38}
39
40public class Hurja_Arska : PhysicsGame
41{
42    const int RUUDUN_KOKO = 32;
43    Pelaaja arska;
44    AssaultRifle ase;
45
46    int arskanVoima = 10;
47    IntMeter pisteet;
48
49    ScoreList topLista = new ScoreList(10, false, 0);
50
51    public override void Begin()
52    {
53        SetWindowSize(1024, 768, false);
54        LuoMaailma();
55        tyhmaVihollinenAjastin();
56        LataaKentta();
57        LuoTausta();
58        elamaLaskuri();
59        pisteLaskuri();
60
61        MediaPlayer.Play("Hurja_Arskan_musa");
62
63        IsMouseVisible = true;
64        Mouse.ListenMovement(0.1, Ohjaus, "");
65
66        if (DataStorage.Exists("pisteet.xml"))
67            topLista = DataStorage.Load<ScoreList>(topLista, "pisteet.xml");
68
69        Camera.Follow(arska);
70        Camera.ZoomToLevel();
71        Camera.StayInLevel = true;
72
73        Keyboard.Listen(Key.W, ButtonState.Down, LiikuEteen, "");
74        Keyboard.Listen(Key.W, ButtonState.Released, arska.Stop, "");
75        Keyboard.Listen(Key.S, ButtonState.Down, LiikuTaakse, "");
76        Keyboard.Listen(Key.S, ButtonState.Released, arska.Stop, "");
77        Keyboard.Listen(Key.D, ButtonState.Down, LiikuOikealle, "");
78        Keyboard.Listen(Key.D, ButtonState.Released, arska.Stop, "");
79        Keyboard.Listen(Key.A, ButtonState.Down, LiikuVasemmalle, "");
80        Keyboard.Listen(Key.A, ButtonState.Released, arska.Stop, "");
81
82        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, AmmuAseella, "");
83    }
84
85    void LuoMaailma()
86    {
87        arska = new Pelaaja(42.0, 42.0);
88        arska.Shape = Shape.Circle;
89        arska.Image = LoadImage("arskapallo");
90        arska.Y = -250;
91        arska.AngularDamping = 0.9;
92        Add(arska);
93
94        AddCollisionHandler(arska, "vihu", arskaTormaa);
95
96        AddCollisionHandler(arska, "Voimaa", arskaParantuu);
97
98        ase = new AssaultRifle(0, 0);
99        arska.Add(ase);
100        ase.Angle = (Mouse.PositionOnWorld - ase.Position).Angle;
101        ase.Ammo.Value = 99999;
102
103    }
104
105    void TallennaPisteet(Window sender)
106    {
107        DataStorage.Save<ScoreList>(topLista, "pisteet.xml");
108        ClearAll();
109        Exit();
110    }
111   
112
113    void AmmuAseella()
114    {
115        PhysicsObject ammus = ase.Shoot();
116
117        if (ammus != null)
118        {
119            ammus.Size *= 1.0;
120        }
121    }
122
123    IntMeter voimaLaskuri;
124
125    void elamaLaskuri()
126    {
127        voimaLaskuri = new IntMeter(0);
128
129        Label pisteNaytto = new Label();
130        pisteNaytto.X = Screen.Left + 100;
131        pisteNaytto.Y = Screen.Top - 100;
132        pisteNaytto.TextColor = Color.Black;
133        pisteNaytto.Color = Color.White;
134        pisteNaytto.Title = "Voima";
135        voimaLaskuri.Value = arskanVoima;
136
137        pisteNaytto.BindTo(voimaLaskuri);
138        Add(pisteNaytto);
139
140    }
141
142    void pisteLaskuri()
143    {
144        pisteet = new IntMeter(0);
145
146        Label pisteetNaytto = new Label();
147        pisteetNaytto.X = Screen.Right - 100;
148        pisteetNaytto.Y = Screen.Top - 100;
149        pisteetNaytto.TextColor = Color.Black;
150        pisteetNaytto.Color = Color.White;
151        pisteetNaytto.Title = "Pisteet";
152       // pisteet.Value = pisteet;
153
154        pisteetNaytto.BindTo(pisteet);
155        Add(pisteetNaytto);
156    }
157
158
159    void LataaKentta()
160    {
161        TileMap ruudut = TileMap.FromLevelAsset("taustatext");
162        ruudut.SetTileMethod('L', LuoLaatikko);
163        ruudut.SetTileMethod('T', LuoTiilet);
164        ruudut.SetTileMethod('V', LuoTiiletVarjo1);
165        ruudut.SetTileMethod('B', LuoTiiletVarjo2);
166        ruudut.SetTileMethod('N', LuoTiiletVarjo3);
167        ruudut.SetTileMethod('A', LuoTiiletRikki1);
168        ruudut.SetTileMethod('S', LuoTiiletRikki2);
169        ruudut.SetTileMethod('D', LuoTiiletRikki3);
170        ruudut.SetTileMethod('F', LuoTiiletRikki4);
171        ruudut.SetTileMethod('M', LuoTiiletVeressa);
172        ruudut.SetTileMethod('O', LuoTiiletPVarjo1);
173        ruudut.SetTileMethod('P', LuoTiiletPVarjo2);
174        ruudut.SetTileMethod('Z', LuoTiiletPVarjo3);
175        ruudut.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
176    }
177
178    void LuoTiiletVeressa(Vector paikka, double leveys, double korkeus)
179    {
180        GameObject tiilevr = new GameObject(leveys, korkeus);
181        tiilevr.Position = paikka;
182        tiilevr.Image = LoadImage("tiiletVeressa");
183        Add(tiilevr, -2);
184    }
185
186    void LuoTiilet(Vector paikka, double leveys, double korkeus)
187    {
188        GameObject tiilet1 = new GameObject(leveys, korkeus);
189        tiilet1.Position = paikka;
190        tiilet1.Image = LoadImage("tiilet1");
191        Add(tiilet1, -2);
192    }
193
194    void LuoTiiletVarjo1(Vector paikka, double leveys, double korkeus)
195    {
196        GameObject tiiletv1 = new GameObject(leveys, korkeus);
197        tiiletv1.Position = paikka;
198        tiiletv1.Image = LoadImage("tiiletVarjo1");
199        Add(tiiletv1, -2);
200    }
201
202    void LuoTiiletVarjo2(Vector paikka, double leveys, double korkeus)
203    {
204        GameObject tiiletv2 = new GameObject(leveys, korkeus);
205        tiiletv2.Position = paikka;
206        tiiletv2.Image = LoadImage("tiiletVarjo2");
207        Add(tiiletv2, -2);
208    }
209
210    void LuoTiiletVarjo3(Vector paikka, double leveys, double korkeus)
211    {
212        GameObject tiiletv3 = new GameObject(leveys, korkeus);
213        tiiletv3.Position = paikka;
214        tiiletv3.Image = LoadImage("tiiletVarjo3");
215        Add(tiiletv3, -2);
216    }
217
218    void LuoTiiletPVarjo1(Vector paikka, double leveys, double korkeus)
219    {
220        GameObject tiiletPv1 = new GameObject(leveys, korkeus);
221        tiiletPv1.Position = paikka;
222        tiiletPv1.Image = LoadImage("tiiletPitkaVarja1");
223        Add(tiiletPv1, -2);
224    }
225
226    void LuoTiiletPVarjo2(Vector paikka, double leveys, double korkeus)
227    {
228        GameObject tiiletPv2 = new GameObject(leveys, korkeus);
229        tiiletPv2.Position = paikka;
230        tiiletPv2.Image = LoadImage("tiiletPitkaVarja2");
231        Add(tiiletPv2, -2);
232    }
233
234    void LuoTiiletPVarjo3(Vector paikka, double leveys, double korkeus)
235    {
236        GameObject tiiletPv3 = new GameObject(leveys, korkeus);
237        tiiletPv3.Position = paikka;
238        tiiletPv3.Image = LoadImage("tiiletPitkaVarja3");
239        Add(tiiletPv3, -2);
240    }
241
242    void LuoTiiletRikki1(Vector paikka, double leveys, double korkeus)
243    {
244        GameObject tiiletr1 = new GameObject(leveys, korkeus);
245        tiiletr1.Position = paikka;
246        tiiletr1.Image = LoadImage("tiiletRikki1");
247        Add(tiiletr1, -2);
248    }
249
250    void LuoTiiletRikki2(Vector paikka, double leveys, double korkeus)
251    {
252        GameObject tiiletr2 = new GameObject(leveys, korkeus);
253        tiiletr2.Position = paikka;
254        tiiletr2.Image = LoadImage("tiiletRikki2");
255        Add(tiiletr2, -2);
256    }
257
258    void LuoTiiletRikki3(Vector paikka, double leveys, double korkeus)
259    {
260        GameObject tiiletr3 = new GameObject(leveys, korkeus);
261        tiiletr3.Position = paikka;
262        tiiletr3.Image = LoadImage("tiiletRikki3");
263        Add(tiiletr3, -2);
264    }
265
266    void LuoTiiletRikki4(Vector paikka, double leveys, double korkeus)
267    {
268        GameObject tiiletr4 = new GameObject(leveys, korkeus);
269        tiiletr4.Position = paikka;
270        tiiletr4.Image = LoadImage("tiiletRikki4");
271        Add(tiiletr4, -2);
272    }
273
274    void LuoLaatikko(Vector paikka, double leveys, double korkeus)
275    {
276        PhysicsObject laatikko = PhysicsObject.CreateStaticObject(leveys, korkeus);
277        laatikko.Position = paikka;
278        laatikko.Image = LoadImage("laatikko1");
279        Add(laatikko, -1);
280    }
281
282    void Ohjaus(AnalogState state)
283    {
284        arska.Angle = (Mouse.PositionOnWorld - arska.Position).Angle;
285    }
286
287    void LiikuEteen()
288    {
289        arska.Move(Vector.FromLengthAndAngle(300, arska.Angle));
290    }
291
292    void LiikuTaakse()
293    {
294        arska.Move(Vector.FromLengthAndAngle(100, arska.Angle - Angle.FromDegrees(180)));
295    }
296
297    void LiikuOikealle()
298    {
299        arska.Move(Vector.FromLengthAndAngle(150, arska.Angle - Angle.FromDegrees(90)));
300    }
301
302    void LiikuVasemmalle()
303    {
304        arska.Move(Vector.FromLengthAndAngle(150, arska.Angle - Angle.FromDegrees(270)));
305    }
306
307    void tyhmaVihollinenAjastin()
308    {
309        Timer tVajastin = new Timer();
310        tVajastin.Interval = RandomGen.NextDouble(0.3, 0.6);
311        tVajastin.Timeout += LuoVihollinen;
312        tVajastin.Start();
313    }
314
315    void LuoVihollinen()
316    {
317        TyhmaVihu tyhmaVihollinen = new TyhmaVihu(42.0, 42.0);
318        tyhmaVihollinen.Shape = Shape.Circle;
319        tyhmaVihollinen.Image = LoadImage("vihupallo");
320        tyhmaVihollinen.X = RandomGen.NextInt(-348, 348);
321        tyhmaVihollinen.Y = Level.Top-52;
322        tyhmaVihollinen.Tag = "vihu";
323        Add(tyhmaVihollinen);
324
325        ase.ProjectileCollision += vihuunOsui;
326
327        FollowerBrain seuraajanAivot = new FollowerBrain(arska);
328        seuraajanAivot.Speed = RandomGen.NextInt(120, 330);       
329        seuraajanAivot.DistanceToTarget.Changed += delegate
330        {
331            tyhmaVihollinen.Angle = (arska.Position - tyhmaVihollinen.Position).Angle;
332        };
333        seuraajanAivot.DistanceFar = 1200;
334        seuraajanAivot.DistanceClose = 0;
335        seuraajanAivot.StopWhenTargetClose = false;
336        tyhmaVihollinen.Brain = seuraajanAivot;
337
338    }
339
340    void LuoMakkara()
341    {
342        PhysicsObject makkara = new PhysicsObject(16.0, 16.6);
343        makkara.X = RandomGen.NextInt(-200, 200);
344        makkara.Y = RandomGen.NextInt(-200, 200);
345        makkara.Image = LoadImage("Voimaa");
346        makkara.Tag = "Voimaa";
347        Add(makkara);
348    }
349
350    void arskaParantuu(PhysicsObject arska, PhysicsObject kohde)
351    {
352        arskanVoima +=2;
353        voimaLaskuri.Value = arskanVoima;
354        voimaLaskuri.MaxValue = 10;
355        if (arskanVoima > 10)
356        {
357            arskanVoima = 10;
358        }
359        kohde.Destroy();
360    }
361
362
363    void arskaTormaa(PhysicsObject tormaaja, PhysicsObject kohde)
364    {
365        arskanVoima--;
366        voimaLaskuri.Value--;
367        arska.Move(Vector.FromLengthAndAngle(60, arska.Angle - Angle.FromDegrees(180)));
368        if (arskanVoima < 0)
369        {
370            HighScoreWindow topIkkuna = new HighScoreWindow(
371                             "Parhaat pisteet",
372                             "Onneksi olkoon, pääsit listalle pisteillä %p! Syötä nimesi:",
373                             topLista, pisteet);
374            topIkkuna.Closed += TallennaPisteet;
375            Add(topIkkuna);
376            arska.Destroy();
377        }
378    }
379
380    void vihuunOsui(PhysicsObject ammus, PhysicsObject kohde)
381    {
382        ammus.Destroy();
383        //pisteet.Value += 1;
384
385        TyhmaVihu kohdeVihu = kohde as TyhmaVihu;
386        if (kohdeVihu != null)
387        {
388            kohdeVihu.elamaLaskuri.Value--;
389            if (kohdeVihu.elamaLaskuri.Value == 0&& kohdeVihu.IsDestroyed == false)
390            {
391                kohdeVihu.Destroy();
392                int elamaa = RandomGen.NextInt(0, 25);
393                if (elamaa > 23)
394
395                {
396                    LuoMakkara();
397                }
398               
399                pisteet.Value += 1;
400            }
401        }
402    }
403
404    void LuoTausta()
405    {
406        GameObject tausta = new GameObject(Level.Width, Level.Height);
407        tausta.Image = LoadImage("tausta2");
408        Add(tausta, -3);
409    }
410}
Note: See TracBrowser for help on using the repository browser.