source: 2017/30/OlliL/Bomb helicopter/Bomb helicopter/Bomb_helicopter/Bomb_helicopter.cs @ 9148

Revision 9148, 6.7 KB checked in by npo17_56, 2 years ago (diff)

Laskuria hieman aloitettu ja laukaisijat lopettavat ampumisen rikki mennessään.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Bomb_helicopter : PhysicsGame
10{
11    Vector nopeusYlos = new Vector(0, 300);
12    Vector nopeusAlas = new Vector(0, -300);
13    Vector nopeusOikea = new Vector(600, 0);
14    Vector nopeusVasen = new Vector(-600, 0);
15
16    Image taustaKuva = LoadImage("Kentta2");
17    private Image[] ropelinPyoriminen = LoadImages("ropeli1", "ropeli2");
18    PhysicsObject helikopteri;
19    Image laukaisin = LoadImage("laukaisin");
20    PhysicsObject laukaisija;
21    Image laukaisinrikki = LoadImage("laukaisinrikki");
22    PhysicsObject ohjus;
23    Image Ohjus = LoadImage("ohjuspieni");
24    IntMeter pisteLaskuri;
25
26
27
28
29
30
31    public override void Begin()
32    {
33        Aloitus();
34       
35    }
36
37    void Aloitus()
38    {
39        ClearAll();
40        LuoPistelaskuri();
41        Level.Width = Window.Width * 3;
42        Level.Height = Window.Height;
43        Level.CreateBorders();
44        Camera.ZoomToLevel();
45        Camera.StayInLevel = true;
46        LuoHelikopteri(-2500, 0.0);
47        AsetaOhjaimet();
48        Camera.Follow(helikopteri);
49        Laukaisija(-100, -450);
50        Laukaisija(-900, -450);
51        Laukaisija(500, -450);
52        Laukaisija(1400, -450);
53
54
55        Gravity = new Vector(0.0, -800.0);
56
57        Level.Background.Image = taustaKuva;
58        Level.Background.FitToLevel();
59        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
60    }
61
62    void LuoPistelaskuri()
63    {
64        pisteLaskuri = new IntMeter(0);
65
66        Label pisteNaytto = new Label();
67        pisteNaytto.X = Screen.Left + 100;
68        pisteNaytto.Y = Screen.Top - 100;
69        pisteNaytto.TextColor = Color.Black;
70        pisteNaytto.Color = Color.White;
71
72        pisteNaytto.BindTo(pisteLaskuri);
73        Add(pisteNaytto);
74    }
75
76    void AsetaOhjaimet()
77    {
78        Keyboard.Listen(Key.W, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Kopteri ylös", helikopteri, nopeusYlos);
79        Keyboard.Listen(Key.W, ButtonState.Released, AsetaNopeus, null, helikopteri, Vector.Zero);
80        Keyboard.Listen(Key.S, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Kopteri ylös", helikopteri, nopeusAlas);
81        Keyboard.Listen(Key.S, ButtonState.Released, AsetaNopeus, null, helikopteri, Vector.Zero);
82        Keyboard.Listen(Key.D, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Kopteri ylös", helikopteri, nopeusOikea);
83        Keyboard.Listen(Key.D, ButtonState.Released, AsetaNopeus, null, helikopteri, Vector.Zero);
84        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Kopteri ylös", helikopteri, nopeusVasen);
85        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, helikopteri, Vector.Zero);
86
87        Keyboard.Listen(Key.Space, ButtonState.Pressed, HeitaKranaatti, "Pelaaja 1: Heitä kranaatti", helikopteri);
88    }
89
90
91
92    void AsetaNopeus(PhysicsObject helikopteri, Vector nopeus)
93    {
94        if (helikopteri.Y >= Level.Top - 50 && nopeus.Y >0) helikopteri.Velocity = new Vector(helikopteri.Velocity.X, 0);
95        else helikopteri.Velocity = nopeus;
96    }
97
98    void LuoHelikopteri(double x, double y)
99    {
100        helikopteri = new PhysicsObject(510, 133);
101        helikopteri.X = x;
102        helikopteri.Y = y;
103        ropelinPyoriminen = LoadImages("Helikopteri10", "Helikopteri11");
104        helikopteri.Animation = new Animation(ropelinPyoriminen);
105        helikopteri.Animation.Start();
106        helikopteri.CanRotate = false;
107        helikopteri.IgnoresGravity = true;
108        AddCollisionHandler(helikopteri, HelikopteriTormaa);
109        helikopteri.IgnoresCollisionResponse = true;
110        Add(helikopteri);
111
112        AddCollisionHandler(helikopteri, "ohjus", OhjusTormaa);
113        // AddCollisionHandler(helikopteri, ohjus, OhjusTormaa);
114    }
115
116   
117
118    void HelikopteriTormaa(PhysicsObject tormaaja, PhysicsObject kohde)
119    {
120        tormaaja.Velocity = new Vector(tormaaja.Velocity.X, 0);
121    }
122    void HeitaKranaatti(PhysicsObject helikopteri)
123    {
124        Grenade kranu = new Grenade(3.0);
125        kranu.Position = new Vector (helikopteri.X, helikopteri.Y -20);
126        kranu.Explosion.ShockwaveReachesObject += KranaattiOsui;
127        kranu.Explosion.AddShockwaveHandler("vihollinen", KranaattiOsui);
128        Add(kranu);
129    }
130
131    void Laukaisija(double x, double y)
132    {
133        Vihu laukaisija = new Vihu(60.0, 60.0);
134        laukaisija.X = x;
135        laukaisija.Y = y;
136        laukaisija.Width = 100.0;
137        laukaisija.Height = 100.0;
138        laukaisija.Image = laukaisin;
139        laukaisija.Tag = ("vihollinen");
140        Add(laukaisija);
141        laukaisija.MakeStatic();
142
143
144
145        laukaisija.LaukaisuAjastin = new Timer();
146        laukaisija.LaukaisuAjastin.Interval = 2;
147        laukaisija.LaukaisuAjastin.Timeout += delegate { AmmuOhjus(laukaisija); } ;
148        laukaisija.LaukaisuAjastin.Start();
149
150       
151    }
152
153    void PelaaUudelleen()
154    {
155        MultiSelectWindow pelaaUudelleenValikko = new MultiSelectWindow("Game Over", "Pelaa Uudelleen",
156"Lopeta");
157        Add(pelaaUudelleenValikko);
158
159        pelaaUudelleenValikko.AddItemHandler(0, Aloitus);
160        pelaaUudelleenValikko.AddItemHandler(1, Exit);
161    }
162
163
164    void KranaattiOsui(IPhysicsObject laukaisija, Vector v)
165    {
166        if (laukaisija.Tag == "vihollinen")
167        {
168            laukaisija.Image = laukaisinrikki;
169            (laukaisija as Vihu).LaukaisuAjastin.Stop();
170        }
171    }
172
173   void AmmuOhjus(PhysicsObject laukaisija)
174    {
175        PhysicsObject ohjus = new PhysicsObject(40.0, 60.0);
176       
177        ohjus.Image = Ohjus;
178        ohjus.Position = laukaisija.Position;
179        Add(ohjus);
180        ohjus.Tag = "ohjus";
181       
182
183        Vector suunta = (ohjus.Position - helikopteri.Position).Normalize();
184        ohjus.Angle = suunta.Angle+Angle.FromDegrees(90);
185        ohjus.MaximumLifetime = TimeSpan.FromSeconds(6);
186        ohjus.MoveTo(helikopteri.Position, 600);
187        //ohjus.Hit(Vector.FromLengthAndAngle(2000, ohjus.Angle));
188
189    }
190
191    void OhjusTormaa(PhysicsObject tormaaja, PhysicsObject kohde)
192    {
193        //tormaaja.Velocity = new Vector(tormaaja.Velocity.X, 0);
194        kohde.Destroy();
195        tormaaja.Destroy();
196        MessageDisplay.Add("Game Over");
197        Explosion rajahdys = new Explosion(200);
198        rajahdys.Position = helikopteri.Position;
199        Add(rajahdys);
200        PelaaUudelleen();
201    }
202}
203class Vihu : PhysicsObject
204{
205    public Timer LaukaisuAjastin;
206
207    public Vihu(double leveys, double korkeus)
208        : base(leveys, korkeus)
209    {
210       
211    }
212}
Note: See TracBrowser for help on using the repository browser.