source: 2016/30/HenriJ/qq/qq/qq/qq.cs @ 8379

Revision 8379, 8.3 KB checked in by tesatapa, 2 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 qq : PhysicsGame
10{
11    const double nopeus = 500;
12    const double hyppyNopeus = 1000;
13    const int RUUDUN_KOKO = 40;
14    bool kutistettu = false;
15
16    Image seina = LoadImage("puuseina");
17    Image loota = LoadImage("Loota");
18    Image laatikko = LoadImage("Laatikko");
19    Image posahdus = LoadImage("bom");
20
21    PlatformCharacter pelaaja1;
22
23    Image pelaajanKuva = LoadImage("sankari");
24    Image tahtiKuva = LoadImage("tahti");
25
26    SoundEffect maaliAani = LoadSoundEffect("maali");
27
28    int Kenttanro = 1;
29
30    public override void Begin()
31    {
32        aloitapeli();
33    }
34    void aloitapeli()
35    {
36        ClearAll();
37
38        if (Kenttanro == 1) LuoKentta("kentta1");
39        else if (Kenttanro == 2) LuoKentta("kentta2");
40
41
42        Gravity = new Vector(600, -1000);
43
44        //LuoKentta("kentta1");
45        LisaaNappaimet();
46
47        Camera.Follow(pelaaja1);
48        Camera.ZoomFactor = -1;
49        Camera.StayInLevel = true;
50    }
51
52    void LuoKentta(string kentannimi)
53    {
54        TileMap kentta = TileMap.FromLevelAsset(kentannimi);
55        kentta.SetTileMethod('h', LisaaTaso2);
56        kentta.SetTileMethod('#', LisaaTaso);
57        kentta.SetTileMethod('1', LisaaTykki, new Vector(0, 200), 1);
58        kentta.SetTileMethod('2', LisaaTykki, new Vector(0, -200), 2);
59        kentta.SetTileMethod('3', LisaaTykki, new Vector(-200, 0), 3);
60        kentta.SetTileMethod('4', LisaaTykki, new Vector(200, 0), 4);
61        kentta.SetTileMethod('y', LisaaTaso3);
62        kentta.SetTileMethod('t', LisaaLoota);
63        kentta.SetTileMethod('l', LisaaLoota2);
64        kentta.SetTileMethod('*', LisaaTahti);
65        kentta.SetTileMethod('N', LisaaPelaaja);
66        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
67        Level.CreateBorders();
68        Level.Background.CreateGradient(Color.LightGreen, Color.Green);
69    }
70
71    void LisaaTaso(Vector paikka, double leveys, double korkeus)
72    {
73        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
74        taso.Position = paikka;
75        taso.Tag = "block";
76        taso.Color = Color.Green;
77        Add(taso);
78    }
79
80    void LisaaAmmus(Vector paikka, Vector ampumasuunta, int ryhma)
81    {
82        PhysicsObject ammus = new PhysicsObject(20, 20);
83        ammus.Position = paikka;
84        ammus.Shape = Shape.Circle;
85        ammus.Color = Color.Red;
86        ammus.Tag = "ammus";
87        ammus.IgnoresGravity = true;
88        ammus.CollisionIgnoreGroup = ryhma;
89        AddCollisionHandler(ammus, Osuu);
90        Vector amnopeus = ampumasuunta;
91        Add(ammus);
92        ammus.Velocity = amnopeus;
93    }
94
95    void Osuu(PhysicsObject ammus, PhysicsObject kohde)
96    {
97        if (kohde.Tag.Equals("ammus") || kohde.Tag.Equals("tnt"))
98        {
99            ammus.Destroy();
100            kohde.Destroy();
101            return;
102        }
103        if (kohde.Tag.Equals("trap") || kohde.Tag.Equals("block")) ammus.Destroy();
104    }
105
106
107    void LisaaTykki(Vector paikka, double leveys, double korkeus, Vector ammusSuunta, int ryhma)
108    {
109        PhysicsObject tykki = PhysicsObject.CreateStaticObject(leveys, korkeus);
110        tykki.Position = paikka;
111        tykki.CollisionIgnoreGroup = ryhma;
112        tykki.Color = Color.Gray;
113        tykki.Tag = "block";
114        Timer ajastin = new Timer();
115        ajastin.Interval = 2;
116        ajastin.Timeout += delegate { LisaaAmmus(paikka, ammusSuunta, ryhma); };
117        ajastin.Start();
118        Add(tykki);
119    }
120
121    void LisaaTaso2(Vector paikka, double leveys, double korkeus)
122    {
123        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
124        taso.Position = paikka;
125        taso.Tag = "block";
126        taso.Image = seina;
127        Add(taso);
128    }
129
130
131    void LisaaTaso3(Vector paikka, double leveys, double korkeus)
132    {
133        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
134        taso.Position = paikka;
135        taso.Image = seina;
136        taso.Tag = "trap";
137        Add(taso);
138    }
139    void LisaaLoota(Vector paikka, double leveys, double korkeus)
140    {
141        PhysicsObject taso = new PhysicsObject(leveys, korkeus);
142        taso.Position = paikka;
143        taso.Image = loota;
144        taso.Tag = "tnt";
145        Add(taso);
146    }
147    void LisaaLoota2(Vector paikka, double leveys, double korkeus)
148    {
149        PhysicsObject taso = new PhysicsObject(leveys, korkeus);
150        taso.Position = paikka;
151        taso.Image = laatikko;
152        taso.Tag = "block";
153        taso.CanRotate = false;
154        //AddCollisionHandler(taso, "trap", Ansal);
155        Add(taso);
156    } 
157    void LisaaTahti(Vector paikka, double leveys, double korkeus)
158    {
159        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
160        tahti.IgnoresCollisionResponse = true;
161        tahti.Position = paikka;
162        tahti.Image = tahtiKuva;
163        tahti.Tag = "tahti";
164        Add(tahti);
165    }
166
167    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
168    {
169        pelaaja1 = new PlatformCharacter(leveys, korkeus + 20.0);
170        pelaaja1.Position = paikka;
171        pelaaja1.Mass = 4.0;
172        pelaaja1.Image = pelaajanKuva;
173        pelaaja1.CanRotate = false;
174        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
175        AddCollisionHandler(pelaaja1, "tnt", Blowup);
176        AddCollisionHandler(pelaaja1, "ammus", Blowup);
177        AddCollisionHandler(pelaaja1, "trap", Ansal);
178        Add(pelaaja1);
179    }
180    void Ansal(PhysicsObject pelaaja1, PhysicsObject trap)
181    {
182        Timer ajastin = new Timer();
183        ajastin.Interval = 0.25;
184        ajastin.Timeout += delegate { nytsekatoo(trap); };
185        ajastin.Start();
186       
187    }
188    void nytsekatoo(PhysicsObject trap)
189    {
190        trap.Destroy();
191    }
192
193    void Blowup(PhysicsObject pelaaja1, PhysicsObject tnt)
194    {
195       
196        int pMaxMaara = 300;
197        ExplosionSystem rajahdys = new ExplosionSystem(posahdus, pMaxMaara);
198        Add(rajahdys);
199        double x = tnt.X;
200        double y = tnt.Y;
201        int pMaara = 30;
202        rajahdys.AddEffect(x, y, pMaara);
203        pelaaja1.Destroy();
204        tnt.Destroy();
205        Timer ajastin = new Timer();
206        ajastin.Interval = 1.5;
207        ajastin.Timeout += aloitapeli;
208        ajastin.Start();
209    }
210
211    void LisaaNappaimet()
212    {
213        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
214        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
215        Keyboard.Listen(Key.P, ButtonState.Pressed, KutistaPelaaja, "pienentää pelaajan lyhyeksi ajaksi");
216        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
217        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
218        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
219        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
220        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
221        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
222        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
223
224        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
225    }
226
227    void Liikuta(PlatformCharacter hahmo, double nopeus)
228    {
229        hahmo.Walk(nopeus);
230    }
231
232    void Hyppaa(PlatformCharacter hahmo, double nopeus)
233    {
234        hahmo.Jump(nopeus);
235    }
236
237    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
238    {
239        maaliAani.Play();
240        tahti.Destroy();
241        Kenttanro += 1;
242        ClearAll();
243        aloitapeli();
244    }
245    void KutistaPelaaja()
246    {
247        if (kutistettu) return;
248        kutistettu = true;
249        Vector koko = pelaaja1.Size;
250        pelaaja1.Size = new Vector(koko.X / 1.5, koko.Y / 1.5);
251        Timer.SingleShot(10, delegate { pelaaja1.Size = koko; kutistettu = false; });
252    }
253}
Note: See TracBrowser for help on using the repository browser.