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

Revision 9122, 4.8 KB checked in by npo17_56, 6 years ago (diff)

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