source: 2017/24/EmiliaM/Little_miner1.cs @ 8699

Revision 8666, 9.4 KB checked in by npo17_4, 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 Testi_Little_miner : PhysicsGame
10{
11
12    PhysicsObject hakku;
13    PhysicsObject Kivi;
14    PhysicsStructure hahmo;
15    Image miner = LoadImage("miner");
16    Image kseina = LoadImage("kseina");
17
18    private double liikkumisnopeus = 300;
19    PhysicsObject pelaaja;
20    public override void Begin()
21    {
22        LuoKentta();
23        LuoHakku(pelaaja.X, pelaaja.Y + -50.0);
24
25        // hahmo = new PhysicsStructure(pelaaja, hakku);
26        // Add(hahmo);
27
28
29        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, null, pelaaja, new Vector(-liikkumisnopeus, 0));
30        Keyboard.Listen(Key.Left, ButtonState.Released, Liikuta, null, pelaaja, Vector.Zero);
31        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, null, pelaaja, new Vector(liikkumisnopeus, 0));
32        Keyboard.Listen(Key.Right, ButtonState.Released, Liikuta, null, pelaaja, Vector.Zero);
33        Keyboard.Listen(Key.Down, ButtonState.Down, Liikuta, null, pelaaja, new Vector(0, -liikkumisnopeus));
34        Keyboard.Listen(Key.Down, ButtonState.Released, Liikuta, null, pelaaja, Vector.Zero);
35        Keyboard.Listen(Key.Up, ButtonState.Down, Liikuta, null, pelaaja, new Vector(0, liikkumisnopeus));
36        Keyboard.Listen(Key.Up, ButtonState.Released, Liikuta, null, pelaaja, Vector.Zero);
37        Keyboard.Listen(Key.B, ButtonState.Pressed, Kaanna, null, pelaaja);
38
39        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
40        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
41    }
42
43    void Kaanna(PhysicsObject pelaaja)
44    {
45        pelaaja.Angle += Angle.FromDegrees(90.0);
46        double kulma = pelaaja.Angle.Degrees % 360;
47        if (90.1 - kulma < 0.5 && 90.1 - kulma > -0.5)
48            hakku.Position = new Vector(pelaaja.X + hakku.Width, pelaaja.Y);
49        if (180.1 + kulma < 0.5 && 180.1 + kulma > -0.5)
50            hakku.Position = new Vector(pelaaja.X, pelaaja.Y + hakku.Width);
51        if (90.1 + kulma < 0.5 && 90.1 + kulma > -0.5)
52            hakku.Position = new Vector(pelaaja.X - hakku.Width, pelaaja.Y);
53        if (0.1 + kulma < 0.5 && 0.1 + kulma > -0.5)
54            hakku.Position = new Vector(pelaaja.X, pelaaja.Y - hakku.Width);
55
56
57    }
58    void LuoHakku(double x, double y)
59    {
60        hakku = new PhysicsObject(50.0, 50.0);
61        hakku.X = x;
62        hakku.Y = y;
63        hakku.Shape = Shape.Rectangle;
64        hakku.Color = Color.OrangeRed;
65        hakku.Tag = "hakku";
66        hakku.Restitution = 0.0;
67        hakku.CanRotate = false;
68        hakku.IgnoresCollisionResponse = true;
69        Add(hakku);
70
71        // AxleJoint liitos = new AxleJoint(hakku, pelaaja);
72        //Add(liitos);
73
74    }
75
76
77    void Liikuta(PhysicsObject pelaaja, Vector suunta)
78    {
79        pelaaja.Velocity = suunta;
80        //   pelaaja.Angle += Angle.FromDegrees(90.0);
81        double kulma = pelaaja.Angle.Degrees % 360;
82        if (90.1 - kulma < 0.5 && 90.1 - kulma > -0.5)
83            hakku.Position = new Vector(pelaaja.X + hakku.Width, pelaaja.Y);
84        if (180.1 + kulma < 0.5 && 180.1 + kulma > -0.5)
85            hakku.Position = new Vector(pelaaja.X, pelaaja.Y + hakku.Width);
86        if (90.1 + kulma < 0.5 && 90.1 + kulma > -0.5)
87            hakku.Position = new Vector(pelaaja.X - hakku.Width, pelaaja.Y);
88        if (0.1 + kulma < 0.5 && 0.1 + kulma > -0.5)
89            hakku.Position = new Vector(pelaaja.X, pelaaja.Y - hakku.Width);
90
91    }
92
93    void LuoKentta()
94    {
95        TileMap ruudut = TileMap.FromLevelAsset("miner_maa1");
96
97        Level.Background.Color = Color.Charcoal;
98
99        ruudut.SetTileMethod('H', LuoSeina);
100        ruudut.SetTileMethod('K', LuoPalkki);
101        ruudut.SetTileMethod('h', LuoKseina);
102        ruudut.SetTileMethod('R', LuoKivi);
103        ruudut.SetTileMethod('V', LuoVihu);
104        ruudut.SetTileMethod('I', LuoIlkio);
105        ruudut.SetTileMethod('E', LuoEste);
106        ruudut.SetTileMethod('S', LuoSmaragdi);
107        ruudut.SetTileMethod('D', LuoTimantti);
108        ruudut.SetTileMethod('B', LuoIsokivi);
109        ruudut.SetTileMethod('a', LuoSanky);
110        ruudut.SetTileMethod('c', LuoArkku);
111        ruudut.SetTileMethod('P', LuoPelaaja);
112        ruudut.Execute(50, 50);
113    }
114
115    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
116    {
117        pelaaja = new PhysicsObject(leveys, korkeus);
118        pelaaja.Shape = Shape.Circle;
119        pelaaja.Position = paikka;
120        pelaaja.Mass = 100.0;
121        pelaaja.CanRotate = false;
122
123        Camera.Follow(pelaaja);
124        pelaaja.Image = miner;
125        pelaaja.Restitution = 0.0;
126        Add(pelaaja);
127
128    }
129
130    void LuoSeina(Vector paikka, double leveys, double korkeus)
131    {
132        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
133        palikka.Position = paikka;
134        palikka.Shape = Shape.Rectangle;
135        palikka.Color = Color.Black;
136        palikka.Restitution = 0.0;
137        Add(palikka);
138    }
139
140    void LuoPalkki(Vector paikka, double leveys, double korkeus)
141    {
142        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
143        palikka.Position = paikka;
144        palikka.Shape = Shape.Rectangle;
145        palikka.Color = Color.Brown;
146        palikka.Restitution = 0.0;
147        Add(palikka);
148    }
149
150    void LuoKseina(Vector paikka, double leveys, double korkeus)
151    {
152        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
153        palikka.Position = paikka;
154        palikka.Shape = Shape.Rectangle;
155
156        palikka.Restitution = 0.0;
157        Add(palikka);
158    }
159    void LuoKivi(Vector paikka, double leveys, double korkeus)
160    {
161        Kivi = new PhysicsObject.CreateStaticObject(leveys, korkeus);
162        Kivi.Position = paikka;
163        Kivi.Shape = Shape.Rectangle;
164        Kivi.Color = Color.LightGray;
165        AddCollisionHandler(Kivi, "hakku", KiviTuhoutuu);
166        Kivi.Restitution = 0.0;
167        Add(Kivi);
168    }
169
170    void KiviTuhoutuu(PhysicsObject palikka, PhysicsObject hakku)
171    {
172        palikka.Destroy();
173    }
174
175    void LuoVihu(Vector paikka, double leveys, double korkeus)
176    {
177        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
178        palikka.Position = paikka;
179        palikka.Shape = Shape.Rectangle;
180        palikka.Color = Color.Red;
181        palikka.Restitution = 0.0;
182        Add(palikka);
183    }
184
185    void LuoIlkio(Vector paikka, double leveys, double korkeus)
186    {
187        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
188        palikka.Position = paikka;
189        palikka.Shape = Shape.Rectangle;
190        palikka.Color = Color.Green;
191        palikka.Restitution = 0.0;
192        Add(palikka);
193    }
194
195    void LuoEste(Vector paikka, double leveys, double korkeus)
196    {
197        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
198        palikka.Position = paikka;
199        palikka.Shape = Shape.Rectangle;
200        palikka.Color = Color.DarkJungleGreen;
201        palikka.Restitution = 0.0;
202        Add(palikka);
203    }
204
205    void LuoSmaragdi(Vector paikka, double leveys, double korkeus)
206    {
207        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
208        palikka.Position = paikka;
209        palikka.Shape = Shape.Rectangle;
210        palikka.Color = Color.JungleGreen;
211        AddCollisionHandler(palikka, "hakku", SmaTuhoutuu);
212        palikka.Restitution = 0.0;
213        Add(palikka);
214    }
215
216    void SmaTuhoutuu(PhysicsObject palikka, PhysicsObject hakku)
217    {
218
219    }
220
221    void LuoTimantti(Vector paikka, double leveys, double korkeus)
222    {
223        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
224        palikka.Position = paikka;
225        palikka.Shape = Shape.Rectangle;
226        palikka.Color = Color.Blue;
227        palikka.Restitution = 0.0;
228        Add(palikka);
229    }
230
231    void LuoIsokivi(Vector paikka, double leveys, double korkeus)
232    {
233        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys + 40.0, korkeus + 40.0);
234        palikka.Position = paikka;
235        palikka.Shape = Shape.Rectangle;
236        palikka.Color = Color.BlueGray;
237        palikka.Restitution = 0.0;
238        Add(palikka);
239    }
240
241    void LuoSanky(Vector paikka, double leveys, double korkeus)
242    {
243        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
244        palikka.Position = paikka;
245        palikka.Shape = Shape.Rectangle;
246        palikka.Color = Color.BloodRed;
247        palikka.Restitution = 0.0;
248        Add(palikka);
249    }
250
251    void LuoArkku(Vector paikka, double leveys, double korkeus)
252    {
253        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
254        palikka.Position = paikka;
255        palikka.Shape = Shape.Rectangle;
256        palikka.Color = Color.DarkBrown;
257        palikka.Restitution = 0.0;
258        Add(palikka);
259    }
260    class Kivi : PhysicsObject
261    {
262        private IntMeter elamaLaskuri = new IntMeter(2, 0, 2);
263        public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
264
265        public Kivi(double leveys, double korkeus)
266            : base(leveys, korkeus)
267        {
268            elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
269        }
270    }
271}
272
273 
Note: See TracBrowser for help on using the repository browser.