source: 2014/26/OttoK/shooting game/shooting game/shooting game/shooting_game.cs @ 5096

Revision 5096, 7.7 KB checked in by otoskinn, 8 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9class PomoVastus : PhysicsObject
10{
11    private IntMeter elamaLaskuri = new IntMeter(100, 0, 100);
12    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
13
14    public PomoVastus(double leveys, double korkeus)
15        : base(leveys, korkeus)
16    {
17       
18    }
19}
20
21
22public class shooting_game : PhysicsGame
23{
24    PhysicsObject turret;
25    GameObject tahtain;
26    Image olionKuva = LoadImage("kuvanNimi");
27    Image tahtaimenKuva = LoadImage("tähtäin");
28    Image vihollisenKuva = LoadImage("vihollinen");
29    Image tykinKuva = LoadImage("turret");
30    Image panoksenKuva = LoadImage("panos");
31    Image takaseinänKuva = LoadImage("Background");
32    Image loppuKuva = LoadImage("GAME OVER");
33    Image VoittoKuva = LoadImage("Victory");
34    Image pomonKuva = LoadImage("Pomo");
35    IntMeter pisteLaskuri;
36    DoubleMeter elamaLaskuri;
37    Timer ajastin;
38    List<Vector> polku = new List<Vector>();
39
40    double kerros = 150;
41
42    bool pomoLuotu;
43
44    public override void Begin()
45    {
46        AloitaPeli();
47    }
48
49    void AloitaPeli()
50    {
51        IsPaused = false;
52        pomoLuotu = false;
53        ClearAll();
54        LisaaTykki();
55        LuoPistelaskuri();
56        LuoElamaLaskuri();
57        LuoPolku();
58        Level.Background.Image = takaseinänKuva;
59        Camera.ZoomToLevel();
60       
61
62        ajastin = new Timer();
63        ajastin.Interval = 1;
64        ajastin.Timeout += LuoVihollinen;
65        ajastin.Start();
66
67
68        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
69        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
70        Mouse.IsCursorVisible = false;
71        Mouse.ListenMovement(0.1, KuunteleLiiketta, null);
72        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, Ammu, "Ammu aseella.");
73        ControllerOne.ListenAnalog(AnalogControl.LeftStick, 0.1, KuunteleLiiketta, "Liikuta pelaajaa tattia pyörittämällä.");
74        ControllerOne.Listen(Button.RightShoulder, ButtonState. Pressed, Ammu, "Ampuu Tykillä");
75        ControllerOne.Listen(Button.Start, ButtonState.Pressed, ConfirmExit, "");
76
77        Keyboard.Listen(Key.F4, ButtonState.Down, HAX, null);
78        ControllerOne.Listen(Button.RightTrigger, ButtonState.Down, HAX, null);
79    }
80
81    void HAX()
82    {
83        Ammu();
84    }
85
86    void KuunteleLiiketta(AnalogState hiirenTila)
87    {
88       
89
90        Vector hiirenLiike = hiirenTila.MouseMovement;
91        if (hiirenLiike.Magnitude > 0)
92        {
93
94            tahtain.X = Mouse.PositionOnWorld.X;
95            tahtain.Y = Mouse.PositionOnWorld.Y;
96        }
97
98        tahtain.Move(hiirenTila.StateVector * 30);
99       
100        turret.Angle = (tahtain.Position - turret.Position).Angle;
101    }
102
103
104
105    void LisaaTykki()
106    {
107        turret = PhysicsObject.CreateStaticObject(100, 50);
108        turret.Position = new Vector(0, Level.Bottom + 50);
109        turret.Shape = Shape.Rectangle;
110        turret.Color = Color.Gray;
111        turret.Image = tykinKuva;
112        Add(turret, 1);
113
114        tahtain = new GameObject(30, 30);
115        tahtain.Image = tahtaimenKuva;
116        Add(tahtain);
117    }
118
119    void Ammu()
120    {
121        PhysicsObject panos = new PhysicsObject(20, 30);
122        panos.Position = turret.Position;
123        panos.Shape = Shape.Rectangle;
124        panos.Color = Color.Black;
125        panos.Image = panoksenKuva;
126        panos.Angle = turret.Angle + Angle.FromDegrees(-90);
127        Add(panos);
128
129        AddCollisionHandler(panos, "vihollinen", OsuuViholliseen);
130        AddCollisionHandler<PhysicsObject, PomoVastus>(panos, "Pomo", OsuuPomoon);
131
132        panos.Hit((tahtain.Position - turret.Position).Normalize() * 7500);
133    }
134
135    void LuoPolku()
136    {
137        for (int i = 0; i < 30; i++)
138        {
139            polku.Add(new Vector(Level.Left, Level.Top - kerros * i));
140            polku.Add(new Vector(Level.Right, Level.Top - kerros * i));
141            polku.Add(new Vector(Level.Right, Level.Top -  kerros / 2.0 - kerros * i));
142            polku.Add(new Vector(Level.Left, Level.Top -  kerros / 2.0 - kerros * i));
143        }
144    }
145
146
147    void LuoVihollinen()
148    {
149        PhysicsObject vihollinen = new PhysicsObject(50, 50);
150        vihollinen.Position = new Vector(Level.Left, Level.Top);
151        vihollinen.Tag = "vihollinen";
152        vihollinen.CanRotate = false;
153        vihollinen.Image = vihollisenKuva;
154        Add(vihollinen);
155        AddCollisionHandler(vihollinen, turret, OsuuPelaajaan);
156
157        PathFollowerBrain polkuAivo = new PathFollowerBrain(800, polku);
158        vihollinen.Brain = polkuAivo;
159    }
160
161    void PomoVihollinen()
162    {
163        PomoVastus Pomo = new PomoVastus(200, 200);
164        Pomo.Position = new Vector(0, Level.Top -200);
165        Pomo.Tag = "Pomo";
166        Pomo.CanRotate = false;
167        Pomo.Image = pomonKuva;
168        Add(Pomo);
169
170        Pomo.ElamaLaskuri.LowerLimit += delegate
171        {
172            Pomo.Destroy();
173            PeliVoitettu();
174        };
175
176        FollowerBrain seuraajanAivot = new FollowerBrain(turret);
177        seuraajanAivot.Speed = 200;
178        seuraajanAivot.DistanceClose =400;
179
180        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(250);
181        seuraajanAivot.CloseBrain = satunnaisAivot;
182
183        Pomo.Brain = seuraajanAivot;
184
185        AddCollisionHandler(Pomo, turret, OsuuPelaajaan);
186
187        pomoLuotu = true;
188    }
189
190    void OsuuViholliseen(PhysicsObject panos, PhysicsObject vihollinen)
191    {
192        vihollinen.Destroy();
193        panos.Destroy();
194        pisteLaskuri.Value += 100;
195
196        if (pisteLaskuri.Value >= 6000 && !pomoLuotu)
197        {
198            PomoVihollinen();
199        }
200    }
201    void OsuuPomoon(PhysicsObject panos, PomoVastus Pomo)
202    {
203        panos.Destroy();
204        Pomo.ElamaLaskuri.Value--;
205    }
206
207    void LuoPistelaskuri()
208    {
209        pisteLaskuri = new IntMeter(0);
210
211        Label pisteNaytto = new Label();
212        pisteNaytto.X = Screen.Left + 100;
213        pisteNaytto.Y = Screen.Top - 100;
214        pisteNaytto.TextColor = Color.Black;
215        pisteNaytto.Color = Color.White;
216
217        pisteNaytto.BindTo(pisteLaskuri);
218        Add(pisteNaytto);
219    }
220
221    void OsuuPelaajaan(PhysicsObject vihollinen, PhysicsObject pelaaja)
222    {
223        elamaLaskuri.Value--;
224
225        if (vihollinen.Tag == "vihollinen")
226        {
227            vihollinen.Destroy();
228        }
229       
230
231        if (elamaLaskuri.Value <= 0)
232        {
233            ElamaLoppui();
234        }
235    }
236
237    void LuoElamaLaskuri()
238    {
239        elamaLaskuri = new DoubleMeter(3, 0, 3);
240
241        ProgressBar elamaPalkki = new ProgressBar(150, 20);
242        elamaPalkki.X = Screen.Right -150;
243        elamaPalkki.Y = Screen.Top - 20;
244        elamaPalkki.BindTo(elamaLaskuri);
245        if (elamaLaskuri.Value <= 0)
246            turret.Destroy();
247        Add(elamaPalkki);
248    }
249
250    void ElamaLoppui()
251    {
252        GameObject GAMEOVER = new GameObject(800, 300);
253        Add(GAMEOVER, 1);
254        GAMEOVER.Image = loppuKuva;
255
256        AloitaUusiPeli();
257    }
258
259    void PeliVoitettu()
260    {
261        GameObject Victory = new GameObject(800, 300);
262        Add(Victory, 1);
263        Victory.Image = VoittoKuva;
264        //Timer.SingleShot(5, AloitaPeli);
265
266        AloitaUusiPeli();
267    }
268
269    void AloitaUusiPeli()
270    {
271        Pause();
272        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko", "Aloita peli", "Lopeta");
273        alkuValikko.AddItemHandler(0, delegate { Pause(); AloitaPeli(); });
274        alkuValikko.AddItemHandler(1, Exit);
275        Add(alkuValikko);
276
277    }
278}
279
Note: See TracBrowser for help on using the repository browser.