source: 2016/24/EemeliN/Test/Test/Test/Test.cs @ 7381

Revision 7381, 9.6 KB checked in by eeonilni, 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 Test : PhysicsGame
10{
11    PlatformCharacter Pelaaja1;
12    PlatformCharacter Pelaaja2;
13    int kenttaNro = 1;
14
15    SoundEffect jungle = LoadSoundEffect("Jungle");
16
17    Image pahisKuva = LoadImage("t04_evilrat");
18
19    private Image[] Animaatio = LoadImages("Abina", "Abinaa");
20    private Image[] Animaatio2 = LoadImages("Pelaaja2", "Pelaaja2a");
21
22    Image kuva = LoadImage("Deagle");
23    Image kuva2 = LoadImage("Cannon");
24
25
26    public override void Begin()
27    {
28        SeuraavaKentta();
29        TaustaMusiikki();
30
31
32    }
33
34    void LuoKentta(String kentanNimi)
35    {
36        ColorTileMap ruudut = ColorTileMap.FromLevelAsset(kentanNimi);
37        ruudut.SetTileMethod(Color.Red, LuoPelaaja);
38        ruudut.SetTileMethod(Color.Black, LuoTaso);
39        ruudut.SetTileMethod(Color.Blue, LuoLiekki);
40        ruudut.SetTileMethod(Color.DarkGreen, LuoPahis);
41        ruudut.SetTileMethod(Color.FromHexCode("FF6A00"), LuoMaali);
42        ruudut.SetTileMethod(Color.FromHexCode("B682FF"), LuoKanuunaVasen);
43        ruudut.SetTileMethod(Color.FromHexCode("82FFD9"), LuoKanuunaOikea);
44        ruudut.SetTileMethod(Color.FromHexCode("EE00FF"), LuoAse);
45        //ruudut.SetTileMethod(Color.FromHexCode("FFB7B5"), SpawnPoint);
46        ruudut.Execute(40, 40);
47
48    }
49
50    void SeuraavaKentta()
51    {
52        ClearAll();
53
54        if (kenttaNro == 1) LuoKentta("Kenttä");
55        else if (kenttaNro == 2) LuoKentta("Kenttä2");
56        else if (kenttaNro > 2) Exit();
57
58        Gravity = new Vector(0, -800);
59
60        AsetaOhjaimet();
61
62        Level.CreateBorders();
63        SmoothTextures = false;
64
65        Pelaaja1.Restitution = 1.0;
66        Pelaaja1.Restitution = 1.0;
67
68        GameObject tausta = new GameObject(Level.Width, Level.Height);
69        tausta.Image = LoadImage("Tausta");
70        Add(tausta, -3);
71
72        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
73        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
74
75        Camera.Follow(Pelaaja1, Pelaaja2);
76        Camera.StayInLevel = true;
77        Camera.FollowXMargin = 600;
78        Camera.FollowYMargin = 200;
79
80
81        AsetaOhjaimet();
82
83    }
84
85
86
87    void AsetaOhjaimet()
88    {
89        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, null, Pelaaja1, -100.0);
90        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, null, Pelaaja1, 100.0);
91        Keyboard.Listen(Key.Up, ButtonState.Down, Hyppää, null, Pelaaja1, 250.0);
92
93        Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, null, Pelaaja2, -100.0);
94        Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa, null, Pelaaja2, 100.0);
95        Keyboard.Listen(Key.W, ButtonState.Down, Hyppää, null, Pelaaja2, 250.0);
96    }
97
98    void TormasiMaaliin(PhysicsObject pelaaja, PhysicsObject maali)
99    {
100        kenttaNro++;
101        SeuraavaKentta();
102    }
103
104
105    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
106    {
107        Image olionKuva = LoadImage("Abina");
108        Image pelaaja2Kuva = LoadImage("pelaaja2");
109
110        Pelaaja1 = new PlatformCharacter(leveys * 0.9, korkeus * 0.9);
111        Pelaaja1.Shape = Shape.Circle;
112        Pelaaja1.Position = paikka;
113        Pelaaja1.Image = olionKuva;
114        Add(Pelaaja1);
115
116        Pelaaja2 = new PlatformCharacter(leveys * 0.9, korkeus * 0.9);
117        Add(Pelaaja2);
118        Pelaaja2.Position = paikka;
119        Pelaaja2.Shape = Shape.Circle;
120        Pelaaja2.Image = pelaaja2Kuva;
121
122
123        Pelaaja1.AnimWalk = new Animation(Animaatio);
124        Pelaaja1.AnimIdle = new Animation(Animaatio[0]);
125
126        Pelaaja2.AnimWalk = new Animation(Animaatio2) { FPS = 5 };
127        Pelaaja2.AnimIdle = new Animation(Animaatio2[0]);
128
129        Pelaaja1.Animation = new Animation(Animaatio);
130        Pelaaja2.Animation = new Animation(Animaatio2);
131
132        Pelaaja1.CollisionIgnoreGroup = 100;
133        Pelaaja2.CollisionIgnoreGroup = 100;
134        AddCollisionHandler(Pelaaja1, "TormaaMaaliin", TormasiMaaliin);
135        AddCollisionHandler(Pelaaja2, "TormaaMaaliin", TormasiMaaliin);
136
137        AddCollisionHandler(Pelaaja1, "vihunammus", Kuolema);
138        AddCollisionHandler(Pelaaja2, "vihunammus", Kuolema);
139    }
140    void Kuolema(PhysicsObject Pelaaja, PhysicsObject ammus)
141    {
142        Pelaaja.Destroy();
143
144        if (Pelaaja2.IsDestroying)
145        {
146            Camera.Follow(Pelaaja2);
147        }
148        if (Pelaaja1.IsDestroying)
149        {
150            Camera.Follow(Pelaaja1);
151        }
152    }
153
154
155    void LuoTaso(Vector paikka, double leveys, double korkeus)
156    {
157        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
158        taso.Position = paikka;
159        taso.CollisionIgnoreGroup = 1;
160        taso.Image = LoadImage("Maa");
161        Add(taso);
162
163    }
164    void LuoTaso2(Vector paikka, double leveys, double korkeus)
165    {
166        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
167        taso.Position = paikka;
168        taso.CollisionIgnoreGroup = 1;
169        taso.Image = LoadImage("MeteoriteBrick");
170
171
172
173
174    }
175
176    void LuoMaali(Vector paikka, double leveys, double korkeus)
177    {
178        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys * 3, korkeus * 3);
179        taso.Position = paikka;
180        taso.CollisionIgnoreGroup = 1;
181        taso.Image = LoadImage("Maali");
182        taso.Tag = "TormaaMaaliin";
183        Add(taso);
184
185    }
186
187
188    void LiikutaPelaajaa(PlatformCharacter pelaaja, double nopeus)
189    {
190        pelaaja.Walk(nopeus);
191
192    }
193
194    void Hyppää(PlatformCharacter pelaaja, double nopeus)
195    {
196        pelaaja.Jump(nopeus);
197
198    }
199
200
201    void LuoLiekki(Vector paikka, double leveys, double korkeus)
202    {
203        Flame liekki = new Flame(LoadImage("Flame"));
204        liekki.Position = paikka;
205        liekki.MaxLifetime = 2.5;
206        liekki.MaxScale = 100;
207        Add(liekki);
208
209        int pMaxMaara = 500;
210
211
212    }
213
214
215
216
217    void LuoPahis(Vector paikka, double leveys, double korkeus)
218    {
219        PhysicsObject Pahis = new PhysicsObject(leveys, korkeus);
220        Add(Pahis);
221        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(200);
222        satunnaisAivot.ChangeMovementSeconds = 3;
223        Pahis.Brain = satunnaisAivot;
224
225
226        Pahis.Image = pahisKuva;
227    }
228    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
229    {
230
231        //AddCollisionHandler(Pelaaja1, ammus, KohteetTormaavat);
232        ammus.Destroy();
233        Pelaaja1.Destroy();
234        Pelaaja2.Destroy();
235    }
236
237    PhysicsObject LuoKanuuna(Vector paikka, double leveys, double korkeus)
238    {
239        PhysicsObject tykkiTorni = new PhysicsObject(leveys, korkeus);
240        tykkiTorni.Position = paikka;
241        tykkiTorni.IsVisible = false;
242        tykkiTorni.MakeStatic();
243        Add(tykkiTorni);
244
245
246        Vector koko = new Vector(kuva.Width, kuva.Height) * 0.2;
247
248        AssaultRifle tykki = new AssaultRifle(koko.X, koko.Y);
249        tykki.ProjectileCollision = AmmusOsui;
250        tykki.Power.Value = 50;
251        tykki.Power.DefaultValue = 50;
252        tykki.FireRate = 5.0;
253        tykki.AmmoIgnoresGravity = true;
254        tykki.CanHitOwner = false;
255        tykki.AttackSound = null;
256        tykki.InfiniteAmmo = true;
257        tykki.MaxAmmoLifetime = TimeSpan.FromSeconds(2);
258        tykki.ProjectileCollision = TykkiAmmusOsui;
259        tykki.Image = kuva;
260
261        tykkiTorni.Add(tykki);
262
263        Timer ajastin = new Timer();
264        ajastin.Interval = 1.5;
265        ajastin.Timeout += delegate
266        {
267            PhysicsObject kuula = tykki.Shoot();
268            if (kuula != null)
269            {
270                kuula.Image = LoadImage("t04_evilrat");
271                kuula.Size *= 3;
272                kuula.Tag = "vihunammus";
273                //boostaa ylös päälläseisottaessa jos kuulan koko = 130=D
274                //.CollisionIgnoreGroup = 30;
275            }
276        };
277        ajastin.Start();
278        return tykkiTorni;
279    }
280
281    void LuoKanuunaVasen(Vector paikka, double leveys, double korkeus)
282    {
283        PhysicsObject tykki = LuoKanuuna(paikka, leveys, korkeus);
284        tykki.Angle = Angle.FromDegrees(180);
285    }
286
287    void LuoKanuunaOikea(Vector paikka, double leveys, double korkeus)
288    {
289        LuoKanuuna(paikka, leveys, korkeus);
290    }
291
292    void TykkiAmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
293    {
294        ammus.Destroy();
295        ammus.CollisionIgnoreGroup = 30;
296    }
297
298
299    void LuoAse(Vector paikka, double leveys, double korkeus)
300    {
301        PhysicsObject Ase = new PhysicsObject(leveys, korkeus);
302        Ase.Image = null;
303        Ase.Position = paikka;
304        Ase.MakeStatic();
305        Cannon tykki = new Cannon(50, 10);
306        //tykki.ProjectileCollision = AmmusOsui;
307        tykki.Ammo.Value = 500;
308        tykki.InfiniteAmmo = true;
309        tykki.Power.Value = 2000;
310        tykki.Power.DefaultValue = 2000;
311        tykki.FireRate = 5.0;
312        //Ase.AmmoIgnoresGravity = true;
313        tykki.AmmoIgnoresGravity = false;
314        tykki.MaxAmmoLifetime = TimeSpan.FromSeconds(2);
315        tykki.AttackSound = null;
316        tykki.Image = kuva2;
317        Ase.X = 10.0;
318        Ase.Y = -5.0;
319        Add(Ase);
320    }
321
322    void TaustaMusiikki()
323    {
324
325
326        MediaPlayer.Play("jungle");
327        MediaPlayer.Volume = 10.0;
328    }
329
330    void KohteetTormaavat(PhysicsObject tormaaja, PhysicsObject kohde)
331    {
332        MessageDisplay.Add("Bump!");
333    }
334
335}
336
337
Note: See TracBrowser for help on using the repository browser.