source: 2015/24/OskariL/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1.cs @ 5929

Revision 5929, 6.2 KB checked in by oslahtin, 6 years ago (diff)
Line 
1using Jypeli;
2using Jypeli.Controls;
3using Jypeli.Widgets;
4
5public class Tasohyppelypeli1 : PhysicsGame
6{
7    const double nopeus = 10000;
8    const double hyppyNopeus = 750;
9    const int RUUDUN_KOKO = 40;
10
11    PlatformCharacter pelaaja1;
12
13    Image pelaajanKuva = LoadImage("Pulla");
14    Image tahtiKuva = LoadImage("pacman");
15    Image parsakaaliKuva = LoadImage("parsakaali");
16
17    SoundEffect maaliAani = LoadSoundEffect("maali");
18    IntMeter pisteLaskuri;
19
20    bool peliKaynnissa = false;
21
22    Timer liikutusajastin;
23
24
25    public override void Begin()
26    {
27        Gravity = new Vector(0, -1000);
28
29        LuoKentta();
30        LisaaNappaimet();
31        LuoPistelaskuri();
32
33        Camera.Follow(pelaaja1);
34        Camera.ZoomFactor = 1.2;
35        Camera.StayInLevel = false;
36
37       liikutusajastin = new Timer();
38     liikutusajastin.Interval = 0.01;
39        liikutusajastin.Timeout += SiirraPelaajaaOikeammalle;
40       liikutusajastin.Start();
41
42        peliKaynnissa = true;
43
44
45    }
46    void SiirraPelaajaaOikeammalle()
47    {
48        pelaaja1.Push(new Vector(nopeus, 0.0));
49
50    }
51    void LuoKentta()
52    {
53        TileMap kentta = TileMap.FromLevelAsset("kentta1");
54        kentta.SetTileMethod('#', LisaaTaso);
55        kentta.SetTileMethod('*', LisaaTahti);
56        kentta.SetTileMethod('N', LisaaPelaaja);
57        kentta.SetTileMethod('V', LisaaVihollinen);
58        kentta.SetTileMethod('P', LisaaPahis);
59        kentta.SetTileMethod('p', LuoParsakaali);
60        kentta.Execute();
61   
62        Level.CreateLeftBorder();
63        Level.CreateTopBorder();
64        Level.CreateBottomBorder();
65        PhysicsObject oikeaReuna = Level.CreateRightBorder();
66        oikeaReuna.Tag = "oikea";
67
68
69        Level.Background.CreateGradient(Color.SkyBlue, Color.Azure);
70    }
71
72    void LisaaTaso(Vector paikka, double leveys, double korkeus)
73    {
74        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
75        taso.Position = paikka;
76        taso.Color = Color.Emerald;
77        taso.Tag = "seina";
78       
79        Add(taso);
80    }
81
82    void LisaaTahti(Vector paikka, double leveys, double korkeus)
83    {
84        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
85        tahti.IgnoresCollisionResponse = true;
86        tahti.Position = paikka;
87        tahti.Image = tahtiKuva;
88        tahti.Tag = "tahti";
89        Add(tahti);
90    }
91
92    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
93    {
94        pelaaja1 = new PlatformCharacter(leveys, korkeus);
95        pelaaja1.Position = paikka;
96        pelaaja1.Mass = 3.0;
97        pelaaja1.Image = pelaajanKuva;
98        AddCollisionHandler(pelaaja1, "seina", TormaaTasoon);
99        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
100        AddCollisionHandler(pelaaja1, "vihu", TormaaTasoon);
101        AddCollisionHandler(pelaaja1, "oikea", TormaaOikeaanReunaan);
102        Add(pelaaja1);
103    }
104    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
105    {
106        PhysicsObject vihollinen = new PhysicsObject(leveys, korkeus);
107        vihollinen.Color = Color.Azure;
108        vihollinen.Shape = Shape.Octagon;
109        vihollinen.Position = paikka;
110        vihollinen.IgnoresGravity = true;
111        vihollinen.CanRotate = false;
112        Add(vihollinen);
113
114    }
115    void LisaaPahis(Vector paikka, double leveys, double korkeus)
116    {
117
118
119        PhysicsObject pahis = new PhysicsObject(leveys, korkeus);
120        pahis.Color = Color.DarkRed;
121        pahis.Shape = Shape.Diamond;
122        pahis.Position = paikka;
123        pahis.IgnoresGravity = true;
124        pahis.CanRotate = true;
125        pahis.Oscillate(new Vector(0, 1), korkeus * 1.5, 0.3);
126
127        Add(pahis);
128
129    }
130
131    void LuoParsakaali(Vector paikka, double leveys, double korkeus)
132    {
133        PhysicsObject parsakaali = PhysicsObject.CreateStaticObject(leveys, korkeus);
134        parsakaali.IgnoresCollisionResponse = true;
135        parsakaali.Position = paikka;
136        parsakaali.Image = parsakaaliKuva;
137        parsakaali.Tag = "tahti";
138        Add(parsakaali);
139
140    }
141    void LisaaNappaimet()
142    {
143        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
144        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
145        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
146
147        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
148        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
149
150    }
151    void Liikuta(PlatformCharacter hahmo, double nopeus)
152    {
153        hahmo.Walk(nopeus);
154    }
155
156    void Hyppaa(PlatformCharacter hahmo, double nopeus)
157    {
158        hahmo.Jump(nopeus);
159    }
160
161    void TormaaParsakaaliin(PhysicsObject hahmo, PhysicsObject parsakaali)
162    {
163        maaliAani.Play();
164        pisteLaskuri.Value += 3;
165        MessageDisplay.Add("Popping-whirling!!!");
166        parsakaali.Destroy();
167    }
168
169    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
170    {
171        maaliAani.Play();
172        pisteLaskuri.Value += 1;
173        MessageDisplay.Add("Jaa.");
174        tahti.Destroy();
175    }
176    void LuoPistelaskuri()
177    {
178        pisteLaskuri = new IntMeter(0);
179
180        Label pisteNaytto = new Label();
181        pisteNaytto.X = Screen.Left + 100;
182        pisteNaytto.Y = Screen.Top - 100;
183        pisteNaytto.TextColor = Color.Black;
184        pisteNaytto.Color = Color.Transparent;
185        pisteNaytto.Title = "Pisteet:";
186        pisteNaytto.BindTo(pisteLaskuri);
187        pisteLaskuri.AddOverTime(-3, 10);
188        Add(pisteNaytto);
189    }
190    void TormaaTasoon(PhysicsObject tormaaja, PhysicsObject kohde)
191    {
192        if (peliKaynnissa)
193        {
194            MessageDisplay.Add("Kuolit! :(");
195         Keyboard.Disable(Key.Up);
196         liikutusajastin.Stop();
197         peliKaynnissa = false;
198        }
199
200    }
201
202    void TormaaOikeaanReunaan(PhysicsObject tormaaja, PhysicsObject kohde)
203    {
204        MessageDisplay.Add("Pääsit kentän läpi");
205        Gravity = Vector.Zero;
206        StopAll();
207        Keyboard.Disable(Key.Up);
208
209    }
210
211
212
213}
Note: See TracBrowser for help on using the repository browser.