source: 2016/27/OskariL/Ikaros Project 1/Ikaros Project 1/Ikaros_Project_1/Ikaros_Project_1.cs @ 7867

Revision 7867, 7.3 KB checked in by oslahtin, 3 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
9public class Ikaros_Project_1 : PhysicsGame
10{
11    Boolean AlkuvalikkoKayty = false;
12    Image ikaros = LoadImage("ikaros");
13    Image siipi = LoadImage("siipi");
14    Image rajahdys = LoadImage("asdfghjkl");
15    PhysicsObject pelaaja;
16    PhysicsObject ammus;
17    PhysicsObject pahis1;
18    PhysicsObject pahis2;
19
20    Vector nopeusYlos = new Vector(0, 400);
21    Vector nopeusAlas = new Vector(0, -400);
22    Vector nopeusVasemmalle = new Vector(-400, 0);
23    Vector nopeusOikealle = new Vector(400, 0);
24    Vector impulssi = new Vector(RandomGen.SelectOne(0, 200, -200, 150, -150, 42), RandomGen.SelectOne(0, 600, -600, 200, -200, 1200, -1200));
25
26    ExplosionSystem rajahdys2 = new ExplosionSystem(LoadImage("rajahdys_kuva"), 200);
27
28    int PahiksenElamat = 0;
29    int KenttaNro = 0;
30    public override void Begin()
31    {
32       if (AlkuvalikkoKayty == false)
33       {
34           Alkuvalikko();
35       }
36       ClearAll();
37       LuoKentta();
38       AsetaNappaimet();
39       // LisaaLaskurit();
40       // AloitaPeli();
41    }
42    void Alkuvalikko()
43    {
44        MultiSelectWindow valikko = new MultiSelectWindow("Welcome, watch warmly when incident is resolved",
45"Start game", "Exit");
46        valikko.ItemSelected += PainettiinValikonNappia;
47        Add(valikko);
48    }
49    void PainettiinValikonNappia(int valinta)
50    {
51        switch (valinta)
52        {
53            case 0:
54                AlkuvalikkoKayty = true;
55                KenttaNro++;
56                Begin();
57                break;
58            case 1:
59                Exit();
60                break;
61        }
62    }
63    void LuoKentta()
64    {
65        LuoPystySeina(Level.Left - 150, 0.0);
66        LuoPystySeina(Level.Right - 450, 0.0);
67        LuoVaakaSeina(-300.0, Level.Bottom - 80);
68        LuoVaakaSeina(-300.0, Level.Top + 90);
69        Level.Background.CreateGradient(Color.Cyan, Color.Black);
70        Camera.Zoom(1);
71        if (AlkuvalikkoKayty == false)
72        {
73            LuoPelaaja();
74            LuoPahis1();
75        }
76        else if (KenttaNro == 2)
77        {
78            LuoPelaaja();
79            LuoPahis2();
80        }
81    }
82    void LuoPelaaja()
83    {
84        pelaaja = new PhysicsObject(64.0, 64.0);
85        pelaaja.X = -300.0;
86        pelaaja.Y = Level.Bottom + 200.0;
87        pelaaja.Image = ikaros;
88        pelaaja.CanRotate = false;
89        pelaaja.Mass = 5.0;
90        Add(pelaaja);
91    }
92    void LuoPahis1()
93    {
94        pahis1 = new PhysicsObject(128.0, 128.0);
95        pahis1.X = -300.0;
96        pahis1.Y = Level.Bottom + 800.0;
97        pahis1.Shape = Shape.Rectangle;
98        pahis1.Color = Color.Aquamarine;
99        pahis1.Mass = 400.0;
100        pahis1.Tag = "pahis";
101        pahis1.IgnoresExplosions = true;
102        pahis1.IgnoresCollisionResponse = false;
103        Add(pahis1);
104
105        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(100);
106        satunnaisAivot.ChangeMovementSeconds = 1;
107        pahis1.Brain = satunnaisAivot;
108    }
109    void LuoPahis2()
110    {
111        pahis2 = new PhysicsObject(128.0, 128.0);
112        pahis2.X = -300.0;
113        pahis2.Y = Level.Bottom + 800.0;
114        pahis2.Shape = Shape.Rectangle;
115        pahis2.Color = Color.Azure;
116        pahis2.Mass = 400.0;
117        pahis2.Tag = "pahis";
118        pahis2.IgnoresExplosions = true;
119        pahis2.IgnoresCollisionResponse = false;
120        Add(pahis2);
121
122        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(100);
123        satunnaisAivot.ChangeMovementSeconds = 1;
124        pahis2.Brain = satunnaisAivot;
125    }
126
127    PhysicsObject LuoPystySeina(double x, double y)
128    {
129        //luodaan seinät
130        PhysicsObject seina = PhysicsObject.CreateStaticObject(20.0, 1000.0);
131        seina.Shape = Shape.Rectangle;
132        seina.X = x;
133        seina.Y = y;
134        seina.Restitution = 0.0;
135        seina.Tag = "seina";
136        Add(seina);
137        return seina;
138    }
139    PhysicsObject LuoVaakaSeina(double x, double y)
140    {
141        PhysicsObject seina = PhysicsObject.CreateStaticObject(700.0, 20.0);
142        seina.Shape = Shape.Rectangle;
143        seina.X = x;
144        seina.Y = y;
145        seina.Restitution = 0.0;
146        seina.Tag = "seina";
147        Add(seina);
148        return seina;
149    }
150    void AsetaNopeus(PhysicsObject pelaaja, Vector nopeus)
151    {
152        pelaaja.Velocity = nopeus;
153    }
154    void AsetaNappaimet()
155    {
156        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Liiku ylös", pelaaja, nopeusYlos);
157        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, pelaaja, Vector.Zero);
158        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Liiku alas", pelaaja, nopeusAlas);
159        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, pelaaja, Vector.Zero);
160        Keyboard.Listen(Key.Left, ButtonState.Down, AsetaNopeus, "Liiku vasemmalle", pelaaja, nopeusVasemmalle);
161        Keyboard.Listen(Key.Left, ButtonState.Released, AsetaNopeus, null, pelaaja, Vector.Zero);
162        Keyboard.Listen(Key.Right, ButtonState.Down, AsetaNopeus, "Liiku oikealle", pelaaja, nopeusOikealle);
163        Keyboard.Listen(Key.Right, ButtonState.Released, AsetaNopeus, null, pelaaja, Vector.Zero);
164        Keyboard.Listen(Key.Z, ButtonState.Down, AmmuPalloa1, "Ammu");
165        Keyboard.Listen(Key.Z, ButtonState.Down, PahisAmpuu, "Ammu");
166        Keyboard.Listen(Key.X, ButtonState.Pressed, Pommi, "Pommi");
167
168        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
169        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
170
171    }
172    void Pommi()
173    {
174        ammus.Destroy();
175
176    }
177    void PahisAmpuu()
178    {
179        LuoAmmus(pahis1.X, pahis1.Y - 100, Shape.Triangle, Color.DarkCyan, 1);
180        ammus.Hit(RandomGen.NextVector(-100.0, 100.0));
181    }
182    void AmmuPalloa1()
183    {
184        LuoAmmus(pelaaja.X, pelaaja.Y + 24, Shape.Circle, Color.LightCyan, 1);
185        ammus.Hit(new Vector(RandomGen.SelectOne(0, 200, -200, 90, -150, 42), RandomGen.SelectOne(0, 800, -600, 200, -200, 120, -1200)));
186
187    }
188    void LuoAmmus(double x, double y, Shape shape, Color vari, int cig)
189    {
190        ammus = new PhysicsObject(32.0, 32.0);
191        ammus.X = x;
192        ammus.Y = y;
193        ammus.Shape = shape;
194        ammus.Color = vari;
195        ammus.CanRotate = true;
196        ammus.IgnoresCollisionResponse = false;
197        ammus.CollisionIgnoreGroup = cig;
198        ammus.Tag = "ammus";
199        Add(ammus);
200        AddCollisionHandler(ammus, "seina", CollisionHandler.DestroyObject);
201        //AddCollisionHandler(ammus, "pahis", CollisionHandler.ExplodeObject(50, true));
202        AddCollisionHandler(ammus, "pahis", PahistaAmmutaan);
203        AddCollisionHandler(ammus, "pelaaja", PelaajaaAmmutaan);
204
205    }
206    void PelaajaaAmmutaan(PhysicsObject ammus, PhysicsObject pelaaja)
207    {
208        pelaaja.Destroy();
209    }
210    void PahistaAmmutaan(PhysicsObject ammus, PhysicsObject pahis)
211    {
212        if (PahiksenElamat == 50)
213        {
214            PahiksenElamat = new int();
215        }
216        PahiksenElamat--;
217        if (PahiksenElamat == 0)
218        {
219            pahis.Destroy();
220            KenttaNro++;
221            Begin();
222        }
223    }
224}
Note: See TracBrowser for help on using the repository browser.