source: 2016/26/PinjaT/Peli/Peli/Peli/Peli.cs @ 7610

Revision 7610, 6.0 KB checked in by pimasito, 5 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 Peli : PhysicsGame
10{
11    Image taustaKuva = LoadImage("metsa");
12    const double nopeus = 200;
13    const double hyppyNopeus = 750;
14    const int RUUDUN_KOKO = 40;
15
16    PlatformCharacter pelaaja;
17
18    Image pelaajanKuva = LoadImage("kissa");
19    Image hiirenKuva = LoadImage("hiiri");
20    Image talonkuva = LoadImage("talo");
21    Image puunkuva = LoadImage("puu");
22    Image metsankuva = LoadImage("metsa");
23    Image orkinkuva = LoadImage("orkki");
24
25    IntMeter Pistelaskuri;
26
27
28    public override void Begin()
29    {
30
31        Level.Background.Color = Color.HanPurple;
32        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko", "Aloita peli", "Lopeta");
33        Add(alkuValikko);
34        alkuValikko.AddItemHandler(0, AloitaAlusta);
35        alkuValikko.AddItemHandler(1, Exit);
36
37
38       
39    }
40
41    void LuoKentta()
42    {
43        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kentta");
44
45        ruudut.SetTileMethod(Color.Red, LuoPelaaja);
46        ruudut.SetTileMethod(Color.Black, LuoTaso);
47        ruudut.SetTileMethod(Color.Yellow, LuoTahti);
48        ruudut.SetTileMethod(Color.FromHexCode("7C2900"), LuoPuu);
49        ruudut.SetTileMethod(Color.Blue, LuoMaali);
50        ruudut.SetTileMethod(Color.FromHexCode("#FF00FF00"), LuoOrkki);
51        ruudut.Execute(20, 20);
52        Level.CreateBorders();
53        Level.Background.Image = metsankuva;
54        Level.Background.FitToLevel();
55       
56    }
57
58    void LuoTaso(Vector paikka, double leveys, double korkeus)
59    {
60        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
61        taso.Position = paikka;
62        taso.Color = Color.Black;
63
64        Add(taso);
65    }
66
67    void LisaaOhjaimet()
68    {
69        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
70        Keyboard.Listen(Key.Left, ButtonState.Down,
71              LiikutaPelaajaa, null, new Vector(-150, 0));
72        Keyboard.Listen(Key.Right, ButtonState.Down,
73           LiikutaPelaajaa, null, new Vector(150, 0));
74        Keyboard.Listen(Key.Space, ButtonState.Down,
75           PelaajaHyppää, null);
76        Keyboard.Listen(Key.Q, ButtonState.Pressed, AloitaAlusta, null);
77
78    }
79
80    void LiikutaPelaajaa(Vector vektori)
81    {
82        pelaaja.Walk(vektori.X);
83    }
84
85
86    void LuoTahti(Vector paikka, double leveys, double korkeus)
87    {
88        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
89        tahti.IgnoresCollisionResponse = true;
90        tahti.Position = paikka;
91        tahti.Image = hiirenKuva;
92        tahti.Tag = "hiiri";
93        Add(tahti);
94    }
95
96    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
97    {
98        pelaaja = new PlatformCharacter(leveys * 1.8, korkeus);
99        pelaaja.Position = paikka; 
100        AddCollisionHandler(pelaaja, "hiiri", TormaaHiireen);
101        AddCollisionHandler(pelaaja, "orkki", PelaajaOsuu);
102        AddCollisionHandler(pelaaja, "Maali", PelaajaPaasiMaaliin);
103        pelaaja.Image = pelaajanKuva;
104        Add(pelaaja);
105    }
106
107    void PelaajaHyppää()
108    {
109        pelaaja.Jump(500);
110    }
111
112    void PelaajaOsuu(PhysicsObject pelaaja, PhysicsObject orkki)
113    {
114        pelaaja.Destroy();
115        MultiSelectWindow Havisit = new MultiSelectWindow("Hävisit", "Yritä uudelleen", "Lopeta");
116        Add(Havisit);
117        Havisit.AddItemHandler(0, AloitaAlusta);
118        Havisit.AddItemHandler(1, Exit);
119
120    }
121    void AloitaAlusta()
122    {
123        ClearAll();
124        Gravity = new Vector(0, -1000);
125
126        LuoKentta();
127        LuoPistelaskuri();
128        LisaaOhjaimet();
129
130        Camera.Follow(pelaaja);
131        Camera.ZoomFactor = 5;
132        Camera.StayInLevel = true;
133
134    }
135
136    void Liikuta(PlatformCharacter hahmo, double nopeus)
137    {
138        hahmo.Walk(nopeus);
139    }
140
141    void Hyppaa(PlatformCharacter hahmo, double nopeus)
142    {
143        hahmo.Jump(nopeus);
144    }
145
146    void TormaaHiireen(PhysicsObject hahmo, PhysicsObject hiiri)
147    {
148        MessageDisplay.Add("Keräsit hiiren.");
149        Pistelaskuri.Value += 1;
150        hiiri.Destroy();
151
152    }
153
154    void LuoOrkki(Vector paikka, double leveys, double korkeus)
155    {
156        PlatformCharacter orkki = new PlatformCharacter(20, 20);
157        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
158        tasoAivot.Speed = 25;
159        orkki.Brain = tasoAivot;
160        orkki.Position = paikka;
161        orkki.Shape = Shape.Circle;
162        orkki.Image = orkinkuva;
163        orkki.Tag = "orkki";
164        Add(orkki);
165    }
166    void LuoPistelaskuri()
167    {
168        Pistelaskuri = new IntMeter(0);
169
170        Label pisteNaytto = new Label();
171        pisteNaytto.X = Screen.Left + 100;
172        pisteNaytto.Y = Screen.Top - 100;
173        pisteNaytto.TextColor = Color.Black;
174        pisteNaytto.Color = Color.White;
175
176        pisteNaytto.BindTo(Pistelaskuri);
177        Add(pisteNaytto);
178
179        IntMeter laskuri = new IntMeter(1);
180
181        pisteNaytto.Title = "Pisteet";
182    }
183
184    void LuoPuu(Vector paikka, double leveys, double korkeus)
185    {
186        PhysicsObject puu = PhysicsObject.CreateStaticObject(leveys, korkeus);
187        puu.Position = paikka;
188        puu.Image = puunkuva;
189        Add(puu);
190    }
191
192    void LuoMaali(Vector paikka, double leveys, double korkeus)
193    {
194        PhysicsObject talo = PhysicsObject.CreateStaticObject(leveys *4, korkeus * 5);
195        talo.Position = paikka;
196        talo.Image = talonkuva;
197        talo.Tag = "Maali";
198        Add(talo);
199    }
200
201    void PelaajaPaasiMaaliin(PhysicsObject pelaaja, PhysicsObject maali)
202    {
203        MessageDisplay.Add("Voitit!");
204        MultiSelectWindow Voitit = new MultiSelectWindow("Voitit! Onneksi Olkoon!", "Yritä uudelleen", "Lopeta");
205        Add(Voitit);
206        Voitit.AddItemHandler(0, AloitaAlusta);
207        Voitit.AddItemHandler(1, Exit);
208    }
209
210
211}
Note: See TracBrowser for help on using the repository browser.