source: 2017/koodauskerho/mastermijari/Seikkailu/Seikkailu/Seikkailu/Seikkailu.cs @ 9496

Revision 9496, 9.6 KB checked in by rikavila, 18 months 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 Seikkailu : PhysicsGame
10{
11    DoubleMeter elamalaskuri;
12    DoubleMeter elamalaskuri2;
13    IntMeter pisteLaskuri;
14
15    Image pelaajankuva = LoadImage("ihminen");
16    PhysicsObject pelaaja;
17
18    Image hirvionkuva = LoadImage("hirvio");
19    PhysicsObject hirvio;
20
21    Image puukonkuva = LoadImage("PuuuuuuKKo");
22    PhysicsObject puukko;
23
24    Image pelaajan2kuva = LoadImage("ihminen2");
25    PhysicsObject pelaaja2;
26    int kenttanro = 1;
27    Image ampujankuva = LoadImage("hirvio2");
28
29    Image puunkuva = LoadImage("puuu");
30    PhysicsObject puu;
31    PhysicsObject HirvioSpawn;
32    PhysicsObject AmpujaSpawn;
33    public override void Begin()
34    {
35        // TODO: Kirjoita ohjelmakoodisi tähän
36        LuoelamaLaskuri();
37        LuoelamaLaskuri2();
38        Level.Background.Color = Color.DarkJungleGreen;
39        LuoPistelaskuri();
40
41        LuoKenttä();
42
43        Timer ajastin = new Timer();
44        ajastin.Interval = 3.0;
45        ajastin.Timeout += LisaaHirvio;
46        ajastin.Start();
47
48        Timer ajastin2 = new Timer();
49        ajastin.Interval = 3.0;
50        ajastin.Timeout += LisaaAmpuja;
51        ajastin.Start();
52
53
54        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
55        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
56    }
57    void LuoKenttä() {
58        TileMap ruudut = TileMap.FromLevelAsset("kentta" + kenttanro);
59        ruudut.SetTileMethod('#', LuoPalikka);
60        ruudut.SetTileMethod('K', LuoKivi);
61        ruudut.SetTileMethod('P', LuoPelaaja);
62        ruudut.SetTileMethod('2', LuoPelaaja2);
63        ruudut.SetTileMethod('L', LuoPuu);
64        ruudut.SetTileMethod('H', LuoHirvioSpawn);
65        ruudut.SetTileMethod('A', LuoAmpujaSpawn);
66        ruudut.Execute(20, 20);
67    }
68
69    private void LuoHirvioSpawn(Vector paikka, double leveys, double korkeus)
70    {
71        HirvioSpawn = PhysicsObject.CreateStaticObject(leveys, korkeus);
72        HirvioSpawn.Color = Color.AshGray;
73        HirvioSpawn.Position = paikka;
74    }
75    private void LuoAmpujaSpawn(Vector paikka, double leveys, double korkeus)
76    {
77        AmpujaSpawn = PhysicsObject.CreateStaticObject(leveys, korkeus);
78        AmpujaSpawn.Color = Color.AshGray;
79        AmpujaSpawn.Position = paikka;
80    }
81        void LuoPistelaskuri()
82    {
83        pisteLaskuri = new IntMeter(0,0,2);
84        pisteLaskuri.UpperLimit += () => {
85            // tässä toinen kenttä
86
87            ClearAll();
88            kenttanro++;
89            Begin();
90            pisteLaskuri.MaxValue = 999999999;
91            Level.Background.Color = Color.DarkJungleGreen;
92
93        };
94
95
96        Label pisteNaytto = new Label();
97        pisteNaytto.X = Screen.Left + 1000;
98        pisteNaytto.Y = Screen.Top - 100;
99        pisteNaytto.TextColor = Color.Black;
100        pisteNaytto.Color = Color.White;
101
102        pisteNaytto.BindTo(pisteLaskuri);
103        Add(pisteNaytto);
104    }
105
106    void LuoPalikka(Vector paikka, double leveys, double korkeus)
107    {
108        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
109        palikka.Position = paikka;
110        palikka.Shape = Shape.Rectangle;
111        palikka.Color = Color.AshGray;
112        Add(palikka);
113    }
114    void LuoKivi(Vector paikka, double leveys, double korkeus)
115    {
116        PhysicsObject kivi = PhysicsObject.CreateStaticObject(leveys, korkeus);
117        kivi.Position = paikka;
118        kivi.Shape = Shape.Rectangle;
119        kivi.Color = Color.LightGray;
120        Add(kivi);
121    }
122    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
123    {
124        pelaaja = new PhysicsObject(leveys + 30, korkeus + 10);
125        pelaaja.Shape = Shape.Rectangle;
126        pelaaja.Color = Color.DarkBlue;
127        pelaaja.Position = paikka;
128        pelaaja.Image = pelaajankuva;
129        pelaaja.LinearDamping = 0.8;
130        pelaaja.CanRotate = false;
131        pelaaja.Tag = "pelaaja";
132
133        Add(pelaaja);
134
135        Keyboard.Listen(Key.A, ButtonState.Down,
136            LiikutaPelaajaa, null, new Vector(-50, 0));
137        Keyboard.Listen(Key.D, ButtonState.Down,
138           LiikutaPelaajaa, null, new Vector(50, 0));
139        Keyboard.Listen(Key.W, ButtonState.Down,
140           LiikutaPelaajaa, null, new Vector(0, 50));
141        Keyboard.Listen(Key.S, ButtonState.Down,
142           LiikutaPelaajaa, null, new Vector(0, -50));
143        Mouse.Listen(MouseButton.Left, ButtonState.Pressed,
144            HeitaPuukko, null, pelaaja);
145
146
147
148    }
149    void LiikutaPelaajaa(Vector vectori)
150    {
151        pelaaja.Hit(vectori);
152        pelaaja.Angle = vectori.Angle - Angle.FromDegrees(-90);
153    }
154     void LuoPelaaja2(Vector paikka, double leveys, double korkeus)
155    {
156        pelaaja2 = new PhysicsObject(leveys + 30, korkeus + 10);
157        pelaaja2.Shape = Shape.Rectangle;
158        pelaaja2.Color = Color.DarkBlue;
159        pelaaja2.Position = paikka;
160        pelaaja2.Image = pelaajan2kuva;
161        pelaaja2.LinearDamping = 0.8;
162        pelaaja2.CanRotate = false;
163        pelaaja2.Tag = "pelaaja2";
164        Add(pelaaja2);
165
166
167
168        Keyboard.Listen(Key.Left, ButtonState.Down,
169            LiikutaPelaajaa2, null, new Vector(-50, 0));
170        Keyboard.Listen(Key.Right, ButtonState.Down,
171           LiikutaPelaajaa2, null, new Vector(50, 0));
172        Keyboard.Listen(Key.Up, ButtonState.Down,
173           LiikutaPelaajaa2, null, new Vector(0, 50));
174        Keyboard.Listen(Key.Down, ButtonState.Down,
175           LiikutaPelaajaa2, null, new Vector(0, -50));
176
177
178
179    }
180    void LiikutaPelaajaa2(Vector vectori)
181    {
182        pelaaja2.Hit(vectori);
183        pelaaja2.Angle = vectori.Angle - Angle.FromDegrees(-90);
184    }
185    void LuoPuu(Vector paikka, double leveys, double korkeus)
186    {
187        PhysicsObject puu = PhysicsObject.CreateStaticObject(leveys + 50, korkeus + 150, Shape.FromImage(puunkuva));
188        puu.IgnoresCollisionResponse = true;
189        puu.Position = paikka;
190        puu.Image = puunkuva;
191        Add(puu, 2);
192    }
193    void LisaaHirvio()
194    {
195        PhysicsObject hirvio = new PhysicsObject(30, 30);
196        hirvio.Position = HirvioSpawn.Position;
197        hirvio.Shape = Shape.FromImage(hirvionkuva);
198        hirvio.Image = hirvionkuva;
199        hirvio.CanRotate = true;
200        Add(hirvio);
201        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja, pelaaja2);
202        seuraajanAivot.Speed = 50;
203        //   seuraajanAivot.DistanceFar = 60;         
204        //   seuraajanAivot.DistanceClose = 50;         
205        // seuraajanAivot.StopWhenTargetClose = true;
206        hirvio.Brain = seuraajanAivot;
207        hirvio.Tag = "hirvio";
208        AddCollisionHandler(hirvio, "pelaaja", törmää);
209        AddCollisionHandler(hirvio, "pelaaja2", törmää2);
210    }
211    void LisaaAmpuja()
212    {
213        PhysicsObject ampuja = new PhysicsObject(50, 50);
214        ampuja.Image = ampujankuva;
215        ampuja.Shape = Shape.FromImage(ampujankuva);
216
217
218        Add(ampuja);
219        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja, pelaaja2);
220        seuraajanAivot.Speed = 50;
221        //   seuraajanAivot.DistanceFar = 60;         
222        //   seuraajanAivot.DistanceClose = 50;         
223        // seuraajanAivot.StopWhenTargetClose = true;
224        ampuja.Brain = seuraajanAivot;
225        ampuja.Tag = "ampuja";
226        AddCollisionHandler(ampuja, "pelaaja", törmää);
227        AddCollisionHandler(ampuja, "pelaaja2", törmää2);
228    }
229    void LuoelamaLaskuri()
230    {
231        elamalaskuri = new DoubleMeter(10);
232        elamalaskuri.MaxValue = 10;
233        elamalaskuri.LowerLimit += ElamaLoppui;
234
235
236        ProgressBar elamaPalkki = new ProgressBar(150, 20);
237        elamaPalkki.X = Screen.Left + 250;
238        elamaPalkki.Y = Screen.Top - 75;
239        elamaPalkki.Width = 300;
240        elamaPalkki.Height = 90;
241        elamaPalkki.BindTo(elamalaskuri);
242        Add(elamaPalkki);
243    }
244    void LuoelamaLaskuri2()
245    {
246        elamalaskuri2 = new DoubleMeter(10);
247        elamalaskuri2.MaxValue = 10;
248        elamalaskuri2.LowerLimit += ElamaLoppui2;
249
250
251        ProgressBar elamaPalkki2 = new ProgressBar(150, 20);
252        elamaPalkki2.X = Screen.Right - 250;
253        elamaPalkki2.Y = Screen.Top - 75;
254        elamaPalkki2.Width = 300;
255        elamaPalkki2.Height = 90;
256        elamaPalkki2.BindTo(elamalaskuri2);
257        Add(elamaPalkki2);
258    }
259
260    void törmää(PhysicsObject törmääjä, PhysicsObject kohde)
261    {
262        if (elamalaskuri.Value == 0) { pelaaja.Destroy(); }
263        else { elamalaskuri.Value -= 1; }
264
265
266    }
267    void törmää2(PhysicsObject törmääjä, PhysicsObject kohde)
268    {
269        if (elamalaskuri2.Value == 0) { pelaaja2.Destroy(); }
270        else { elamalaskuri2.Value -= 1; }
271    }
272    void törmää3(PhysicsObject törmääjä, PhysicsObject kohde)
273    {
274        kohde.Destroy();
275        pisteLaskuri.AddValue(1);
276    }
277    void ElamaLoppui()
278    {
279        MessageDisplay.Add("Game Over Player1");
280        ClearAll();
281        kenttanro = 0;
282        LuoKenttä();
283
284    }
285    void ElamaLoppui2()
286    {
287        MessageDisplay.Add("Game Over Player2");
288    }
289    void HeitaPuukko(PhysicsObject pelaaja)
290    {
291        PhysicsObject puukko = new PhysicsObject(20, 50);
292        pelaaja.Throw(puukko, Angle.FromDegrees(-90), 500);
293        AddCollisionHandler(puukko, "hirvio", törmää3);
294        puukko.Width = 50;
295        puukko.Height = 30;
296        puukko.Image = puukonkuva;
297        puukko.MaximumLifetime = TimeSpan.FromSeconds(1.0);
298
299    }
300
301}
Note: See TracBrowser for help on using the repository browser.