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

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