source: 2012/24/AnttoniS/Ufot/Ufot/Ufot/Ufot.cs @ 3022

Revision 3022, 6.7 KB checked in by sijoseha, 9 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 Ufot : PhysicsGame
10{
11
12    PeliHahmo vartalo;
13    Image tahtainKuva = LoadImage("tahtain");
14    DoubleMeter voimaMittari;
15    PhysicsObject pää;
16    Image ukko = LoadImage("ukko");
17    ExplosionSystem rajahdys;
18    PhysicsObject olio;
19    Image olioKuva = LoadImage("olio");
20    Image taustakuva = LoadImage("background");
21    Cannon tykki;
22    GameObject tahtain;
23
24
25    public override void Begin()
26    {
27        voimaMittari = new DoubleMeter(10);
28        voimaMittari.MaxValue = 10;
29        voimaMittari.LowerLimit += delegate { tuhoaPelaaja(); };
30        ProgressBar voimaPalkki = new ProgressBar(200, 10);
31        voimaPalkki.BindTo(voimaMittari);
32        Add(voimaPalkki);
33        voimaPalkki.X = Screen.Right - 150;
34        voimaPalkki.Y = Screen.Top - 100;
35        voimaPalkki.Angle = Angle.RightAngle;
36        voimaPalkki.BarColor = Color.Green;
37        voimaPalkki.BorderColor = Color.Yellow;
38        voimaPalkki.Angle = Angle.FromDegrees(0);
39
40        Level.CreateBorders(false);
41        Level.BackgroundColor = Color.LightGray;
42        Level.Background.Image = taustakuva;
43
44        rajahdys = new ExplosionSystem(LoadImage("rajahdys"), 500);
45        rajahdys.MaxVelocity = 10;
46        rajahdys.MinVelocity = 5;
47        rajahdys.BlendMode = BlendMode.Additive;
48        Add(rajahdys);
49
50        vartalo = new PeliHahmo(75, 150);
51        vartalo.Mass = 9;
52        PlasmaCannon ase = new PlasmaCannon(30, 20);
53        vartalo.Add(ase);
54        ase.IsVisible = false;
55
56        ase.X = 10;
57        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, AmmuAseella, "Ammu", ase);
58        Mouse.IsCursorVisible = false;
59
60        vartalo.X = -0.0;
61        vartalo.Y = -450.0;
62        vartalo.Color = Color.Beige;
63        vartalo.Shape = Shape.Ellipse;
64        Gravity = new Vector(0.0, 0.0);
65        vartalo.Restitution = 1.0;
66        Add(vartalo);
67        vartalo.CollisionIgnoreGroup = 0;
68        //vartalo.Image = ukko;
69        vartalo.LeftWalkingAnimation = Image.Mirror(ukko);
70        vartalo.RightWalkingAnimation = ukko;
71        vartalo.Move(new Vector(1000, 0));
72
73        olio = new PhysicsObject(300, 120);
74        olio.Color = Color.Gray;
75        olio.CanRotate = false;
76        olio.Shape = Shape.Circle;
77        olio.X = 0.0;
78        olio.Y = 285;
79        Add(olio);
80        AddCollisionHandler(vartalo, "kuula", VahennaElamaa);
81        olio.IgnoresCollisionResponse = false;
82        tykki = new Cannon(20, 5);
83        tykki.IsVisible = false;
84        olio.Add(tykki);
85        // laserPyssy.ProjectileCollision = LaserSadeOsuu;
86        olio.Image = olioKuva;
87        Vector suunta = (vartalo.Position - olio.Position).Normalize();
88        tykki.Angle = suunta.Angle;
89        PathFollowerBrain polkuAivot = new PathFollowerBrain();
90        List<Vector> polku = new List<Vector>();
91        polku.Add(new Vector(-50, 280));
92        polku.Add(new Vector(-20, 90));
93        polku.Add(new Vector(-120, -0));
94
95        polkuAivot.Path = polku;
96        polkuAivot.Loop = true;
97        polkuAivot.Speed = 100;
98        olio.Brain = polkuAivot;
99
100
101        Timer vihuAmpuuAjastin = new Timer();
102        vihuAmpuuAjastin.Interval = 2.0;
103        vihuAmpuuAjastin.Timeout += new Action(vihuAmpuu);
104        vihuAmpuuAjastin.Start();
105
106        tahtain = new GameObject(40, 40, Shape.Circle);
107        tahtain.Color = Color.Red;
108        Add(tahtain);
109        tahtain.Image = tahtainKuva;
110       
111
112        Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, null, -1000.0);
113        Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa, null, 1000.0);
114        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
115        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
116        Mouse.ListenMovement(0.1, Tahtays, null, ase);
117
118    }
119
120    void vihuAmpuu()
121    {
122        Vector suunta = (vartalo.Position - olio.Position).Normalize();
123        tykki.Angle = suunta.Angle;
124        PhysicsObject kuula = tykki.Shoot();
125        if (kuula != null)
126        {
127            kuula.Tag = "kuula";
128            kuula.Hit((vartalo.Position - olio.Position) * 40);
129            kuula.Size *= 2;
130            AddCollisionHandler(kuula, KuulaTormaa);
131
132        }
133    }
134
135    void tuhoaPelaaja()
136    {
137        vartalo.Destroy();
138    }
139
140    void Tahtays(AnalogState hiirenTila, PlasmaCannon ase)
141    {
142        Vector erotus = Mouse.PositionOnWorld - vartalo.Position;
143        ase.Angle = erotus.Angle;
144        tahtain.Position = Mouse.PositionOnWorld;
145    }
146
147    void AmmuAseella(PlasmaCannon ase)
148    {
149        PhysicsObject ammus = ase.Shoot();
150        ase.IsVisible = false;
151        if (ammus != null)
152        {
153            ammus.Size *= 2;
154            ammus.Color = Color.Black;
155            ammus.Shape = Shape.Circle;
156            AddCollisionHandler(ammus, AmmusTormaa);
157        }
158    }
159
160    void AmmusTormaa(PhysicsObject tormaaja, PhysicsObject kohde)
161    {
162        rajahdys.AddEffect(tormaaja.Position, 48);
163        tormaaja.Destroy();
164
165    }
166
167    class PeliHahmo : PlatformCharacter
168    {
169        public int Elamat = 3;
170
171        public PeliHahmo(double leveys, double korkeus)
172            : base(leveys, korkeus)
173        {
174        }
175    }
176
177    void VahennaVoimia()
178    {
179        voimaMittari.Value--;
180    }
181
182    void VoimaLoppui(double mittarinArvo)
183    {
184        MessageDisplay.Add("Voimat loppuivat!");
185    }
186
187    IntMeter pisteLaskuri;
188
189    void LuoLaskuri()
190    {
191        pisteLaskuri = new IntMeter(0);
192
193        Label pisteNaytto = new Label();
194        pisteNaytto.X = Screen.Left + 100;
195        pisteNaytto.Y = Screen.Top - 100;
196        pisteNaytto.TextColor = Color.Black;
197        pisteNaytto.Color = Color.White;
198        Add(pisteNaytto);
199
200        pisteNaytto.BindTo(pisteLaskuri);
201        Add(pisteNaytto);
202
203        pisteNaytto.BindTo(pisteLaskuri);
204        Add(pisteNaytto);
205
206        Label pisteTeksti = new Label("Elämät: ");
207        pisteTeksti.X = Screen.Left + 50;
208        pisteTeksti.Y = Screen.Top - 100;
209        pisteTeksti.TextColor = Color.Red;
210        pisteTeksti.Color = Color.Black;
211        Add(pisteTeksti);
212
213    }
214
215    void LiikutaPelaajaa(double nopeus)
216    {
217        vartalo.Walk(nopeus);
218    }
219
220    void VahennaElamaa(PhysicsObject vartalo, PhysicsObject olio)
221    {
222        voimaMittari.Value--;
223
224        if (voimaMittari.Value <= 0)
225            vartalo.Destroy();
226    }
227
228    void KuulaTormaa(PhysicsObject tormaaja, PhysicsObject kohde)
229    {
230        if (kohde == vartalo)
231            voimaMittari.Value--;
232        tormaaja.Destroy();
233    }
234}
Note: See TracBrowser for help on using the repository browser.