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

Revision 7959, 6.0 KB checked in by koannak, 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
32    SoundEffect maaliAani = LoadSoundEffect("maali");
33
34    public override void Begin()
35    {
36        LuoKentta();
37        LisaaNappaimet();
38        Timer Ajastin = new Timer();
39        Ajastin.Interval = 10;
40        Ajastin.Timeout += LuoJaguaari;
41        Ajastin.Start();
42
43        Camera.Follow(pelaaja1);
44        Camera.FollowOffset = new Vector(400.0, 0.0);
45        Camera.ZoomFactor = 1.2;
46        Camera.StayInLevel = true;
47    }
48    void LuoJaguaari()
49    {
50        PhysicsObject Jaguaari = new PhysicsObject(150, 50);
51        Jaguaari.Image = JaguaariKuva;
52        Jaguaari.X = pelaaja1.X + 600;
53        Jaguaari.Bottom= RandomGen.SelectOne(oksa1, oksa2, oksa3).Top;
54        Jaguaari.Tag = "Jaguaari";
55        Add(Jaguaari);
56       
57       
58    }
59
60    void LuoKentta()
61    {
62        TileMap kentta = TileMap.FromLevelAsset("kentta1");
63        kentta.SetTileMethod('1', LisaaOksa1);
64        kentta.SetTileMethod('2', LisaaOksa2);
65        kentta.SetTileMethod('3', LisaaOksa3);
66        kentta.SetTileMethod('*', LisaaLehti);
67        kentta.SetTileMethod('N', LisaaPelaaja);
68        kentta.SetTileMethod('m', LisaaVesi);
69        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
70        Level.Background.Image = ViidakkoKuva;
71        Level.Background.FitToLevel();
72        Level.Background.TextureWrapSize = new Vector(20, 1);
73    }
74    void LisaaVesi(Vector paikka, double leveys, double korkeus)
75    {
76        PhysicsObject Vesi = new PhysicsObject(leveys,korkeus);
77        Vesi.Image = VesiKuva;
78        Vesi.Position = paikka;
79        Add(Vesi);
80        Vesi.MakeStatic();
81        Vesi.Tag = "Vesi";
82    }
83    GameObject LuoOksa(Vector paikka, double leveys, double korkeus)
84    {
85        GameObject oksa = new GameObject(Level.Width, korkeus * 0.2);
86        oksa.Position = paikka;
87        oksa.Left = Level.Left;
88        oksa.Image=OksaKuva;
89        oksa.TextureWrapSize = new Vector(60, 1);
90        Add(oksa);
91        return oksa;
92    }
93
94    void LisaaOksa1(Vector paikka, double leveys, double korkeus)
95    {
96        oksa1 = LuoOksa(paikka, leveys, korkeus);
97    }
98
99    void LisaaOksa2(Vector paikka, double leveys, double korkeus)
100    {
101        oksa2 = LuoOksa(paikka, leveys, korkeus);
102    }
103
104    void LisaaOksa3(Vector paikka, double leveys, double korkeus)
105    {
106        oksa3 = LuoOksa(paikka, leveys, korkeus);
107    }
108
109    void LisaaLehti(Vector paikka, double leveys, double korkeus)
110    {
111        PhysicsObject Lehti = PhysicsObject.CreateStaticObject(leveys, korkeus);
112        Lehti.IgnoresCollisionResponse = true;
113        Lehti.Position = paikka;
114        Lehti.Image = LehtiKuva;
115        Lehti.Tag = "Lehti";
116        Add(Lehti);
117    }
118
119    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
120    {
121        pelaaja1 = new PhysicsObject(leveys * 3, korkeus * 3);
122        pelaaja1.Position = paikka;
123        pelaaja1.Mass = 4.0;
124        pelaaja1.Image = pelaajanKuva;
125        AddCollisionHandler(pelaaja1, "Lehti", TormaaLehteen);
126        AddCollisionHandler(pelaaja1, "Jaguaari", TormaaJaguaariin);
127        AddCollisionHandler(pelaaja1, "Vesi", TormaaVeteen);
128               Add(pelaaja1);
129
130        kohdeOksa = oksa3;
131        //pelaaja1.Velocity = new Vector(nopeus, 0);
132    }
133    void TormaaVeteen(PhysicsObject hahmo, PhysicsObject Vesi)
134    {
135        ClearAll();
136        Level.Width = 1600;
137        Level.Height = 1000;
138        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
139        Label VoittoTeksti = new Label("Laiskiainen on perillä");
140        Add(VoittoTeksti);
141        Level.Background.Image = Loppukuva;
142        Level.Background.FitToLevel();
143        Camera.ZoomToLevel();
144    }
145    void TormaaJaguaariin(PhysicsObject hahmo, PhysicsObject Jaguaari)
146    {
147       pelaaja1.Destroy();
148        MessageDisplay.Add ("Murr");
149    }
150
151    void LisaaNappaimet()
152    {
153        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
154        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
155
156        //Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
157        Keyboard.Listen(Key.Q, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, oksa1);
158        Keyboard.Listen(Key.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, oksa2);
159        Keyboard.Listen(Key.Z, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, oksa3);
160
161
162        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
163    }
164
165    void Hyppaa(PhysicsObject hahmo, GameObject oksa)
166    {
167        kohdeOksa = oksa;
168
169        //hahmo.MoveTo(new Vector(hahmo.X + 100,oksa.Y), 800, () =>
170        //{
171        //    pelaaja1.Velocity = new Vector(nopeus, 0);
172        //});
173    }
174
175    protected override void Update(Time time)
176    {
177        double ero = kohdeOksa.Y - pelaaja1.Y;
178        if (Math.Abs(ero) < 5) ero = 0;
179        double y = Math.Sign(ero);
180        pelaaja1.Velocity = new Vector(120, y * 300);
181        base.Update(time);
182    }
183
184    void TormaaLehteen(PhysicsObject hahmo, PhysicsObject Lehti)
185    {
186        maaliAani.Play();
187        MessageDisplay.Add("Nam!");
188        Lehti.Destroy();
189    }
190}
Note: See TracBrowser for help on using the repository browser.