source: 2013/30/NoelV/shooter/shooter/shooter/shooter.cs @ 4639

Revision 4639, 5.7 KB checked in by novaanan, 7 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 shooter : PhysicsGame
10{
11    DoubleMeter elamaLaskuri;
12    IntMeter pisteLaskuri;
13    IntMeter vihollisLaskuri;
14
15    Image aluksenKuva = LoadImage("alus");
16    Image vihollisenKuva = LoadImage("vihollinen");
17    PhysicsObject alus;
18    PhysicsObject enkka;
19
20    PhysicsObject ammus;
21
22    public override void Begin()
23    {
24        LuoPelaaja();
25
26
27        LuoVihollinen(new Vector(0, 450));
28
29        //Surfaces reunat = Level.CreateBorders(1.3, true);
30
31        Level.BackgroundColor = Color.Gray;
32
33        Timer vihunLuontiAjastin = new Timer();
34        vihunLuontiAjastin.Interval = 0.5;
35        vihunLuontiAjastin.Timeout += delegate { LuoVihollinen(new Vector(RandomGen.NextDouble(Level.Left, Level.Right), Level.Top)); };
36        vihunLuontiAjastin.Start();
37
38        LuoElamaLaskuri();
39        LuoPisteLaskuri();
40
41
42        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, Ammu, "Ampuu", alus);
43        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
44
45        Level.Background.CreateGradient(Color.Red, Color.Blue);
46        Camera.ZoomToLevel();
47    }
48
49    private void LuoPelaaja()
50    {
51        alus = new PhysicsObject(100, 100);
52        alus.Image = aluksenKuva;
53        Add(alus);
54        Mouse.IsCursorVisible = true;
55        alus.CollisionIgnoreGroup = 2;
56        alus.MakeStatic();
57        Mouse.ListenMovement(0.1, KuunteleLiiketta, null);
58        alus.Position = new Vector(0, -350);
59        alus.Tag = "alus";
60        alus.Restitution = 1.5;
61        alus.CanRotate = false;
62
63        AddCollisionHandler(alus, "vihu", OsuuViholliseen);
64
65
66
67    }
68
69
70    void OsuuViholliseen(PhysicsObject pelaaja, PhysicsObject vihu)
71    {
72        elamaLaskuri.Value--;
73
74    }
75
76
77    private void LuoVihollinen(Vector paikka)
78    {
79        PhysicsObject vihollinen = new PhysicsObject(100, 100);
80        vihollinen.Position = paikka;
81        vihollinen.Image = vihollisenKuva;
82
83        Add(vihollinen);
84        Vector impulssi = new Vector(0.0, -10000.0);
85        vihollinen.Hit(impulssi);
86        vihollinen.Restitution = 1.5;
87        //vihollinen.Velocity = 100;
88        vihollinen.Tag = "vihu";
89
90        vihollinen.MoveTo(new Vector(RandomGen.NextDouble(Level.Left, Level.Right), Level.Bottom - 250), 500, delegate { vihollisLaskuri.Value++; });
91        //FollowerBrain seuraajanAivot = new FollowerBrain("alus");
92        //seuraajanAivot.Speed = 500.0;
93        //seuraajanAivot.DistanceClose = 200;
94        //seuraajanAivot.TargetClose += delegate
95        //{
96        //    seuraajanAivot.Active = false;
97        //    vihollinen.Hit(new Vector(0, -5000));
98
99        //};
100
101        //vihollinen.Brain = seuraajanAivot;
102
103
104    }
105
106
107
108    void Ammu(PhysicsObject ampuja)
109    {
110        if (ampuja.IsDestroyed) return;
111        ammus = new PhysicsObject(5, 15);
112        ammus.Color = Color.OrangeRed;
113        ammus.LifetimeLeft = TimeSpan.FromSeconds(4);
114        ammus.Position = ampuja.Position;
115        ammus.CollisionIgnoreGroup = ampuja.CollisionIgnoreGroup;
116        Add(ammus);
117
118        ammus.Hit(Vector.FromLengthAndAngle(1000, ampuja.Angle + Angle.FromDegrees(90)));
119        ammus.Angle = ampuja.Angle;
120        ammus.Tag = "ammus";
121        AddCollisionHandler(ammus, AmmusOsuu);
122    }
123
124    void AmmusOsuu(PhysicsObject ammus, PhysicsObject kohde)
125    {
126        ammus.Destroy();
127        if (kohde.Tag.Equals("vihu"))
128        {
129            Explosion rajahdys = new Explosion(100);
130            rajahdys.Position = kohde.Position;
131            rajahdys.ShockwaveColor = Color.Transparent;
132            Add(rajahdys);
133            kohde.Destroy();
134            pisteLaskuri.Value++;
135        }
136    }
137
138
139    void LiikutaPelaajaa(Vector vektori)
140    {
141        alus.Push(vektori);
142    }
143
144    void KuunteleLiiketta(AnalogState hiirenTila)
145    {
146        alus.X = Mouse.PositionOnWorld.X;
147
148        Vector hiirenLiike = hiirenTila.MouseMovement;
149    }
150
151    void LuoPisteLaskuri()
152    {
153        pisteLaskuri = new IntMeter(0, 0, int.MaxValue);
154
155        Label pisteNaytto = new Label();
156        pisteNaytto.X = Screen.Right - 100;
157        pisteNaytto.Y = Screen.Top - 100;
158        pisteNaytto.TextColor = Color.Orange;
159        pisteNaytto.Color = Color.Blue;
160        pisteNaytto.IntFormatString = "Pisteet: {00}";
161        pisteNaytto.BindTo(pisteLaskuri);
162        Add(pisteNaytto);
163
164        vihollisLaskuri = new IntMeter(0, 0, 5);
165        vihollisLaskuri.UpperLimit += ElamaLoppui;
166
167        Label vihollisNaytto = new Label();
168        vihollisNaytto.X = 0;
169        vihollisNaytto.Y = Screen.Top - 100;
170        vihollisNaytto.TextColor = Color.Black;
171        vihollisNaytto.Color = Color.Red;
172        vihollisNaytto.IntFormatString = "Vihollisia pääsi läpi: {00}";
173        vihollisNaytto.BindTo(vihollisLaskuri);
174        Add(vihollisNaytto);
175    }
176
177
178    void LuoElamaLaskuri()
179    {
180        elamaLaskuri = new DoubleMeter(10);
181        elamaLaskuri.MaxValue = 10;
182        elamaLaskuri.LowerLimit += ElamaLoppui;
183
184        ProgressBar elamaPalkki = new ProgressBar(150, 20);
185        elamaPalkki.X = Screen.Left + 150;
186        elamaPalkki.Y = Screen.Top - 20;
187        elamaPalkki.BindTo(elamaLaskuri);
188        Add(elamaPalkki);
189    }
190
191    void ElamaLoppui()
192    {
193        Explosion rajahdys = new Explosion(50);
194
195        rajahdys.Position = alus.Position;
196        Add(rajahdys);
197
198
199        alus.Destroy();
200        MessageDisplay.Add("Hävisit pelin");
201
202        Label teksti = new Label("PELI LOPPUI!!!");
203        teksti.TextScale = new Vector(3, 3);
204        Add(teksti);
205
206    }
207}
208
209
210
211
212
Note: See TracBrowser for help on using the repository browser.