source: 2016/27/OttoK/Survivetown/Survivetown/Survivetown/Survivetown.cs @ 7886

Revision 7886, 6.5 KB checked in by otoskinn, 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 Survivetown : PhysicsGame
10{
11    Image olionKuva = LoadImage("pelikissa");
12    Image taustakuva = LoadImage("kenntav3");
13    Image pelaajankuva = LoadImage("mlgnorsurebornedv2");
14    Image jonnenkuva = LoadImage("jonne");
15    Image pengunkuva = LoadImage("smokingpwenguin");
16    Image sytkarinkuva = LoadImage("sytkari");
17    Image aknkuva = LoadImage("ak47");
18    Image ammuksenkuva = LoadImage("bullet");
19    PhysicsObject pelaaja;
20    double nopeus = 1000;
21    bool sprint = false;
22    PhysicsObject jonne;
23    AssaultRifle pelaajanase;
24    public override void Begin()
25    {
26        LuoKentta();
27        LisaaOhjaimet();
28        LuoJonne();
29
30        Keyboard.Listen(Key.Left, ButtonState.Down,
31        LiikutaPelaajaa, null, new Vector(-nopeus, 0));
32        Keyboard.Listen(Key.Right, ButtonState.Down,
33        LiikutaPelaajaa, null, new Vector(nopeus, 0));
34        Keyboard.Listen(Key.Up, ButtonState.Down,
35        LiikutaPelaajaa, null, new Vector(0, nopeus));
36        Keyboard.Listen(Key.Down, ButtonState.Down,
37        LiikutaPelaajaa, null, new Vector(0, -nopeus));
38        Keyboard.Listen(Key.LeftShift, ButtonState.Down, () => { sprint = true; }, "juokse");
39        Keyboard.Listen(Key.LeftShift, ButtonState.Released, () => { sprint = false; }, "");
40    }
41    void LuoKentta()
42    {
43        IsFullScreen = false;
44
45        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kenttav2");
46        ruudut.SetTileMethod(Color.Red, LuoPelaaja);
47        ruudut.SetTileMethod(Color.Black, LuoTaso);
48        ruudut.SetTileMethod(new Color(255, 216, 0), LuoPingviini);
49        ruudut.SetTileMethod(new Color(0, 255, 0), LuoAse);
50        ruudut.SetTileMethod(new Color(0, 0, 255), LuoAuto);
51        ruudut.Execute(20, 20);
52
53        Level.Size = new Vector(4000, 4000);
54        Level.CreateBorders();
55        Level.Background.Image = taustakuva;
56        Level.Background.FitToLevel();
57    }
58    void LisaaOhjaimet()
59    {
60        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
61        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
62        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu");
63    }
64    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
65    {
66        pelaaja = new PhysicsObject(80, 50);
67        pelaaja.LinearDamping = 0.9;
68        pelaaja.Image = pelaajankuva;
69        pelaaja.IgnoresExplosions = true;
70        pelaaja.CanRotate = false;
71        Add(pelaaja);
72        AddCollisionHandler(pelaaja, "ak47", OtaAse);
73        AddCollisionHandler(pelaaja, "jonne", PelaajaTormasi);
74        Camera.Follow(pelaaja);
75    }
76    void LuoTaso(Vector paikka, double leveys, double korkeus)
77    {
78        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
79        taso.Position = paikka;
80        taso.Color = Color.Black;
81        taso.CollisionIgnoreGroup = 1;
82        Add(taso);
83    }
84    void LiikutaPelaajaa(Vector vektori)
85    {
86        if (sprint)
87        {
88            pelaaja.Push(vektori * 2);
89            return;
90        }
91        pelaaja.Push(vektori);
92        if (pelaajanase == null) return;
93        pelaajanase.Angle = pelaaja.Velocity.Angle;
94    }
95    void VaihdaNopeus()
96    {
97    }
98    void LuoPingviini(Vector paikka, double x, double y)
99    {
100        PhysicsObject pingviini = new PhysicsObject(100, 100);
101        pingviini.Shape = Shape.Circle;
102        pingviini.Color = Color.Red;
103        pingviini.Position = paikka;
104        pingviini.Tag = "pingu";
105        pingviini.CanRotate = false;
106        pingviini.Image = pengunkuva;
107        Add(pingviini);
108    }
109    void LuoJonne()
110    {
111        jonne = new PhysicsObject(250, 250);
112        jonne.Position = new Vector(0, -1500);
113        jonne.CanRotate = false;
114        jonne.Tag = "jonne";
115        jonne.IgnoresExplosions = true;
116        jonne.Image = jonnenkuva;
117        jonne.Mass = 100000000;
118        Add(jonne);
119    }
120    void Tupruttelia()
121    {
122        Smoke savu = new Smoke();
123        savu.Position = jonne.Position;
124        Add(savu, 1);
125        Wind = new Vector(100, 20);
126        Timer savunsiirto = new Timer();
127        savunsiirto.Interval = 0.1;
128        savunsiirto.Timeout += delegate { savu.Position = jonne.Position; };
129        savunsiirto.Start();
130    }
131    void LuoSytkari()
132    {
133        PhysicsObject sytkari = new PhysicsObject(250, 300);
134        sytkari.Image = sytkarinkuva;
135        sytkari.Position = jonne.Position;
136        Add(sytkari, 1);
137        sytkari.CanRotate = false;
138        sytkari.Mass = 10000;
139        sytkari.MaximumLifetime = TimeSpan.FromSeconds(1);
140        Tupruttelia();
141        sytkari.Destroyed += delegate ()
142        {
143            LuoRajahdys(jonne.Position);
144            jonne.Tag = "jonne";
145        };
146    }
147
148    void PelaajaTormasi(PhysicsObject pelaaja, PhysicsObject jonne)
149    {
150        jonne.Tag = "";
151        Timer.SingleShot(1.0, LuoSytkari);
152
153    }
154    void LuoRajahdys(Vector paikka)
155    {
156        Explosion rajadys = new Explosion(150);
157        rajadys.Position = paikka;
158        Add(rajadys, 1);
159    }
160    void OtaAse(PhysicsObject pelaaja, PhysicsObject ak47)
161    {
162        ak47.Destroy();
163        pelaajanase = new AssaultRifle(50, 50);
164        pelaajanase.ProjectileCollision += AmmusOsui;
165        pelaaja.Add(pelaajanase);
166    }
167    void LuoAse(Vector paekka, double x, double y)
168    {
169        PhysicsObject ak47 = new PhysicsObject(50, 100);
170        ak47.Position = paekka;
171        ak47.Image = aknkuva;
172        ak47.Mass = 100;
173        ak47.Tag = "ak47";
174        Add(ak47);
175    }
176    void AmmuAseella()
177    {
178        if (pelaajanase == null) return;
179            PhysicsObject ammus = pelaajanase.Shoot();
180
181        if (ammus != null)
182        {
183            //ammus.Size *= 3;
184            ammus.Image = ammuksenkuva;
185            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
186        }
187    }
188    void AmmusOsui(PhysicsObject ammus, PhysicsObject pingu)
189    {
190        if ((string)pingu.Tag == "pingu")
191        {
192            pingu.Destroy();
193            ammus.Destroy();
194        }
195    }
196    void LuoAuto(Vector paikka, double x , double y)
197    {
198        PhysicsObject auto = new PhysicsObject(250, 100);
199        auto.Color = Color.Yellow;
200        auto.Position = paikka;
201        auto.Mass = 1000;
202        auto.Tag = "auto";
203        Add(auto);
204    }
205}
Note: See TracBrowser for help on using the repository browser.