source: 2017/31/JohannesU/MummoDrift2D2017/MummoDrift2D2017/MummoDrift2D2017/MummoDrift2D2017.cs @ 10334

Revision 9440, 7.4 KB checked in by npo17_78, 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 MummoDrift2D2017 : PhysicsGame
10{
11    Image taustaKuva = LoadImage("ripulionmarkaakakkaa");
12    Image grassDirtBlock = LoadImage("grassDirtBlock");
13    Image dirtBlock = LoadImage("dirtBlock");
14    Image ukkelikuva = LoadImage("amg1_rt2");
15    Image kivikuva = LoadImage("rock");
16    Image Palikka2 = LoadImage("darkStoneBlock");
17    Image vihukuva = LoadImage("blobRight");
18    Image estekuva = LoadImage("roots");
19    Image Vesipalikka = LoadImage("waterTopBlock");
20
21    double kavelyNopeus = 500, hyppyNopeus = 1000;
22    PlatformCharacter ukkeli;
23    PhysicsObject vihu;
24
25    SoundEffect hyppyAani = LoadSoundEffect("Jump");
26    SoundEffect kuolemisAani = LoadSoundEffect("kuolemisaani");
27
28    Vector spawnikoordinaatit = Vector.Zero;
29
30    public override void Begin()
31    {
32
33        AloitaPeli();
34        Taustamusiikki();
35        Lisaavihuja();
36    }
37    void Vesipalikke(Vector paikka, double leveys, double korkeus)
38    {
39        PhysicsObject este = new PhysicsObject(leveys, korkeus);
40        este.Position = paikka;
41        este.Shape = Shape.Rectangle;
42        este.MakeStatic();
43        // palikka.Color = Color.Gray;
44        este.Image = Vesipalikka;
45        Add(este);
46    }
47
48    void Fanta(Vector paikka, double leveys, double korkeus)
49    {
50        PhysicsObject este = new PhysicsObject(leveys, korkeus);
51        este.Position = paikka;
52        este.Shape = Shape.Rectangle;
53        este.MakeStatic();
54        // palikka.Color = Color.Gray;
55        este.Image = estekuva;
56        Add(este);
57    }
58
59
60    void LuoVihu(Vector paikka, double leveys, double korkeus)
61    {
62        vihu = new PhysicsObject(75, 55);
63        vihu.Shape = Shape.Rectangle;
64        vihu.Position = paikka;
65        vihu.CanRotate = false;
66        Add(vihu);
67        vihu.Image = vihukuva;
68        vihu.Tag = "vihu";
69
70        FollowerBrain seuraajanAivot = new FollowerBrain("ukkeli");
71        vihu.Brain = seuraajanAivot;
72        vihu.Brain.Active = true;
73
74       
75
76
77
78    }
79
80
81
82
83    void Palikka(Vector paikka, double leveys, double korkeus)
84    {
85        PhysicsObject kivi = PhysicsObject.CreateStaticObject(leveys, korkeus);
86        kivi.Position = paikka;
87        kivi.Shape = Shape.Rectangle;
88        // palikka.Color = Color.Gray;
89        kivi.Image = Palikka2;
90        Add(kivi);
91    }
92
93    void kivipalikka(Vector paikka, double leveys, double korkeus)
94    {
95        PhysicsObject kivi = PhysicsObject.CreateStaticObject(leveys, korkeus);
96        kivi.Position = paikka;
97        kivi.Shape = Shape.Rectangle;
98        // palikka.Color = Color.Gray;
99        kivi.Image = kivikuva;
100        Add(kivi);
101    }
102
103
104    void LiikkuvaTausta()
105    {
106        GameObject taustaPilvet = new GameObject(Screen.Width, Screen.Height);
107        taustaPilvet.Image = taustaKuva;
108        Add(taustaPilvet, -3);
109        taustaPilvet.Position += new Vector(0, 100);
110        Layers[-3].RelativeTransition = new Vector(0, 0);
111    }
112    void Ruohomultapalikka(Vector paikka, double leveys, double korkeus)
113    {
114        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
115        palikka.Position = paikka;
116        palikka.Shape = Shape.Rectangle;
117        // palikka.Color = Color.Gray;
118        palikka.Image = grassDirtBlock;
119        Add(palikka);
120    }
121    void Multapalikka(Vector paikka, double leveys, double korkeus)
122    {
123        PhysicsObject Palikka2 = PhysicsObject.CreateStaticObject(leveys, korkeus);
124        Palikka2.Position = paikka;
125        Palikka2.Shape = Shape.Rectangle;
126        Palikka2.Image = dirtBlock;
127        Add(Palikka2);
128    }
129    void Spawnipiste(Vector paikka, double leveys, double korkeus)
130    {
131        spawnikoordinaatit = paikka;
132    }
133
134    void LuoUkkeli(Vector paikka, double leveys, double korkeus)
135    {
136        ukkeli = new PlatformCharacter(75, 55);
137        ukkeli.Shape = Shape.Rectangle;
138        ukkeli.Position = paikka;
139        ukkeli.CanRotate = false;
140        ukkeli.Tag = "ukkeli";
141        Add(ukkeli);
142        ukkeli.Image = ukkelikuva;
143        AddCollisionHandler(ukkeli, "vihu", Tormaavihuun);
144       
145    }
146    void AsetaOhjaimet()
147    {
148        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", ukkeli, -kavelyNopeus);
149        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", ukkeli, kavelyNopeus);
150        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", ukkeli, hyppyNopeus);
151        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
152    }
153    void Liikuta(PlatformCharacter ukkeli, double nopeus)
154    {
155        ukkeli.Walk(nopeus);
156    }
157    void Hyppaa(PlatformCharacter ukkeli, double nopeus)
158    {
159        ukkeli.Jump(nopeus);
160        hyppyAani.Play();
161    }
162
163
164    void AloitaPeli()
165    {
166        //Vector impulssi = new Vector(500.0, 0.0);
167        //ukkeli.Hit(impulssi);
168
169        // LuoUkkeli();
170        ClearAll();
171        LiikkuvaTausta();//Level.Background.Image = taustaKuva;
172
173        TileMap ruudut = TileMap.FromLevelAsset("kentta");
174        ruudut.SetTileMethod('m', Ruohomultapalikka);
175        ruudut.SetTileMethod('p', Multapalikka);
176        ruudut.SetTileMethod('l', LuoUkkeli);
177        ruudut.SetTileMethod('d', kivipalikka);
178        ruudut.SetTileMethod('o', Palikka);
179        ruudut.SetTileMethod('i', LuoVihu);
180        ruudut.SetTileMethod('u', Fanta);
181        ruudut.SetTileMethod('s', Vesipalikke);
182        ruudut.SetTileMethod('j', Spawnipiste);
183        ruudut.Execute(50, 50);
184
185        Camera.Follow(ukkeli);
186
187        Gravity = new Vector(0, -1000);
188
189
190        AsetaOhjaimet();
191
192    }
193    void Tormaavihuun(PhysicsObject pelaaja, PhysicsObject kohde)
194    {
195        if(pelaaja.Bottom > kohde.Top- 10)
196        {
197            kohde.Destroy();
198
199         
200            kuolemisAani.Play();
201            return;
202        }
203
204        pelaaja.Destroy();
205        AloitaPeli();
206
207    }
208
209    void Lisaavihuja()
210    {
211        Timer ajastin = new Timer();
212        ajastin.Interval = 3.0;
213        ajastin.Timeout += delegate {
214            if (spawnikoordinaatit != Vector.Zero)
215            {
216                LuoVihu(spawnikoordinaatit, 50, 50);
217            }
218        };
219        ajastin.Start();
220    }
221
222    void SeuraajaAivot()
223    {
224        FollowerBrain seuraajanAivot = new FollowerBrain(ukkeli);
225        seuraajanAivot.Speed = 300;                 // Millä nopeudella kohdetta seurataan
226        seuraajanAivot.DistanceFar = 600;           // Etäisyys jolla aletaan seurata kohdetta
227        seuraajanAivot.DistanceClose = 200;         // Etäisyys jolloin ollaan lähellä kohdetta
228        seuraajanAivot.StopWhenTargetClose = true;  // Pysähdytään kun ollaan lähellä kohdetta
229                                                    //  seuraajanAivot.FarBrain = satunnaisAivot;   // Käytetään satunnaisaivoja kun ollaan kaukana
230
231        // Tapahtuma, joka tapahtuu kun ollaan lähellä kohdetta
232        // seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella;
233
234
235        // Aliohjelma joka ajetaan kun olio on tarpeeksi lähellä kohdetta.
236
237
238
239
240    }
241    void Taustamusiikki()
242    {
243        MediaPlayer.Play("musiikkipeliin");
244        MediaPlayer.IsRepeating = true;
245    }
246 
247}
Note: See TracBrowser for help on using the repository browser.