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

Revision 9126, 5.5 KB checked in by npo17_56, 23 months ago (diff)

Ohjukset kopteria päin

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   
25
26
27
28
29    public override void Begin()
30    {
31        Level.Width = Window.Width*3;
32        Level.Height = Window.Height;
33        Level.CreateBorders();
34        Camera.ZoomToLevel();
35        Camera.StayInLevel = true;
36        LuoHelikopteri(-2500, 0.0);
37        AsetaOhjaimet();
38        Camera.Follow(helikopteri);
39        Laukaisija(-100, -450);
40        Laukaisija(-900, -450);
41        Laukaisija(500, -450);
42        Laukaisija(1400, -450);
43       
44
45       
46
47
48
49        Gravity = new Vector(0.0, -800.0);
50
51        Level.Background.Image = taustaKuva;
52        Level.Background.FitToLevel();
53        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
54    }
55
56    void AsetaOhjaimet()
57    {
58        Keyboard.Listen(Key.W, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Kopteri ylös", helikopteri, nopeusYlos);
59        Keyboard.Listen(Key.W, ButtonState.Released, AsetaNopeus, null, helikopteri, Vector.Zero);
60        Keyboard.Listen(Key.S, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Kopteri ylös", helikopteri, nopeusAlas);
61        Keyboard.Listen(Key.S, ButtonState.Released, AsetaNopeus, null, helikopteri, Vector.Zero);
62        Keyboard.Listen(Key.D, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Kopteri ylös", helikopteri, nopeusOikea);
63        Keyboard.Listen(Key.D, ButtonState.Released, AsetaNopeus, null, helikopteri, Vector.Zero);
64        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Kopteri ylös", helikopteri, nopeusVasen);
65        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, helikopteri, Vector.Zero);
66
67        Keyboard.Listen(Key.Space, ButtonState.Pressed, HeitaKranaatti, "Pelaaja 1: Heitä kranaatti", helikopteri);
68    }
69
70   
71
72    void AsetaNopeus(PhysicsObject helikopteri, Vector nopeus)
73    {
74        if (helikopteri.Y >= Level.Top - 50 && nopeus.Y >0) helikopteri.Velocity = new Vector(helikopteri.Velocity.X, 0);
75        else helikopteri.Velocity = nopeus;
76    }
77
78    void LuoHelikopteri(double x, double y)
79    {
80        helikopteri = new PhysicsObject(510, 133);
81        helikopteri.X = x;
82        helikopteri.Y = y;
83        ropelinPyoriminen = LoadImages("Helikopteri10", "Helikopteri11");
84        helikopteri.Animation = new Animation(ropelinPyoriminen);
85        helikopteri.Animation.Start();
86        helikopteri.CanRotate = false;
87        helikopteri.IgnoresGravity = true;
88        AddCollisionHandler(helikopteri, HelikopteriTormaa);
89        helikopteri.IgnoresCollisionResponse = true;
90        Add(helikopteri);
91
92        AddCollisionHandler(helikopteri, "ohjus", OhjusTormaa);
93        // AddCollisionHandler(helikopteri, ohjus, OhjusTormaa);
94    }
95
96   
97
98    void HelikopteriTormaa(PhysicsObject tormaaja, PhysicsObject kohde)
99    {
100        tormaaja.Velocity = new Vector(tormaaja.Velocity.X, 0);
101    }
102    void HeitaKranaatti(PhysicsObject helikopteri)
103    {
104        Grenade kranu = new Grenade(3.0);
105        kranu.Position = new Vector (helikopteri.X, helikopteri.Y -20);
106        kranu.Explosion.ShockwaveReachesObject += KranaattiOsui;
107        kranu.Explosion.AddShockwaveHandler("vihollinen", KranaattiOsui);
108        Add(kranu);
109    }
110
111    void Laukaisija(double x, double y)
112    {
113        PhysicsObject laukaisija = new PhysicsObject(60.0, 60.0);
114        laukaisija.X = x;
115        laukaisija.Y = y;
116        laukaisija.Width = 100.0;
117        laukaisija.Height = 100.0;
118        laukaisija.Image = laukaisin;
119        laukaisija.Tag = ("vihollinen");
120        Add(laukaisija);
121        laukaisija.MakeStatic();
122
123        Timer ajastin = new Timer();
124        ajastin.Interval = 2;
125        ajastin.Timeout += delegate { AmmuOhjus(laukaisija); } ;
126        ajastin.Start();
127
128       
129    }
130
131
132    void KranaattiOsui(IPhysicsObject laukaisija, Vector v)
133    {
134        if (laukaisija.Tag == "vihollinen") laukaisija.Image = laukaisinrikki;
135    }
136
137   void AmmuOhjus(PhysicsObject laukaisija)
138    {
139        PhysicsObject ohjus = new PhysicsObject(40.0, 60.0);
140       
141        ohjus.Image = Ohjus;
142        ohjus.Position = laukaisija.Position;
143        Add(ohjus);
144        ohjus.Tag = "ohjus";
145       
146
147        Vector suunta = (ohjus.Position - helikopteri.Position).Normalize();
148        ohjus.Angle = suunta.Angle+Angle.FromDegrees(90);
149        ohjus.MaximumLifetime = TimeSpan.FromSeconds(6);
150        ohjus.MoveTo(helikopteri.Position, 600);
151        //ohjus.Hit(Vector.FromLengthAndAngle(2000, ohjus.Angle));
152
153    }
154
155    void OhjusTormaa(PhysicsObject tormaaja, PhysicsObject kohde)
156    {
157        //tormaaja.Velocity = new Vector(tormaaja.Velocity.X, 0);
158        kohde.Destroy();
159        tormaaja.Destroy();
160        MessageDisplay.Add("Game Over");
161        Explosion rajahdys = new Explosion(200);
162        rajahdys.Position = helikopteri.Position;
163        Add(rajahdys);
164    }
165}
Note: See TracBrowser for help on using the repository browser.