source: 2010/31/eelaeepu/space defense 1.0/Peli.cs @ 1596

Revision 1596, 6.4 KB checked in by eelaeepu, 9 years ago (diff)
Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5using System.Collections.Generic;
6
7public class Avaruuspeli : PhysicsGame
8{
9    PhysicsObject alus;
10    List<Label> valikonKohdat;
11    List<Weapon> aseValikko;
12    int valittuAse;
13    Weapon aseKaytossa;
14
15    double aluksennopeus = 200;
16
17    protected override void Begin()
18    {
19
20
21        Valikko();
22
23
24        MessageDisplay.TextColor = Color.White;
25    }
26
27    void LuoKentta()
28    {
29        Level.BackgroundColor = Color.White;
30        Level.CreateBorders(0.2, false);
31        Mouse.IsCursorVisible = true;
32        LuoVihollisAlukset();
33
34
35    }
36
37    void LuoAlus()
38    {
39        alus = new PhysicsObject(100, 80);
40        alus.Image = LoadImage("alus2");
41        luoaseet();
42        Add(alus);
43    }
44
45    void AsetaOhjaimet()
46    {
47        Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, "Ammu aseella.");
48        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
49        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
50        Keyboard.Listen(Key.LeftShift, ButtonState.Pressed, VaihdaAse, "VaihtaaAseen");
51
52        Keyboard.Listen(Key.D, ButtonState.Pressed, LiikutaAlusta, "liikuta alusta oikeaan", alus, new Vector(aluksennopeus, 0.0));
53        Keyboard.Listen(Key.A, ButtonState.Pressed, LiikutaAlusta, "liikuta alusta vasenmpaan", alus, new Vector(-aluksennopeus, 0.0));
54        Keyboard.Listen(Key.S, ButtonState.Pressed, LiikutaAlusta, "liikuta alusta alas", alus, new Vector(0.0, -aluksennopeus));
55        Keyboard.Listen(Key.W, ButtonState.Pressed, LiikutaAlusta, "Liikuta alusta ylös.", alus, new Vector(0.0, aluksennopeus));
56    }
57
58    void KaannaAlusta(PhysicsObject alus, double kaantoNopeus)
59    {
60        alus.AngularVelocity += kaantoNopeus;
61    }
62
63    void LiikutaAlusta(PhysicsObject alus, Vector nopeus)
64    {
65        Vector impulssi = nopeus;
66        alus.Hit(impulssi);
67    }
68
69    void Valikko()
70    {
71        ClearAll();
72        valikonKohdat = new List<Label>();
73
74        Label kohta1 = new Label("Aloita uusi peli");
75        kohta1.Position = new Vector(0, 40);
76        valikonKohdat.Add(kohta1);
77
78        Label kohta2 = new Label("Lopeta");
79        kohta2.Position = new Vector(0, -40);
80        valikonKohdat.Add(kohta2);
81
82        foreach (Label valikonKohta in valikonKohdat)
83        {
84            Add(valikonKohta);
85        }
86
87        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
88        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Lopeta, null);
89
90        Mouse.IsCursorVisible = true;
91        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
92        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Lopeta, "");
93
94    }
95
96    void AloitaPeli()
97    {
98        ClearAll();
99        LuoKentta();
100        Camera.ZoomToLevel();
101        LuoAlus();
102        AsetaOhjaimet();
103        Mouse.ListenMovement(0.1, KuunteleLiiketta, null);
104        //Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Palaa valikkoon");
105    }
106
107    void ValikossaLiikkuminen(AnalogState hiirenTila)
108    {
109        foreach (Label kohta in valikonKohdat)
110        {
111            if (Mouse.IsCursorOn(kohta))
112            {
113                kohta.TextColor = Color.Red;
114            }
115            else
116            {
117                kohta.TextColor = Color.Black;
118            }
119
120        }
121    }
122
123    void Lopeta()
124    {
125        Exit();
126    }
127
128    void luoaseet()   
129    {
130        aseValikko = new List<Weapon>();
131        Cannon tykki = new Cannon(50, 10);
132        tykki.Power.Value = 10000;
133        tykki.IsVisible = false;
134        tykki.Tag = "tykki";
135        tykki.CannonBallCollision = AmmusOsuu;
136        tykki.Angle = alus.Angle - Angle.Degrees(90);
137        alus.Add(tykki);
138
139        AssaultRifle rynnakkoKivaari = new AssaultRifle(60, 20);
140        rynnakkoKivaari.Angle = alus.Angle - Angle.Degrees(90);
141        rynnakkoKivaari.BulletCollision = AmmusOsuu;
142        rynnakkoKivaari.IsVisible = false;
143        PlasmaCannon plasmaTykki = new PlasmaCannon(60, 20);
144        plasmaTykki.Angle = alus.Angle - Angle.Degrees(90);
145        plasmaTykki.PlasmaParticleCollision = AmmusOsuu;
146        plasmaTykki.IsVisible = false;
147        LaserGun laserAse = new LaserGun(60, 20);
148        laserAse.Angle = alus.Angle - Angle.Degrees(90);
149        laserAse.LaserCollision = AmmusOsuu;
150        laserAse.IsVisible = false;
151
152        aseValikko.Add(rynnakkoKivaari);
153        aseValikko.Add(plasmaTykki);
154        aseValikko.Add(laserAse);
155        aseValikko.Add(tykki);
156        aseKaytossa = tykki;
157        valittuAse = 3;
158        //Add(tykki);
159    }
160
161    void AmmusOsuu(PhysicsObject ammus, PhysicsObject kohde)
162    {
163        if (kohde == alus)
164            return;
165        ammus.Destroy();
166    }
167
168    void VaihdaAse()
169    {
170        int edellinenAse = valittuAse;
171        valittuAse++;
172        if (valittuAse >= aseValikko.Count)
173            valittuAse = 0;
174        alus.Remove(aseValikko[edellinenAse]);
175        Remove(alus);
176        alus.Add(aseValikko[valittuAse]);
177        aseKaytossa = aseValikko[valittuAse];
178
179        Timer alusTakaisin = new Timer();
180        alusTakaisin.Interval = 0;
181        alusTakaisin.Tag = alus;
182        alusTakaisin.Start(1);
183        alusTakaisin.Trigger += AlusTakaisinAseenVaihdonJalkeen;
184    }
185
186    void AlusTakaisinAseenVaihdonJalkeen(Timer ajastin)
187    {
188        PhysicsObject alus = (PhysicsObject)ajastin.Tag;
189        Add(alus);
190    }
191
192    void KuunteleLiiketta(AnalogState hiirenTila)
193    {
194
195       
196    }
197    protected override void Update(Time time)
198    {
199
200        base.Update(time);
201
202        if (alus != null)
203        {
204            Vector suunta = Mouse.PositionOnWorld - alus.Position;
205            alus.Angle = suunta.Angle + Angle.Degrees(90);
206        }
207
208    }
209    void AmmuAseella()
210    {
211        PhysicsObject ammus = aseKaytossa.Shoot();
212
213        if (ammus != null)
214        {
215            ammus.Size *= 3;
216            if (aseKaytossa.Tag.ToString() == "tykki")
217            {
218                Cannon tykki = (Cannon)aseKaytossa;
219                tykki.Power.Value += 10000;
220            }
221        }
222    }
223        void LuoVihollisAlukset()
224        {
225            PhysicsObject vihollisalus1 = new PhysicsObject (100, 80);
226            vihollisalus1.Image = LoadImage ("vihollis alus1");
227            Add(vihollisalus1);         
228        }
229
230    }
231
Note: See TracBrowser for help on using the repository browser.