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

Revision 7891, 10.1 KB checked in by oslahtin, 3 years ago (diff)

Lähes toimiva pohja, bossin lagiattack lopussa korjattava

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    Boolean isTimerRunning = false;
13    Image ikaros = LoadImage("ikaros");
14    Image siipi = LoadImage("siipi");
15    Image vihu1 = LoadImage("vihu1");
16    PhysicsObject pelaaja;
17    PhysicsObject ammus;
18    PhysicsObject pahis1;
19    PhysicsObject pahis2;
20
21    Color pahisVari;
22    Color pahisVari2;
23    Color pahisVari3;
24    Color pahisVari4;
25
26    Vector nopeusYlos = new Vector(0, 400);
27    Vector nopeusAlas = new Vector(0, -400);
28    Vector nopeusVasemmalle = new Vector(-400, 0);
29    Vector nopeusOikealle = new Vector(400, 0);
30    Vector impulssi = new Vector(RandomGen.SelectOne(0, 200, -200, 150, -150, 42), RandomGen.SelectOne(0, 600, -600, 200, -200, 1200, -1200));
31
32    ExplosionSystem rajahdys2 = new ExplosionSystem(LoadImage("rajahdys_kuva"), 200);
33
34    DoubleMeter alaspainLaskuri;
35
36    int i = 0;
37    IntMeter PelaajanElamat;
38    IntMeter PahiksenElamat;
39    int KenttaNro = 0;
40    public override void Begin()
41    {
42       if (AlkuvalikkoKayty == false)
43       {
44           Alkuvalikko();
45       }
46       ClearAll();
47       LuoKentta();
48       AsetaNappaimet();
49       LuoAikaLaskuri();
50       // AloitaPeli();
51    }
52    void Alkuvalikko()
53    {
54        MultiSelectWindow valikko = new MultiSelectWindow("Welcome, watch warmly when incident is resolved",
55"Start game", "Exit");
56        valikko.ItemSelected += PainettiinValikonNappia;
57        Add(valikko);
58    }
59    void PainettiinValikonNappia(int valinta)
60    {
61        switch (valinta)
62        {
63            case 0:
64                AlkuvalikkoKayty = true;
65                KenttaNro++;
66                Begin();
67                break;
68            case 1:
69                Exit();
70                break;
71        }
72    }
73    void LuoKentta()
74    {
75        LuoPystySeina(Level.Left - 150, 0.0);
76        LuoPystySeina(Level.Right - 450, 0.0);
77        LuoVaakaSeina(-300.0, Level.Bottom - 80);
78        LuoVaakaSeina(-300.0, Level.Top + 90);
79        Level.Background.CreateGradient(Color.Cyan, Color.Black);
80        Camera.Zoom(1);
81        if (AlkuvalikkoKayty == false)
82        {
83            LuoPelaaja();
84            LuoPahis1();
85        }
86        else if (KenttaNro == 2)
87        {
88            LuoPelaaja();
89            LuoPahis2();
90        }
91    }
92    void LuoPelaaja()
93    {
94        pelaaja = new PhysicsObject(64.0, 64.0);
95        pelaaja.X = -300.0;
96        pelaaja.Y = Level.Bottom + 200.0;
97        pelaaja.Image = ikaros;
98        pelaaja.CanRotate = false;
99        pelaaja.Mass = 5.0;
100        pelaaja.CollisionIgnoreGroup = 3;
101        Add(pelaaja);
102
103        PelaajanElamat = new IntMeter(15);
104
105        Label pelaajanElama = new Label();
106        pelaajanElama.Title = "Pelaajan elämät:";
107        pelaajanElama.X = pelaaja.X + 600;
108        pelaajanElama.Y = pelaaja.Y;
109        pelaajanElama.TextColor = Color.Black;
110        pelaajanElama.Color = Color.Transparent;
111        pelaajanElama.BindTo(PelaajanElamat);
112        Add(pelaajanElama);
113
114    }
115    void LuoPahis1()
116    {
117        pahis1 = new PhysicsObject(128.0, 128.0);
118        pahis1.X = -300.0;
119        pahis1.Y = Level.Top - 100.0;
120        pahis1.Shape = Shape.Circle;
121        pahis1.Image = vihu1;
122        pahis1.Mass = 4000.0;
123        pahis1.Tag = "pahis";
124        pahis1.CollisionIgnoreGroup = 2;
125        pahis1.IgnoresExplosions = true;
126        pahis1.IgnoresCollisionResponse = false;
127        Add(pahis1);
128
129        PahiksenElamat = new IntMeter(300);
130
131        Label PahiksenElama = new Label();
132        PahiksenElama.Title = "Pahiksen elämät:";
133        PahiksenElama.X = pelaaja.X + 600;
134        PahiksenElama.Y = pelaaja.Y + 30;
135        PahiksenElama.TextColor = Color.Black;
136        PahiksenElama.Color = Color.Transparent;
137        PahiksenElama.BindTo(PahiksenElamat);
138        Add(PahiksenElama);
139
140    }
141    void LuoPahis2()
142    {
143        pahis2 = new PhysicsObject(128.0, 128.0);
144        pahis2.X = -300.0;
145        pahis2.Y = Level.Top - 100.0;
146        pahis2.Shape = Shape.Rectangle;
147        pahis2.Color = Color.Azure;
148        pahis2.Mass = 400.0;
149        pahis2.Tag = "pahis";
150        pahis1.CollisionIgnoreGroup = 2;
151        pahis2.IgnoresExplosions = true;
152        pahis2.IgnoresCollisionResponse = false;
153        Add(pahis2);
154
155        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(100);
156        satunnaisAivot.ChangeMovementSeconds = 1;
157        pahis2.Brain = satunnaisAivot;
158    }
159
160    PhysicsObject LuoPystySeina(double x, double y)
161    {
162        //luodaan seinät
163        PhysicsObject seina = PhysicsObject.CreateStaticObject(20.0, 1000.0);
164        seina.Shape = Shape.Rectangle;
165        seina.X = x;
166        seina.Y = y;
167        seina.Restitution = 0.0;
168        seina.Tag = "seina";
169        Add(seina);
170        return seina;
171    }
172    PhysicsObject LuoVaakaSeina(double x, double y)
173    {
174        PhysicsObject seina = PhysicsObject.CreateStaticObject(700.0, 20.0);
175        seina.Shape = Shape.Rectangle;
176        seina.X = x;
177        seina.Y = y;
178        seina.Restitution = 0.0;
179        seina.Tag = "seina";
180        Add(seina);
181        return seina;
182    }
183    void AsetaNopeus(PhysicsObject pelaaja, Vector nopeus)
184    {
185        pelaaja.Velocity = nopeus;
186    }
187    void AsetaNappaimet()
188    {
189        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Liiku ylös", pelaaja, nopeusYlos);
190        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, pelaaja, Vector.Zero);
191        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Liiku alas", pelaaja, nopeusAlas);
192        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, pelaaja, Vector.Zero);
193        Keyboard.Listen(Key.Left, ButtonState.Down, AsetaNopeus, "Liiku vasemmalle", pelaaja, nopeusVasemmalle);
194        Keyboard.Listen(Key.Left, ButtonState.Released, AsetaNopeus, null, pelaaja, Vector.Zero);
195        Keyboard.Listen(Key.Right, ButtonState.Down, AsetaNopeus, "Liiku oikealle", pelaaja, nopeusOikealle);
196        Keyboard.Listen(Key.Right, ButtonState.Released, AsetaNopeus, null, pelaaja, Vector.Zero);
197        Keyboard.Listen(Key.Z, ButtonState.Down, AmmuPalloa1, "Ammu");
198        Keyboard.Listen(Key.X, ButtonState.Pressed, Pommi, "Pommi");
199
200        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
201        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
202
203    }
204    void Pommi()
205    {
206            ammus.Destroy();
207    }
208    void PahisAmpuu()
209    {
210        LuoAmmus(pahis1.X, pahis1.Y - 100, Shape.Triangle, Color.DarkCyan, 2);
211        ammus.Hit(RandomGen.NextVector(-100.0, 100.0));
212    }
213    void AmmuPalloa1()
214    {
215        LuoAmmus(pelaaja.X, pelaaja.Y + 24, Shape.Circle, Color.LightCyan, 3);
216        ammus.Hit(new Vector(RandomGen.SelectOne(0, 200, -200, 90, -150, 42), RandomGen.SelectOne(0, 800, -600, 200, -200, 120, -1200)));
217
218    }
219    void LuoAmmus(double x, double y, Shape shape, Color vari, int cig)
220    {
221        if (i < 10)
222        {
223            ammus = new PhysicsObject(32.0, 32.0);
224            ammus.X = x;
225            ammus.Y = y;
226            ammus.Shape = shape;
227            ammus.Color = vari;
228            ammus.CanRotate = true;
229            ammus.IgnoresCollisionResponse = false;
230            ammus.IgnoresExplosions = true;
231            ammus.CollisionIgnoreGroup = cig;
232            ammus.IgnoresCollisionWith(ammus);
233            ammus.Tag = "ammus";
234            Add(ammus);
235            AddCollisionHandler(ammus, "seina", CollisionHandler.DestroyObject);
236            //AddCollisionHandler(ammus, "ammus", CollisionHandler.ExplodeObject(1, true));
237            AddCollisionHandler(ammus, pahis1, PahistaAmmutaan);
238            AddCollisionHandler(ammus, pelaaja, PelaajaaAmmutaan);
239        }
240        else if (i > 10)
241        {
242            LuoAikaLaskuri();
243        }
244    }
245    void PelaajaaAmmutaan(PhysicsObject ammus, PhysicsObject pelaaja)
246    {
247
248        if (PelaajanElamat > 0)
249        {
250            PelaajanElamat.Value -= 1;
251            if (PelaajanElamat == 0)
252            {
253                pelaaja.Destroy();
254                KenttaNro = 0;
255                AlkuvalikkoKayty = false;
256                Begin();
257            }
258        }
259    }
260    void PahistaAmmutaan(PhysicsObject ammus, PhysicsObject pahis)
261    {
262        if (PahiksenElamat > 0)
263        {
264            PahiksenElamat.Value -= 1;
265        }
266        if (PahiksenElamat == 0)
267        {
268            pahis.Destroy();
269            KenttaNro++;
270            Begin();
271        }
272    }
273    void LuoAikaLaskuri()
274    {
275        if (isTimerRunning == true)
276        {
277            return;
278        }
279        alaspainLaskuri = new DoubleMeter(1);
280
281        Timer aikaLaskuri = new Timer();
282        aikaLaskuri.Interval = 1.3;
283        aikaLaskuri.Timeout += AikaLoppui;
284        aikaLaskuri.Start();
285        isTimerRunning = true;
286    }
287    void AikaLoppui()
288    {
289        pahisVari = RandomGen.NextColor();
290        pahisVari2 = RandomGen.NextColor();
291        pahisVari3 = RandomGen.NextColor();
292        pahisVari4 = RandomGen.NextColor();
293        alaspainLaskuri.Value -= 1.3;
294        if (alaspainLaskuri.Value <= 0)
295        {
296            alaspainLaskuri.Stop();
297            isTimerRunning = false;
298            while (i < 20)
299            {
300                LuoAmmus(pahis1.X, pahis1.Y - 100, Shape.Circle, pahisVari, 2);
301                ammus.Hit(RandomGen.NextVector(-300.0, 100.0));
302                LuoAmmus(pahis1.X, pahis1.Y + 100, Shape.Rectangle, pahisVari2, 2);
303                ammus.Hit(RandomGen.NextVector(-300.0, 100.0));
304                LuoAmmus(pahis1.X + 100, pahis1.Y, Shape.Triangle, pahisVari3, 2);
305                ammus.Hit(RandomGen.NextVector(-300.0, 300.0));
306                LuoAmmus(pahis1.X - 100, pahis1.Y, Shape.Star, pahisVari4, 2);
307                ammus.Hit(RandomGen.NextVector(-300.0, 300.0));
308                i++;
309            }
310            i = 0;
311        }
312    }
313
314}
Note: See TracBrowser for help on using the repository browser.