1 | using System; |
---|
2 | using System.Collections.Generic; |
---|
3 | using Jypeli; |
---|
4 | using Jypeli.Assets; |
---|
5 | using Jypeli.Controls; |
---|
6 | using Jypeli.Effects; |
---|
7 | using Jypeli.Widgets; |
---|
8 | |
---|
9 | public class CandyLand : PhysicsGame |
---|
10 | { |
---|
11 | const double nopeus = 200; |
---|
12 | const double hyppyNopeus = 750; |
---|
13 | const int RUUDUN_KOKO = 40; |
---|
14 | |
---|
15 | PlatformCharacter pelaaja1; |
---|
16 | PlatformCharacter vihollinen; |
---|
17 | |
---|
18 | Image pelaajanKuva = LoadImage("tikku-ukko"); |
---|
19 | Image KarkinKuva = LoadImage("YellowCandy"); |
---|
20 | Image vihollisenKuva = LoadImage("CandyThief"); |
---|
21 | |
---|
22 | SoundEffect maaliAani = LoadSoundEffect("maali"); |
---|
23 | Label pisteNaytto; |
---|
24 | |
---|
25 | public override void Begin() |
---|
26 | { |
---|
27 | MultiSelectWindow alkuValikko = new MultiSelectWindow("Candy Land", "Pelaa", "Tietoa", "Lopeta"); |
---|
28 | Add(alkuValikko); |
---|
29 | alkuValikko.AddItemHandler(1, Pelaa); |
---|
30 | alkuValikko.AddItemHandler(2, i); |
---|
31 | alkuValikko.AddItemHandler(3, Exit); |
---|
32 | } |
---|
33 | |
---|
34 | void Pelaa() |
---|
35 | { |
---|
36 | ClearAll(); |
---|
37 | Gravity = new Vector(0, -1000); |
---|
38 | |
---|
39 | LuoPisteLaskuri(); |
---|
40 | |
---|
41 | LuoKentta(); |
---|
42 | LisaaNappaimet(); |
---|
43 | |
---|
44 | Camera.Follow(pelaaja1); |
---|
45 | Camera.ZoomFactor = 1.2; |
---|
46 | Camera.StayInLevel = true; |
---|
47 | } |
---|
48 | |
---|
49 | void i() |
---|
50 | { |
---|
51 | MessageDisplay.Add("Candy Land v. 1.0, Copyright 2015 Aleksi Soikkala. Candy Land on sekasorron tilassa. Kaikki karkit ovat loppuneet. Auta Candy Landin asukkaita karkkien keräämisessä ja puolusta kylää Candy Thiefiltä, jotta Candy Landin asukkaat voivat jatkaa elämäänsä normaalisti."); |
---|
52 | } |
---|
53 | |
---|
54 | List<Label> valikonKohdat; |
---|
55 | |
---|
56 | void Valikko() |
---|
57 | { |
---|
58 | ClearAll(); |
---|
59 | |
---|
60 | valikonKohdat = new List<Label>(); |
---|
61 | |
---|
62 | Label kohta1 = new Label("Pelaa"); |
---|
63 | kohta1.Position = new Vector(0, 40); |
---|
64 | valikonKohdat.Add(kohta1); |
---|
65 | |
---|
66 | Label kohta2 = new Label("i"); |
---|
67 | kohta2.Position = new Vector(0, 0); |
---|
68 | valikonKohdat.Add(kohta2); |
---|
69 | |
---|
70 | Label kohta3 = new Label("Lopeta"); |
---|
71 | kohta3.Position = new Vector(0, -40); |
---|
72 | valikonKohdat.Add(kohta3); |
---|
73 | foreach (Label valikonKohta in valikonKohdat) |
---|
74 | { |
---|
75 | Add(valikonKohta); |
---|
76 | } |
---|
77 | |
---|
78 | Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, Pelaa, null); |
---|
79 | Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, i, null); |
---|
80 | Mouse.ListenOn(kohta3, MouseButton.Left, ButtonState.Pressed, Exit, null); |
---|
81 | |
---|
82 | Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null); |
---|
83 | |
---|
84 | } |
---|
85 | |
---|
86 | void ValikossaLiikkuminen(AnalogState hiirenTila) |
---|
87 | { |
---|
88 | foreach (Label kohta in valikonKohdat) |
---|
89 | { |
---|
90 | if (mouseIsCursorOn(kohta)) |
---|
91 | { |
---|
92 | kohta.TextColor = Color.White; |
---|
93 | } |
---|
94 | else |
---|
95 | { |
---|
96 | kohta.TextColor = Color.Black; |
---|
97 | } |
---|
98 | } |
---|
99 | |
---|
100 | } |
---|
101 | |
---|
102 | void Pelaa() |
---|
103 | { |
---|
104 | } |
---|
105 | |
---|
106 | void i() |
---|
107 | { |
---|
108 | } |
---|
109 | |
---|
110 | |
---|
111 | |
---|
112 | void LuoKentta() |
---|
113 | { |
---|
114 | TileMap kentta = TileMap.FromLevelAsset("kentta1"); |
---|
115 | kentta.SetTileMethod('#', LisaaTaso); |
---|
116 | kentta.SetTileMethod('*', LisaaTahti); |
---|
117 | kentta.SetTileMethod('N', LisaaPelaaja); |
---|
118 | kentta.SetTileMethod('V', LisaaVihollinen); |
---|
119 | kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO); |
---|
120 | Level.CreateBorders(); |
---|
121 | Level.Background.CreateGradient(Color.White, Color.SkyBlue); |
---|
122 | } |
---|
123 | |
---|
124 | IntMeter pisteLaskuri; |
---|
125 | |
---|
126 | void LuoPisteLaskuri() |
---|
127 | { |
---|
128 | pisteLaskuri = new IntMeter(0,0,0); |
---|
129 | |
---|
130 | pisteNaytto = new Label(); |
---|
131 | pisteNaytto.X = Screen.Left + 150; |
---|
132 | pisteNaytto.Y = Screen.Top - 100; |
---|
133 | pisteNaytto.TextColor = Color.Black; |
---|
134 | pisteNaytto.Color = Color.White; |
---|
135 | pisteNaytto.Title = "Karkit"; |
---|
136 | |
---|
137 | |
---|
138 | |
---|
139 | pisteNaytto.BindTo(pisteLaskuri); |
---|
140 | Add(pisteNaytto); |
---|
141 | |
---|
142 | } |
---|
143 | void LisaaTaso(Vector paikka, double leveys, double korkeus) |
---|
144 | { |
---|
145 | PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus); |
---|
146 | taso.Position = paikka; |
---|
147 | taso.Color = Color.Green; |
---|
148 | Add(taso); |
---|
149 | } |
---|
150 | |
---|
151 | void LisaaTahti(Vector paikka, double leveys, double korkeus) |
---|
152 | { |
---|
153 | PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus); |
---|
154 | tahti.IgnoresCollisionResponse = true; |
---|
155 | tahti.Position = paikka; |
---|
156 | tahti.Image = KarkinKuva; |
---|
157 | tahti.Tag = "tahti"; |
---|
158 | Add(tahti); |
---|
159 | pisteLaskuri.MaxValue++; |
---|
160 | pisteNaytto.IntFormatString = " {0:D1}/" + pisteLaskuri.MaxValue; |
---|
161 | } |
---|
162 | |
---|
163 | void LisaaPelaaja(Vector paikka, double leveys, double korkeus) |
---|
164 | { |
---|
165 | pelaaja1 = new PlatformCharacter(leveys, korkeus); |
---|
166 | pelaaja1.Position = paikka; |
---|
167 | pelaaja1.Mass = 4.0; |
---|
168 | pelaaja1.Image = pelaajanKuva; |
---|
169 | pelaaja1.Tag = "pelaaja"; |
---|
170 | AddCollisionHandler(pelaaja1, "tahti", KeraaKarkki); |
---|
171 | AddCollisionHandler(pelaaja1, "vihollinen", delegate(PhysicsObject A, PhysicsObject B) |
---|
172 | { |
---|
173 | Begin(); |
---|
174 | }); |
---|
175 | Add(pelaaja1); |
---|
176 | |
---|
177 | } |
---|
178 | |
---|
179 | void LisaaVihollinen(Vector paikka, double leveys, double korkeus) |
---|
180 | { |
---|
181 | vihollinen = new PlatformCharacter(leveys, korkeus); |
---|
182 | vihollinen.Position = paikka; |
---|
183 | vihollinen.Mass = 4.0; |
---|
184 | vihollinen.Image = vihollisenKuva; |
---|
185 | vihollinen.Shape = Shape.FromImage(vihollisenKuva); |
---|
186 | vihollinen.Tag = "vihollinen"; |
---|
187 | vihollinen.IgnoresGravity = true; |
---|
188 | Add(vihollinen); |
---|
189 | |
---|
190 | FollowerBrain aivot = new FollowerBrain("pelaaja"); |
---|
191 | vihollinen.Brain = aivot; |
---|
192 | |
---|
193 | } |
---|
194 | |
---|
195 | void LisaaNappaimet() |
---|
196 | { |
---|
197 | Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); |
---|
198 | Keyboard.Listen(Key.P, ButtonState.Pressed, TauotaPeli, "Tauko"); |
---|
199 | Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); |
---|
200 | |
---|
201 | Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus); |
---|
202 | Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus); |
---|
203 | Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus); |
---|
204 | |
---|
205 | ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä"); |
---|
206 | |
---|
207 | ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus); |
---|
208 | ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus); |
---|
209 | ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus); |
---|
210 | |
---|
211 | PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); |
---|
212 | } |
---|
213 | void TauotaPeli() |
---|
214 | { |
---|
215 | MessageDisplay.Add("Peli tauolla"); |
---|
216 | Pause(); |
---|
217 | } |
---|
218 | |
---|
219 | void Liikuta(PlatformCharacter hahmo, double nopeus) |
---|
220 | { |
---|
221 | hahmo.Walk(nopeus); |
---|
222 | } |
---|
223 | |
---|
224 | void Hyppaa(PlatformCharacter hahmo, double nopeus) |
---|
225 | { |
---|
226 | hahmo.Jump(nopeus); |
---|
227 | } |
---|
228 | |
---|
229 | void KeraaKarkki(PhysicsObject hahmo, PhysicsObject tahti) |
---|
230 | { |
---|
231 | maaliAani.Play(); |
---|
232 | MessageDisplay.Add("Keräsit karkin!"); |
---|
233 | tahti.Destroy(); |
---|
234 | pisteLaskuri.Value += 1; |
---|
235 | |
---|
236 | } |
---|
237 | } |
---|