source: 2016/27/TuukkaH/LaiskiaisSiulaattori/LaiskiaisSiulaattori/LaiskiaisSiulaattori/LaiskiaisSiulaattori.cs @ 10334

Revision 8035, 7.6 KB checked in by sieerinn, 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 LaiskiaisSiulaattori : PhysicsGame
10{
11    const double nopeus = 100;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PhysicsObject pelaaja1;
16
17    GameObject oksa1;
18    GameObject oksa2;
19        GameObject oksa3;
20
21    GameObject kohdeOksa;
22
23    Image pelaajanKuva = LoadImage("Laiskiainen");
24    Image tahtiKuva = LoadImage("tahti");
25    Image JaguaariKuva = LoadImage("Jaguaari");
26    Image OksaKuva = LoadImage("Oksa");
27    Image ViidakkoKuva = LoadImage("Viidakko");
28    Image LehtiKuva = LoadImage("SuperLehti");
29    Image VesiKuva = LoadImage("VesiKuva");
30    Image Loppukuva = LoadImage("LoppuKuva");
31    Image HavioKuva = LoadImage("HavioKuva");
32    Image AlkuKuva = LoadImage("AlkuKuva");
33
34    SoundEffect maaliAani = LoadSoundEffect("maali");
35
36    public override void Begin()
37    {
38       
39        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
40"Aloita peli", "Lopeta");
41        alkuValikko.AddItemHandler(0, AloitaPeli);
42        alkuValikko.AddItemHandler(1, Exit);
43        alkuValikko.Color = Color.Blue;
44        Level.Background.Image = AlkuKuva;
45        Level.Background.FitToLevel();
46        Camera.ZoomToLevel();
47        Level.Background.Color = Color.Blue;
48        Add(alkuValikko);
49    }
50    void AloitaPeli()
51    {
52        LuoKentta();
53        LisaaNappaimet();
54        Timer Ajastin = new Timer();
55        Ajastin.Interval = 10;
56        Ajastin.Timeout += LuoJaguaari;
57        Ajastin.Start();
58
59        Camera.Follow(pelaaja1);
60        Camera.FollowOffset = new Vector(400.0, 0.0);
61        Camera.ZoomFactor = 1.2;
62        Camera.StayInLevel = true;
63        LuoPistelaskuri();
64        Mouse.IsCursorVisible = true;
65    }
66   
67    void LuoJaguaari()
68    {
69        PhysicsObject Jaguaari = new PhysicsObject(150, 50);
70        Jaguaari.Image = JaguaariKuva;
71        Jaguaari.X = pelaaja1.X + 600;
72        Jaguaari.Bottom= RandomGen.SelectOne(oksa1, oksa2, oksa3).Top;
73        Jaguaari.Tag = "Jaguaari";
74        Add(Jaguaari);
75       
76       
77    }
78    IntMeter pisteLaskuri;
79
80    void LuoPistelaskuri()
81    {
82        pisteLaskuri = new IntMeter(0);
83
84        Label pisteNaytto = new Label();
85        pisteNaytto.X = Screen.Left + 100;
86        pisteNaytto.Y = Screen.Top - 100;
87        pisteNaytto.TextColor = Color.Aqua;
88        pisteNaytto.Color = Color.Brown;
89
90        pisteNaytto.BindTo(pisteLaskuri);
91        pisteNaytto.Title = "Lehdet";
92        pisteLaskuri.Value += 0;
93        pisteLaskuri.MaxValue = 40;
94        Add(pisteNaytto);
95        ;
96    }
97
98    void LuoKentta()
99    {
100        TileMap kentta = TileMap.FromLevelAsset("kentta1");
101        kentta.SetTileMethod('1', LisaaOksa1);
102        kentta.SetTileMethod('2', LisaaOksa2);
103        kentta.SetTileMethod('3', LisaaOksa3);
104        kentta.SetTileMethod('*', LisaaLehti);
105        kentta.SetTileMethod('N', LisaaPelaaja);
106        kentta.SetTileMethod('m', LisaaVesi);
107        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
108        Level.Background.Image = ViidakkoKuva;
109        Level.Background.FitToLevel();
110        Level.Background.TextureWrapSize = new Vector(20, 1);
111    }
112    void LisaaVesi(Vector paikka, double leveys, double korkeus)
113    {
114        PhysicsObject Vesi = new PhysicsObject(leveys,korkeus);
115        Vesi.Image = VesiKuva;
116        Vesi.Position = paikka;
117        Add(Vesi);
118        Vesi.MakeStatic();
119        Vesi.Tag = "Vesi";
120    }
121    GameObject LuoOksa(Vector paikka, double leveys, double korkeus)
122    {
123        GameObject oksa = new GameObject(Level.Width, korkeus * 0.2);
124        oksa.Position = paikka;
125        oksa.Left = Level.Left;
126        oksa.Image=OksaKuva;
127        oksa.TextureWrapSize = new Vector(60, 1);
128        Add(oksa);
129        return oksa;
130    }
131
132    void LisaaOksa1(Vector paikka, double leveys, double korkeus)
133    {
134        oksa1 = LuoOksa(paikka, leveys, korkeus);
135    }
136
137    void LisaaOksa2(Vector paikka, double leveys, double korkeus)
138    {
139        oksa2 = LuoOksa(paikka, leveys, korkeus);
140    }
141
142    void LisaaOksa3(Vector paikka, double leveys, double korkeus)
143    {
144        oksa3 = LuoOksa(paikka, leveys, korkeus);
145    }
146
147    void LisaaLehti(Vector paikka, double leveys, double korkeus)
148    {
149        PhysicsObject Lehti = PhysicsObject.CreateStaticObject(leveys, korkeus);
150        Lehti.IgnoresCollisionResponse = true;
151        Lehti.Position = paikka;
152        Lehti.Image = LehtiKuva;
153        Lehti.Tag = "Lehti";
154        Add(Lehti);
155    }
156
157    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
158    {
159        pelaaja1 = new PhysicsObject(leveys * 3, korkeus * 3);
160        pelaaja1.Position = paikka;
161        pelaaja1.Mass = 4.0;
162        pelaaja1.Image = pelaajanKuva;
163        AddCollisionHandler(pelaaja1, "Lehti", TormaaLehteen);
164        AddCollisionHandler(pelaaja1, "Jaguaari", TormaaJaguaariin);
165        AddCollisionHandler(pelaaja1, "Vesi", TormaaVeteen);
166               Add(pelaaja1);
167
168        kohdeOksa = oksa3;
169        //pelaaja1.Velocity = new Vector(nopeus, 0);
170    }
171    void TormaaVeteen(PhysicsObject hahmo, PhysicsObject Vesi)
172    {
173        ClearAll();
174        Level.Width = 1600;
175        Level.Height = 1000;
176        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
177        Label VoittoTeksti = new Label("Laiskiainen on perillä");
178        Add(VoittoTeksti);
179        Level.Background.Image = Loppukuva;
180        Level.Background.FitToLevel();
181        Camera.ZoomToLevel();
182    }
183    void TormaaJaguaariin(PhysicsObject hahmo, PhysicsObject Jaguaari)
184    {
185       pelaaja1.Destroy();
186        ClearAll();
187        Level.Width = 800;
188        Level.Height = 700;
189             Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
190        Label VoittoTeksti = new Label("MURR!");
191        Level.Background.Image = HavioKuva;
192            Level.Background.FitToLevel();
193        Camera.ZoomToLevel();
194        Add(VoittoTeksti);
195    }
196
197    void LisaaNappaimet()
198    {
199        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
200        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
201
202        //Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
203        Keyboard.Listen(Key.Q, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, oksa1);
204        Keyboard.Listen(Key.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, oksa2);
205        Keyboard.Listen(Key.Z, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, oksa3);
206
207
208        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
209    }
210
211    void Hyppaa(PhysicsObject hahmo, GameObject oksa)
212    {
213        kohdeOksa = oksa;
214
215        //hahmo.MoveTo(new Vector(hahmo.X + 100,oksa.Y), 800, () =>
216        //{
217        //    pelaaja1.Velocity = new Vector(nopeus, 0);
218        //});
219    }
220
221    protected override void Update(Time time)
222    {
223        if (pelaaja1!=null)
224        {
225            double ero = kohdeOksa.Y - pelaaja1.Y;
226            if (Math.Abs(ero) < 5) ero = 0;
227            double y = Math.Sign(ero);
228            pelaaja1.Velocity = new Vector(120, y * 300);
229        }
230       
231        base.Update(time);
232    }
233
234    void TormaaLehteen(PhysicsObject hahmo, PhysicsObject Lehti)
235    {
236        maaliAani.Play();
237        MessageDisplay.Add("Nam!");
238        Lehti.Destroy();
239        pisteLaskuri.Value += 1;
240    }
241}
Note: See TracBrowser for help on using the repository browser.