source: 2013/30/NikiV/Airbattle/Airbattle/Airbattle/Airbattle.cs @ 4637

Revision 4637, 9.2 KB checked in by nieekrva, 6 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
9public class Airbattle : PhysicsGame
10{
11    PhysicsObject alus;
12    Image aluskuva = LoadImage("alus");
13    IntMeter pisteLaskuri;
14    ExplosionSystem rajahdys = new ExplosionSystem(LoadImage("rajahdys"), 100);
15    List<Vector> vihujenSpawnauspaikat;
16    List<Vector> hamistenSpawnauspaikat;
17    IntMeter vihulaskuri;
18
19    EasyHighScore topLista = new EasyHighScore();
20
21    int[] montakoVihuaKentassa = { 20, 30, 40, 50, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180 };
22    int kenttaNro = 0;
23    double RUUDUN_LEVEYS = 50;
24
25    public override void Begin()
26    {
27        SetWindowSize(800, 600, false);
28        Paavalikko();
29    }
30
31    void Aloitapeli()
32    {
33        ClearAll();
34        vihujenSpawnauspaikat = new List<Vector>();
35        hamistenSpawnauspaikat = new List<Vector>();
36        vihulaskuri = new IntMeter(0, 0, int.MaxValue);
37        vihulaskuri.LowerLimit += delegate
38        {
39            kenttaNro++;
40            Timer.SingleShot(2.0, delegate
41            {
42                UusiKentta(kenttaNro);
43            });
44        };
45        Add(rajahdys);
46        Level.Size = new Vector(800, 600);
47       
48        LuoKentta();
49        LuoPistelaskuri();
50        MediaPlayer.Play("taustamusa");
51        MediaPlayer.IsRepeating = true;
52        Level.Background.CreateStars(10000);
53        Camera.ZoomToLevel();
54        Kontrollit();
55
56        UusiKentta(kenttaNro);
57    }
58
59    void UusiKentta(int kenttaNro)
60    {
61        for (int i = 0; i < montakoVihuaKentassa[kenttaNro]; i++)
62        {
63            PhysicsObject vihu = Luoperusvihu(RandomGen.SelectOne(vihujenSpawnauspaikat.ToArray()), RUUDUN_LEVEYS, RUUDUN_LEVEYS);
64            vihulaskuri.Value++;
65            vihu.Destroyed += delegate { vihulaskuri.Value--; };
66        }
67    }
68
69    private void Kontrollit()
70    {
71        Keyboard.Listen(Key.Space, ButtonState.Pressed, Ammu, "Ammu", alus);
72
73        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, null, alus, new Vector(-1000, 0));
74        Keyboard.Listen(Key.Left, ButtonState.Released, LiikutaPelaajaa, null, alus, Vector.Zero);
75
76        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, null, alus, new Vector(1000, 0));
77        Keyboard.Listen(Key.Right, ButtonState.Released, LiikutaPelaajaa, null, alus, Vector.Zero);
78
79        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, null, alus, new Vector(0, 1000));
80        Keyboard.Listen(Key.Up, ButtonState.Released, LiikutaPelaajaa, null, alus, Vector.Zero);
81
82        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, null, alus, new Vector(0, -1000));
83        Keyboard.Listen(Key.Down, ButtonState.Released, LiikutaPelaajaa, null, alus, Vector.Zero);
84
85        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, LiikutaPelaajaa, "Pelaaja liikkuu vasemmalle", alus, new Vector(-1000, 0));
86        ControllerOne.Listen(Button.DPadLeft, ButtonState.Released, LiikutaPelaajaa, null, alus, Vector.Zero);
87
88        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, LiikutaPelaajaa, null, alus, new Vector(1000, 0));
89        ControllerOne.Listen(Button.DPadRight, ButtonState.Released, LiikutaPelaajaa, null, alus, Vector.Zero);
90
91        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, LiikutaPelaajaa, null, alus, new Vector(0, 1000));
92        ControllerOne.Listen(Button.DPadUp, ButtonState.Released, LiikutaPelaajaa, null, alus, Vector.Zero);
93
94        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, LiikutaPelaajaa, null, alus, new Vector(0, -1000));
95        ControllerOne.Listen(Button.DPadDown, ButtonState.Released, LiikutaPelaajaa, null, alus, Vector.Zero);
96
97        ControllerOne.Listen(Button.A, ButtonState.Pressed, Ammu, "ammu", alus);
98
99        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
100        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
101    }
102
103
104    void Ammu(PhysicsObject ampuja)
105    {
106        PhysicsObject ammus = new PhysicsObject(10, 10);
107        //ammus.Image = luodinkuva;
108
109        ammus.Position = ampuja.Position;
110        ammus.IgnoresGravity = true;
111        ammus.Angle = ampuja.Angle;
112        ammus.Color = Color.Yellow;
113        ammus.CanRotate = false;
114        ammus.LifetimeLeft = TimeSpan.FromSeconds(2);
115        ammus.Tag = "ammus";
116        ammus.CollisionIgnoreGroup = ampuja.CollisionIgnoreGroup;
117        ammus.Hit(Vector.FromLengthAndAngle(1000, ampuja.Angle + Angle.FromDegrees(90)));
118        Add(ammus);
119        AddCollisionHandler(ammus, "hämis", CollisionHandler.AddMeterValue(pisteLaskuri, 200));
120        AddCollisionHandler(ammus, "perusvihu", CollisionHandler.AddMeterValue(pisteLaskuri, 300));
121        AddCollisionHandler(ammus, AmmusOsuu);
122
123    }
124
125    void AmmusOsuu(PhysicsObject ammus, PhysicsObject kohde)
126    {
127        ammus.Destroy();
128        if(!kohde.Tag.Equals("seinä"))kohde.Destroy();
129    }
130
131
132
133
134    void PelaajaOsuu(PhysicsObject alus, PhysicsObject kohde)
135    {
136        alus.Destroy();
137        rajahdys.AddEffect(alus.X, alus.Y, 100);
138        ControllerOne.Vibrate(1.5, 1.5, 0.0, 0.0, 1.5);
139        topLista.EnterAndShow(pisteLaskuri.Value);
140        topLista.HighScoreWindow.Closed += IkkunaSuljettu;
141
142    }
143   
144    void IkkunaSuljettu(Window sender)
145    {
146        Aloitapeli();
147    }
148
149    void LiikutaPelaajaa(PhysicsObject alus, Vector nopeus)
150    {
151        // alareuna
152        if ((nopeus.Y < 0) && (alus.Bottom <= Level.Bottom))
153        {
154            alus.Bottom = Level.Bottom;
155            alus.Velocity = Vector.Zero;
156            return;
157        }
158        // yläreuna
159        if ((nopeus.Y > 0) && (alus.Top >= Level.Top))
160        {
161            alus.Top = Level.Top;
162            alus.Velocity = Vector.Zero;
163            return;
164        }
165        // vasen
166        if ((nopeus.X < 0) && (alus.Left <= Level.Left))
167        {
168            alus.Left = Level.Left;
169            alus.Velocity = Vector.Zero;
170            return;
171        }
172        // oikea
173        if ((nopeus.X > 0) && (alus.Right >= Level.Right))
174        {
175            alus.Right = Level.Right;
176            alus.Velocity = Vector.Zero;
177            return;
178        }
179
180        alus.Velocity = nopeus;
181
182    }
183    void LuoKentta()
184    {
185        TileMap ruudut = TileMap.FromLevelAsset("kentta1");
186        ruudut.SetTileMethod('a', Luoalus);
187        ruudut.SetTileMethod('h', LisaaHamiksenPaikka);
188        ruudut.SetTileMethod('p', LisaaVihunPaikka);
189        ruudut.Execute(RUUDUN_LEVEYS, RUUDUN_LEVEYS);
190    }
191
192
193    void Luoalus(Vector paikka, double leveys, double korkeus)
194    {
195        alus = new PhysicsObject(leveys, korkeus, Shape.Circle);
196        Add(alus);
197        alus.Position = paikka;
198        alus.LinearDamping = 0.9;
199        alus.CollisionIgnoreGroup = 2;
200        alus.CanRotate = false;
201        alus.Tag = "alus";
202        alus.Image = aluskuva;
203        AddCollisionHandler(alus, "hämis", PelaajaOsuu);
204        AddCollisionHandler(alus, "perusvihu", PelaajaOsuu);
205    }
206
207    void LisaaHamiksenPaikka(Vector paikka, double leveys, double korkeus)
208    {
209        hamistenSpawnauspaikat.Add(paikka);
210    }
211   
212    void LisaaVihunPaikka(Vector paikka, double leveys, double korkeus)
213    {
214        vihujenSpawnauspaikat.Add(paikka);
215    }
216   
217    void Luohamis(Vector paikka, double leveys, double korkeus)
218    {
219        PhysicsObject hamis = new PhysicsObject(leveys, korkeus);
220        hamis.Position = paikka;
221        Add(hamis);
222        hamis.CanRotate = false;
223        //hamis.AngularDamping = 0.9;
224        Image hamiskuva = LoadImage("hamis");
225        hamis.Image = hamiskuva;
226        FollowerBrain seuraajanAivot = new FollowerBrain("alus");
227        seuraajanAivot.Speed = 200;
228        seuraajanAivot.Active = true;
229        hamis.Brain = seuraajanAivot;
230        hamis.Tag = "hämis";
231       
232    }
233    PhysicsObject Luoperusvihu(Vector paikka, double leveys, double korkeus)
234    {
235        PhysicsObject perusvihu = new PhysicsObject(leveys, korkeus);
236        perusvihu.Position = paikka;
237        Add(perusvihu);
238        perusvihu.CanRotate = false;
239        Image perusvihukuva = LoadImage("perusvihu");
240        perusvihu.Image = perusvihukuva;
241        FollowerBrain seuraajanAivot = new FollowerBrain("alus");
242        seuraajanAivot.Speed = 200;
243        seuraajanAivot.Active = true;
244        perusvihu.Brain = seuraajanAivot;
245        perusvihu.Tag = "perusvihu";
246        return perusvihu;
247    }
248    void Paavalikko()
249    {
250        MultiSelectWindow alkuValikko = new MultiSelectWindow("",
251        "Aloita peli");
252        Add(alkuValikko);
253        alkuValikko.AddItemHandler(0, Aloitapeli);
254        alkuValikko.Color = Color.Transparent;
255
256    }
257
258   
259
260
261
262    void LuoPistelaskuri()
263    {
264        pisteLaskuri = new IntMeter(0);
265
266        Label pisteNaytto = new Label();
267        pisteNaytto.X = Screen.Left + 100;
268        pisteNaytto.Y = Screen.Top - 100;
269        pisteNaytto.TextColor = Color.Black;
270        pisteNaytto.Color = Color.White;
271
272        pisteNaytto.BindTo(pisteLaskuri);
273        Add(pisteNaytto);
274    }
275   
276   
277
278
279
280
281
282
283
284}
Note: See TracBrowser for help on using the repository browser.