Changeset View
Changeset View
Standalone View
Standalone View
src/activities/money/money.js
Show All 16 Lines | |||||
17 | * GNU General Public License for more details. | 17 | * GNU General Public License for more details. | ||
18 | * | 18 | * | ||
19 | * You should have received a copy of the GNU General Public License | 19 | * You should have received a copy of the GNU General Public License | ||
20 | * along with this program; if not, see <https://www.gnu.org/licenses/>. | 20 | * along with this program; if not, see <https://www.gnu.org/licenses/>. | ||
21 | */ | 21 | */ | ||
22 | .pragma library | 22 | .pragma library | ||
23 | .import "qrc:/gcompris/src/core/core.js" as Core | 23 | .import "qrc:/gcompris/src/core/core.js" as Core | ||
24 | .import GCompris 1.0 as GCompris | 24 | .import GCompris 1.0 as GCompris | ||
25 | .import "moneyConstants.js" as MoneyConstants | ||||
25 | 26 | | |||
26 | var url = "qrc:/gcompris/src/activities/money/resource/" | 27 | var url = "qrc:/gcompris/src/activities/money/resource/" | ||
27 | 28 | | |||
28 | // We create 3 prices categories to make the game more realistic. | 29 | // We create 3 prices categories to make the game more realistic. | ||
29 | // List of images to use in the game (cheap objects) | 30 | // List of images to use in the game (cheap objects) | ||
30 | var cheapObjects = [ | | |||
31 | "apple.svg", | | |||
32 | "orange.svg", | | |||
33 | "banane.svg", | | |||
34 | "pamplemousse.svg", | | |||
35 | "carot.svg", | | |||
36 | "cerise.svg", | | |||
37 | "cake.svg" | | |||
38 | ] | | |||
39 | | ||||
40 | var normalObjects = [ | | |||
41 | "umbrella.svg", | | |||
42 | "pencil.svg", | | |||
43 | "bottle.svg", | | |||
44 | "light.svg", | | |||
45 | "eggpot.svg" | | |||
46 | ] | | |||
47 | | ||||
48 | var expensiveObjects = [ | | |||
49 | "lamp.svg", | | |||
50 | "football.svg", | | |||
51 | "bicycle.svg" | | |||
52 | ] | | |||
53 | | ||||
54 | var moneyItems = { | | |||
55 | MONEY_EURO_COIN_1C: { img: "c1c.svg", val: 0.01 }, | | |||
56 | MONEY_EURO_COIN_2C: { img: "c2c.svg", val: 0.02 }, | | |||
57 | MONEY_EURO_COIN_5C: { img: "c5c.svg", val: 0.05 }, | | |||
58 | MONEY_EURO_COIN_10C: { img: "c10c.svg", val: 0.1 }, | | |||
59 | MONEY_EURO_COIN_20C: { img: "c20c.svg", val: 0.20 }, | | |||
60 | MONEY_EURO_COIN_50C: { img: "c50c.svg", val: 0.5 }, | | |||
61 | MONEY_EURO_COIN_1E: { img: "c1e.svg", val: 1.0 }, | | |||
62 | MONEY_EURO_COIN_2E: { img: "c2e.svg", val: 2.0 }, | | |||
63 | MONEY_EURO_PAPER_5E: { img: "n5e.svg", val: 5.0 }, | | |||
64 | MONEY_EURO_PAPER_10E: { img: "n10e.svg", val: 10.0 }, | | |||
65 | MONEY_EURO_PAPER_20E: { img: "n20e.svg", val: 20.0 }, | | |||
66 | MONEY_EURO_PAPER_50E: { img: "n50e.svg", val: 50.0 }, | | |||
67 | } | | |||
68 | | ||||
69 | var fullDataset = { | | |||
70 | WITHOUT_CENTS: [ | | |||
71 | { | | |||
72 | numberOfItem: 1, | | |||
73 | minPrice: 3, | | |||
74 | maxPrice: 10, | | |||
75 | pocket: [ | | |||
76 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
77 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
78 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
79 | moneyItems.MONEY_EURO_COIN_2E, | | |||
80 | moneyItems.MONEY_EURO_COIN_2E, | | |||
81 | moneyItems.MONEY_EURO_COIN_1E, | | |||
82 | moneyItems.MONEY_EURO_COIN_1E, | | |||
83 | moneyItems.MONEY_EURO_COIN_1E | | |||
84 | ] | | |||
85 | }, | | |||
86 | { | | |||
87 | numberOfItem: 1, | | |||
88 | minPrice: 10, | | |||
89 | maxPrice: 20, | | |||
90 | pocket: [ | | |||
91 | moneyItems.MONEY_EURO_PAPER_10E, | | |||
92 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
93 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
94 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
95 | moneyItems.MONEY_EURO_COIN_2E, | | |||
96 | moneyItems.MONEY_EURO_COIN_2E, | | |||
97 | moneyItems.MONEY_EURO_COIN_1E, | | |||
98 | moneyItems.MONEY_EURO_COIN_1E, | | |||
99 | moneyItems.MONEY_EURO_COIN_1E | | |||
100 | ] | | |||
101 | }, | | |||
102 | { | | |||
103 | numberOfItem: 2, | | |||
104 | minPrice: 20, | | |||
105 | maxPrice: 30, | | |||
106 | pocket: [ | | |||
107 | moneyItems.MONEY_EURO_PAPER_10E, | | |||
108 | moneyItems.MONEY_EURO_PAPER_10E, | | |||
109 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
110 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
111 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
112 | moneyItems.MONEY_EURO_COIN_2E, | | |||
113 | moneyItems.MONEY_EURO_COIN_2E, | | |||
114 | moneyItems.MONEY_EURO_COIN_1E, | | |||
115 | moneyItems.MONEY_EURO_COIN_1E, | | |||
116 | moneyItems.MONEY_EURO_COIN_1E | | |||
117 | ] | | |||
118 | }, | | |||
119 | { | | |||
120 | numberOfItem: 2, | | |||
121 | minPrice: 30, | | |||
122 | maxPrice: 40, | | |||
123 | pocket: [ | | |||
124 | moneyItems.MONEY_EURO_PAPER_10E, | | |||
125 | moneyItems.MONEY_EURO_PAPER_10E, | | |||
126 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
127 | moneyItems.MONEY_EURO_COIN_2E, | | |||
128 | moneyItems.MONEY_EURO_COIN_1E, | | |||
129 | moneyItems.MONEY_EURO_COIN_2E, | | |||
130 | moneyItems.MONEY_EURO_PAPER_10E, | | |||
131 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
132 | moneyItems.MONEY_EURO_COIN_1E, | | |||
133 | moneyItems.MONEY_EURO_COIN_1E | | |||
134 | ] | | |||
135 | }, | | |||
136 | { | | |||
137 | numberOfItem: 3, | | |||
138 | minPrice: 40, | | |||
139 | maxPrice: 50, | | |||
140 | pocket: [ | | |||
141 | moneyItems.MONEY_EURO_COIN_2E, | | |||
142 | moneyItems.MONEY_EURO_COIN_1E, | | |||
143 | moneyItems.MONEY_EURO_PAPER_10E, | | |||
144 | moneyItems.MONEY_EURO_PAPER_10E, | | |||
145 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
146 | moneyItems.MONEY_EURO_COIN_1E, | | |||
147 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
148 | moneyItems.MONEY_EURO_COIN_2E, | | |||
149 | moneyItems.MONEY_EURO_PAPER_20E, | | |||
150 | moneyItems.MONEY_EURO_COIN_1E | | |||
151 | ] | | |||
152 | }, | | |||
153 | { | | |||
154 | numberOfItem: 3, | | |||
155 | minPrice: 50, | | |||
156 | maxPrice: 60, | | |||
157 | pocket: [ | | |||
158 | moneyItems.MONEY_EURO_PAPER_10E, | | |||
159 | moneyItems.MONEY_EURO_PAPER_20E, | | |||
160 | moneyItems.MONEY_EURO_COIN_2E, | | |||
161 | moneyItems.MONEY_EURO_PAPER_20E, | | |||
162 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
163 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
164 | moneyItems.MONEY_EURO_COIN_2E, | | |||
165 | moneyItems.MONEY_EURO_COIN_1E, | | |||
166 | moneyItems.MONEY_EURO_COIN_1E, | | |||
167 | moneyItems.MONEY_EURO_COIN_1E | | |||
168 | ] | | |||
169 | }, | | |||
170 | { | | |||
171 | numberOfItem: 4, | | |||
172 | minPrice: 60, | | |||
173 | maxPrice: 70, | | |||
174 | pocket: [ | | |||
175 | moneyItems.MONEY_EURO_PAPER_50E, | | |||
176 | moneyItems.MONEY_EURO_PAPER_20E, | | |||
177 | moneyItems.MONEY_EURO_PAPER_10E, | | |||
178 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
179 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
180 | moneyItems.MONEY_EURO_COIN_2E, | | |||
181 | moneyItems.MONEY_EURO_COIN_2E, | | |||
182 | moneyItems.MONEY_EURO_COIN_1E, | | |||
183 | moneyItems.MONEY_EURO_COIN_1E, | | |||
184 | moneyItems.MONEY_EURO_COIN_1E | | |||
185 | ] | | |||
186 | }, | | |||
187 | { | | |||
188 | numberOfItem: 4, | | |||
189 | minPrice: 70, | | |||
190 | maxPrice: 80, | | |||
191 | pocket: [ | | |||
192 | moneyItems.MONEY_EURO_PAPER_50E, | | |||
193 | moneyItems.MONEY_EURO_PAPER_20E, | | |||
194 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
195 | moneyItems.MONEY_EURO_COIN_2E, | | |||
196 | moneyItems.MONEY_EURO_COIN_1E, | | |||
197 | moneyItems.MONEY_EURO_COIN_2E, | | |||
198 | moneyItems.MONEY_EURO_PAPER_10E, | | |||
199 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
200 | moneyItems.MONEY_EURO_COIN_1E, | | |||
201 | moneyItems.MONEY_EURO_COIN_1E | | |||
202 | ] | | |||
203 | }, | | |||
204 | { | | |||
205 | numberOfItem: 4, | | |||
206 | minPrice: 50, | | |||
207 | maxPrice: 100, | | |||
208 | pocket: [ | | |||
209 | moneyItems.MONEY_EURO_PAPER_10E, | | |||
210 | moneyItems.MONEY_EURO_COIN_2E, | | |||
211 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
212 | moneyItems.MONEY_EURO_COIN_1E, | | |||
213 | moneyItems.MONEY_EURO_COIN_1E, | | |||
214 | moneyItems.MONEY_EURO_COIN_2E, | | |||
215 | moneyItems.MONEY_EURO_PAPER_50E, | | |||
216 | moneyItems.MONEY_EURO_PAPER_20E, | | |||
217 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
218 | moneyItems.MONEY_EURO_PAPER_5E | | |||
219 | ] | | |||
220 | } | | |||
221 | ], | | |||
222 | | ||||
223 | WITH_CENTS: [ | | |||
224 | { | | |||
225 | numberOfItem: 1, | | |||
226 | minPrice: 1, | | |||
227 | maxPrice: 3, | | |||
228 | pocket: [ | | |||
229 | moneyItems.MONEY_EURO_COIN_2E, | | |||
230 | moneyItems.MONEY_EURO_COIN_1E, | | |||
231 | moneyItems.MONEY_EURO_COIN_5C, | | |||
232 | moneyItems.MONEY_EURO_COIN_2C, | | |||
233 | moneyItems.MONEY_EURO_COIN_20C, | | |||
234 | moneyItems.MONEY_EURO_COIN_50C, | | |||
235 | moneyItems.MONEY_EURO_COIN_20C, | | |||
236 | moneyItems.MONEY_EURO_COIN_10C, | | |||
237 | moneyItems.MONEY_EURO_COIN_1C, | | |||
238 | moneyItems.MONEY_EURO_COIN_1C, | | |||
239 | ] | | |||
240 | }, | | |||
241 | { | | |||
242 | numberOfItem: 1, | | |||
243 | minPrice: 1, | | |||
244 | maxPrice: 3, | | |||
245 | pocket: [ | | |||
246 | moneyItems.MONEY_EURO_COIN_2E, | | |||
247 | moneyItems.MONEY_EURO_COIN_1E, | | |||
248 | moneyItems.MONEY_EURO_COIN_5C, | | |||
249 | moneyItems.MONEY_EURO_COIN_2C, | | |||
250 | moneyItems.MONEY_EURO_COIN_20C, | | |||
251 | moneyItems.MONEY_EURO_COIN_50C, | | |||
252 | moneyItems.MONEY_EURO_COIN_20C, | | |||
253 | moneyItems.MONEY_EURO_COIN_10C, | | |||
254 | moneyItems.MONEY_EURO_COIN_1C, | | |||
255 | moneyItems.MONEY_EURO_COIN_1C | | |||
256 | ] | | |||
257 | }, | | |||
258 | { | | |||
259 | numberOfItem: 2, | | |||
260 | minPrice: 1, | | |||
261 | maxPrice: 3, | | |||
262 | pocket: [ | | |||
263 | moneyItems.MONEY_EURO_COIN_2E, | | |||
264 | moneyItems.MONEY_EURO_COIN_1E, | | |||
265 | moneyItems.MONEY_EURO_COIN_5C, | | |||
266 | moneyItems.MONEY_EURO_COIN_2C, | | |||
267 | moneyItems.MONEY_EURO_COIN_20C, | | |||
268 | moneyItems.MONEY_EURO_COIN_50C, | | |||
269 | moneyItems.MONEY_EURO_COIN_20C, | | |||
270 | moneyItems.MONEY_EURO_COIN_10C, | | |||
271 | moneyItems.MONEY_EURO_COIN_1C, | | |||
272 | moneyItems.MONEY_EURO_COIN_1C, | | |||
273 | ] | | |||
274 | }, | | |||
275 | { | | |||
276 | numberOfItem: 3, | | |||
277 | minPrice: 1, | | |||
278 | maxPrice: 3, | | |||
279 | pocket: [ | | |||
280 | moneyItems.MONEY_EURO_COIN_2E, | | |||
281 | moneyItems.MONEY_EURO_COIN_1E, | | |||
282 | moneyItems.MONEY_EURO_COIN_5C, | | |||
283 | moneyItems.MONEY_EURO_COIN_2C, | | |||
284 | moneyItems.MONEY_EURO_COIN_20C, | | |||
285 | moneyItems.MONEY_EURO_COIN_50C, | | |||
286 | moneyItems.MONEY_EURO_COIN_20C, | | |||
287 | moneyItems.MONEY_EURO_COIN_10C, | | |||
288 | moneyItems.MONEY_EURO_COIN_1C, | | |||
289 | moneyItems.MONEY_EURO_COIN_1C | | |||
290 | ] | | |||
291 | }, | | |||
292 | { | | |||
293 | numberOfItem: 4, | | |||
294 | minPrice: 0, | | |||
295 | maxPrice: 4, | | |||
296 | pocket: [ | | |||
297 | moneyItems.MONEY_EURO_COIN_2E, | | |||
298 | moneyItems.MONEY_EURO_COIN_1E, | | |||
299 | moneyItems.MONEY_EURO_COIN_5C, | | |||
300 | moneyItems.MONEY_EURO_COIN_2C, | | |||
301 | moneyItems.MONEY_EURO_COIN_20C, | | |||
302 | moneyItems.MONEY_EURO_COIN_50C, | | |||
303 | moneyItems.MONEY_EURO_COIN_20C, | | |||
304 | moneyItems.MONEY_EURO_COIN_10C, | | |||
305 | moneyItems.MONEY_EURO_COIN_1C, | | |||
306 | moneyItems.MONEY_EURO_COIN_1C, | | |||
307 | ] | | |||
308 | } | | |||
309 | ], | | |||
310 | | ||||
311 | BACK_WITHOUT_CENTS: [ | | |||
312 | { | | |||
313 | numberOfItem: 1, | | |||
314 | minPrice: 3, | | |||
315 | maxPrice: 9, | | |||
316 | paid: 10, | | |||
317 | pocket: [ | | |||
318 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
319 | moneyItems.MONEY_EURO_COIN_2E, | | |||
320 | moneyItems.MONEY_EURO_COIN_1E, | | |||
321 | moneyItems.MONEY_EURO_COIN_2E, | | |||
322 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
323 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
324 | moneyItems.MONEY_EURO_COIN_1E, | | |||
325 | moneyItems.MONEY_EURO_COIN_1E, | | |||
326 | ] | | |||
327 | }, | | |||
328 | { | | |||
329 | numberOfItem: 1, | | |||
330 | minPrice: 1, | | |||
331 | maxPrice: 19, | | |||
332 | paid: 20, | | |||
333 | pocket: [ | | |||
334 | moneyItems.MONEY_EURO_PAPER_10E, | | |||
335 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
336 | moneyItems.MONEY_EURO_COIN_2E, | | |||
337 | moneyItems.MONEY_EURO_COIN_1E, | | |||
338 | moneyItems.MONEY_EURO_COIN_2E, | | |||
339 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
340 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
341 | moneyItems.MONEY_EURO_COIN_1E, | | |||
342 | moneyItems.MONEY_EURO_COIN_1E | | |||
343 | ] | | |||
344 | }, | | |||
345 | { | | |||
346 | numberOfItem: 2, | | |||
347 | minPrice: 2, | | |||
348 | maxPrice: 29, | | |||
349 | paid: 30, | | |||
350 | pocket: [ | | |||
351 | moneyItems.MONEY_EURO_PAPER_10E, | | |||
352 | moneyItems.MONEY_EURO_PAPER_10E, | | |||
353 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
354 | moneyItems.MONEY_EURO_COIN_2E, | | |||
355 | moneyItems.MONEY_EURO_COIN_1E, | | |||
356 | moneyItems.MONEY_EURO_COIN_2E, | | |||
357 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
358 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
359 | moneyItems.MONEY_EURO_COIN_1E, | | |||
360 | moneyItems.MONEY_EURO_COIN_1E | | |||
361 | ] | | |||
362 | }, | | |||
363 | { | | |||
364 | numberOfItem: 2, | | |||
365 | minPrice: 2, | | |||
366 | maxPrice: 39, | | |||
367 | paid: 40, | | |||
368 | pocket: [ | | |||
369 | moneyItems.MONEY_EURO_PAPER_10E, | | |||
370 | moneyItems.MONEY_EURO_PAPER_10E, | | |||
371 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
372 | moneyItems.MONEY_EURO_COIN_2E, | | |||
373 | moneyItems.MONEY_EURO_COIN_1E, | | |||
374 | moneyItems.MONEY_EURO_COIN_2E, | | |||
375 | moneyItems.MONEY_EURO_PAPER_10E, | | |||
376 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
377 | moneyItems.MONEY_EURO_COIN_1E, | | |||
378 | moneyItems.MONEY_EURO_COIN_1E | | |||
379 | ] | | |||
380 | }, | | |||
381 | { | | |||
382 | numberOfItem: 3, | | |||
383 | minPrice: 3, | | |||
384 | maxPrice: 49, | | |||
385 | paid: 50, | | |||
386 | pocket: [ | | |||
387 | moneyItems.MONEY_EURO_COIN_2E, | | |||
388 | moneyItems.MONEY_EURO_COIN_1E, | | |||
389 | moneyItems.MONEY_EURO_PAPER_10E, | | |||
390 | moneyItems.MONEY_EURO_PAPER_10E, | | |||
391 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
392 | moneyItems.MONEY_EURO_COIN_1E, | | |||
393 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
394 | moneyItems.MONEY_EURO_COIN_2E, | | |||
395 | moneyItems.MONEY_EURO_PAPER_20E, | | |||
396 | moneyItems.MONEY_EURO_COIN_1E | | |||
397 | ] | | |||
398 | }, | | |||
399 | { | | |||
400 | numberOfItem: 3, | | |||
401 | minPrice: 3, | | |||
402 | maxPrice: 60, | | |||
403 | paid: 100, | | |||
404 | pocket: [ | | |||
405 | moneyItems.MONEY_EURO_PAPER_10E, | | |||
406 | moneyItems.MONEY_EURO_PAPER_50E, | | |||
407 | moneyItems.MONEY_EURO_COIN_2E, | | |||
408 | moneyItems.MONEY_EURO_PAPER_20E, | | |||
409 | moneyItems.MONEY_EURO_PAPER_20E, | | |||
410 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
411 | moneyItems.MONEY_EURO_COIN_2E, | | |||
412 | moneyItems.MONEY_EURO_COIN_1E, | | |||
413 | moneyItems.MONEY_EURO_COIN_1E, | | |||
414 | moneyItems.MONEY_EURO_COIN_1E | | |||
415 | ] | | |||
416 | }, | | |||
417 | { | | |||
418 | numberOfItem: 4, | | |||
419 | minPrice: 4, | | |||
420 | maxPrice: 70, | | |||
421 | paid: 100, | | |||
422 | pocket: [ | | |||
423 | moneyItems.MONEY_EURO_PAPER_10E, | | |||
424 | moneyItems.MONEY_EURO_PAPER_50E, | | |||
425 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
426 | moneyItems.MONEY_EURO_COIN_1E, | | |||
427 | moneyItems.MONEY_EURO_PAPER_10E, | | |||
428 | moneyItems.MONEY_EURO_PAPER_20E, | | |||
429 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
430 | moneyItems.MONEY_EURO_COIN_2E, | | |||
431 | moneyItems.MONEY_EURO_COIN_1E, | | |||
432 | moneyItems.MONEY_EURO_COIN_1E | | |||
433 | ] | | |||
434 | }, | | |||
435 | { | | |||
436 | numberOfItem: 4, | | |||
437 | minPrice: 4, | | |||
438 | maxPrice: 80, | | |||
439 | paid: 100, | | |||
440 | pocket: [ | | |||
441 | moneyItems.MONEY_EURO_PAPER_50E, | | |||
442 | moneyItems.MONEY_EURO_PAPER_20E, | | |||
443 | moneyItems.MONEY_EURO_PAPER_10E, | | |||
444 | moneyItems.MONEY_EURO_COIN_2E, | | |||
445 | moneyItems.MONEY_EURO_COIN_1E, | | |||
446 | moneyItems.MONEY_EURO_COIN_2E, | | |||
447 | moneyItems.MONEY_EURO_PAPER_10E, | | |||
448 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
449 | moneyItems.MONEY_EURO_COIN_1E, | | |||
450 | moneyItems.MONEY_EURO_COIN_1E | | |||
451 | ] | | |||
452 | }, | | |||
453 | { | | |||
454 | numberOfItem: 4, | | |||
455 | minPrice: 4, | | |||
456 | maxPrice: 99, | | |||
457 | paid: 100, | | |||
458 | pocket: [ | | |||
459 | moneyItems.MONEY_EURO_PAPER_10E, | | |||
460 | moneyItems.MONEY_EURO_COIN_2E, | | |||
461 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
462 | moneyItems.MONEY_EURO_COIN_1E, | | |||
463 | moneyItems.MONEY_EURO_COIN_1E, | | |||
464 | moneyItems.MONEY_EURO_COIN_2E, | | |||
465 | moneyItems.MONEY_EURO_PAPER_50E, | | |||
466 | moneyItems.MONEY_EURO_PAPER_20E, | | |||
467 | moneyItems.MONEY_EURO_PAPER_5E, | | |||
468 | moneyItems.MONEY_EURO_PAPER_5E | | |||
469 | ] | | |||
470 | } | | |||
471 | ], | | |||
472 | | ||||
473 | BACK_WITH_CENTS: [ | | |||
474 | { | | |||
475 | numberOfItem: 1, | | |||
476 | minPrice: 1, | | |||
477 | maxPrice: 3, | | |||
478 | paid: 5, | | |||
479 | pocket: [ | | |||
480 | moneyItems.MONEY_EURO_COIN_2E, | | |||
481 | moneyItems.MONEY_EURO_COIN_1E, | | |||
482 | moneyItems.MONEY_EURO_COIN_5C, | | |||
483 | moneyItems.MONEY_EURO_COIN_2C, | | |||
484 | moneyItems.MONEY_EURO_COIN_20C, | | |||
485 | moneyItems.MONEY_EURO_COIN_50C, | | |||
486 | moneyItems.MONEY_EURO_COIN_20C, | | |||
487 | moneyItems.MONEY_EURO_COIN_10C, | | |||
488 | moneyItems.MONEY_EURO_COIN_1C, | | |||
489 | moneyItems.MONEY_EURO_COIN_1C | | |||
490 | ] | | |||
491 | }, | | |||
492 | { | | |||
493 | numberOfItem: 1, | | |||
494 | minPrice: 1, | | |||
495 | maxPrice: 3, | | |||
496 | paid: 5, | | |||
497 | pocket: [ | | |||
498 | moneyItems.MONEY_EURO_COIN_2E, | | |||
499 | moneyItems.MONEY_EURO_COIN_1E, | | |||
500 | moneyItems.MONEY_EURO_COIN_5C, | | |||
501 | moneyItems.MONEY_EURO_COIN_2C, | | |||
502 | moneyItems.MONEY_EURO_COIN_20C, | | |||
503 | moneyItems.MONEY_EURO_COIN_50C, | | |||
504 | moneyItems.MONEY_EURO_COIN_20C, | | |||
505 | moneyItems.MONEY_EURO_COIN_10C, | | |||
506 | moneyItems.MONEY_EURO_COIN_1C, | | |||
507 | moneyItems.MONEY_EURO_COIN_1C | | |||
508 | ] | | |||
509 | }, | | |||
510 | { | | |||
511 | numberOfItem: 2, | | |||
512 | minPrice: 1, | | |||
513 | maxPrice: 3, | | |||
514 | paid: 5, | | |||
515 | pocket: [ | | |||
516 | moneyItems.MONEY_EURO_COIN_2E, | | |||
517 | moneyItems.MONEY_EURO_COIN_1E, | | |||
518 | moneyItems.MONEY_EURO_COIN_5C, | | |||
519 | moneyItems.MONEY_EURO_COIN_2C, | | |||
520 | moneyItems.MONEY_EURO_COIN_20C, | | |||
521 | moneyItems.MONEY_EURO_COIN_50C, | | |||
522 | moneyItems.MONEY_EURO_COIN_20C, | | |||
523 | moneyItems.MONEY_EURO_COIN_10C, | | |||
524 | moneyItems.MONEY_EURO_COIN_1C, | | |||
525 | moneyItems.MONEY_EURO_COIN_1C | | |||
526 | ] | | |||
527 | }, | | |||
528 | { | | |||
529 | numberOfItem: 3, | | |||
530 | minPrice: 1, | | |||
531 | maxPrice: 3, | | |||
532 | paid: 5, | | |||
533 | pocket: [ | | |||
534 | moneyItems.MONEY_EURO_COIN_2E, | | |||
535 | moneyItems.MONEY_EURO_COIN_1E, | | |||
536 | moneyItems.MONEY_EURO_COIN_5C, | | |||
537 | moneyItems.MONEY_EURO_COIN_2C, | | |||
538 | moneyItems.MONEY_EURO_COIN_20C, | | |||
539 | moneyItems.MONEY_EURO_COIN_50C, | | |||
540 | moneyItems.MONEY_EURO_COIN_20C, | | |||
541 | moneyItems.MONEY_EURO_COIN_10C, | | |||
542 | moneyItems.MONEY_EURO_COIN_1C, | | |||
543 | moneyItems.MONEY_EURO_COIN_1C | | |||
544 | ] | | |||
545 | }, | | |||
546 | { | | |||
547 | numberOfItem: 4, | | |||
548 | minPrice: 0, | | |||
549 | maxPrice: 4, | | |||
550 | paid: 5, | | |||
551 | pocket: [ | | |||
552 | moneyItems.MONEY_EURO_COIN_2E, | | |||
553 | moneyItems.MONEY_EURO_COIN_1E, | | |||
554 | moneyItems.MONEY_EURO_COIN_5C, | | |||
555 | moneyItems.MONEY_EURO_COIN_2C, | | |||
556 | moneyItems.MONEY_EURO_COIN_20C, | | |||
557 | moneyItems.MONEY_EURO_COIN_50C, | | |||
558 | moneyItems.MONEY_EURO_COIN_20C, | | |||
559 | moneyItems.MONEY_EURO_COIN_10C, | | |||
560 | moneyItems.MONEY_EURO_COIN_1C, | | |||
561 | moneyItems.MONEY_EURO_COIN_1C | | |||
562 | ] | | |||
563 | } | | |||
564 | ] | | |||
565 | } | | |||
566 | 31 | | |||
567 | var currentLevel | 32 | var currentLevel | ||
568 | var numberOfLevel | 33 | var numberOfLevel | ||
569 | var dataset | 34 | var dataset | ||
570 | var items | 35 | var items | ||
571 | var centsMode | 36 | var centsMode | ||
572 | var backMode | 37 | var backMode | ||
573 | var priceTotal | 38 | var priceTotal | ||
574 | 39 | | |||
575 | function start(items_, datasetName) { | 40 | function start(items_, datasetName) { | ||
576 | items = items_ | 41 | items = items_ | ||
577 | 42 | dataset = items.levels | |||
578 | switch(datasetName) { | 43 | switch(datasetName) { | ||
579 | case "WITHOUT_CENTS": | 44 | case "WITHOUT_CENTS": | ||
580 | dataset = fullDataset.WITHOUT_CENTS | | |||
581 | centsMode = false | 45 | centsMode = false | ||
582 | backMode = false | 46 | backMode = false | ||
583 | break | 47 | break | ||
584 | case "WITH_CENTS": | 48 | case "WITH_CENTS": | ||
585 | dataset = fullDataset.WITH_CENTS | | |||
586 | centsMode = true | 49 | centsMode = true | ||
587 | backMode = false | 50 | backMode = false | ||
588 | break | 51 | break | ||
589 | case "BACK_WITHOUT_CENTS": | 52 | case "BACK_WITHOUT_CENTS": | ||
590 | dataset = fullDataset.BACK_WITHOUT_CENTS | | |||
591 | centsMode = false | 53 | centsMode = false | ||
592 | backMode = true | 54 | backMode = true | ||
593 | break | 55 | break | ||
594 | case "BACK_WITH_CENTS": | 56 | case "BACK_WITH_CENTS": | ||
595 | dataset = fullDataset.BACK_WITH_CENTS | | |||
596 | centsMode = true | 57 | centsMode = true | ||
597 | backMode = true | 58 | backMode = true | ||
598 | break | 59 | break | ||
599 | } | 60 | } | ||
600 | | ||||
601 | currentLevel = 0 | 61 | currentLevel = 0 | ||
602 | numberOfLevel = dataset.length | 62 | numberOfLevel = dataset.length | ||
603 | initLevel() | 63 | initLevel() | ||
604 | } | 64 | } | ||
605 | 65 | | |||
606 | function stop() { | 66 | function stop() { | ||
607 | } | 67 | } | ||
608 | 68 | | |||
69 | function getCoinCount (pocket) { | ||||
scagarwal: Remove the space between Function Name and Parameters. | |||||
70 | var count = 0 | ||||
71 | for(var i = 0; i < pocket.length; i++) { | ||||
72 | if(pocket[i].val <= 2) | ||||
73 | count++ | ||||
74 | } | ||||
75 | return count; | ||||
76 | } | ||||
77 | | ||||
609 | function initLevel() { | 78 | function initLevel() { | ||
610 | items.bar.level = currentLevel + 1 | 79 | items.bar.level = currentLevel + 1 | ||
611 | | ||||
612 | items.answerModel.clear() | 80 | items.answerModel.clear() | ||
613 | items.pocketModel.clear() | 81 | items.pocketModel.clear() | ||
614 | 82 | | |||
615 | var data = dataset[currentLevel] | 83 | var data = dataset[currentLevel] | ||
616 | var pocket = Core.shuffle(data.pocket) | 84 | var pocket = Core.shuffle(data.pocket) | ||
617 | for (var i in pocket) | 85 | var coinCount = getCoinCount(pocket) | ||
86 | items.pocketRows = (((data.pocket.length - coinCount / 2) > 9) ? 3 : 2) | ||||
87 | | ||||
88 | for(var i = 0; i < pocket.length; i++) | ||||
618 | items.pocketModel.append(pocket[i]) | 89 | items.pocketModel.append(pocket[i]) | ||
619 | 90 | | |||
620 | // fill up the store in a random way | 91 | // fill up the store in a random way | ||
621 | var storeModel = new Array() | 92 | var storeModel = new Array() | ||
622 | priceTotal = Math.floor(data.minPrice + Math.random() * | 93 | priceTotal = Math.floor(data.minPrice + Math.random() * | ||
623 | (data.maxPrice - data.minPrice)) | 94 | (data.maxPrice - data.minPrice)) | ||
624 | var priceCounter = 0 | 95 | var priceCounter = 0 | ||
625 | for(var i = 0; i < data.numberOfItem; i++) { | 96 | for(var i = 0; i < data.numberOfItem; i++) { | ||
626 | var price | 97 | var price | ||
627 | if(i < data.numberOfItem - 1) | 98 | if(i < data.numberOfItem - 1) | ||
628 | // Calc a random price for each item based on the previous prices | 99 | // Calc a random price for each item based on the previous prices | ||
629 | price = Math.floor((centsMode ? 0 : 1) + | 100 | price = Math.floor((centsMode ? 0 : 1) + | ||
630 | Math.random() * | 101 | Math.random() * | ||
631 | ((priceTotal - priceCounter) / data.numberOfItem)) | 102 | (2 * (priceTotal - priceCounter) / data.numberOfItem)) | ||
632 | else | 103 | else | ||
633 | // Put the remaining missing price on the last item | 104 | // Put the remaining missing price on the last item | ||
634 | price = priceTotal - priceCounter | 105 | price = priceTotal - priceCounter | ||
635 | 106 | | |||
636 | var cents = 0 | 107 | var cents = 0 | ||
637 | if(centsMode) { | 108 | if(centsMode) { | ||
638 | if(currentLevel === 0) | 109 | if(currentLevel === 0) | ||
639 | cents += 0.10 + Math.floor(Math.random() * 9) / 10 | 110 | cents += 0.10 + Math.floor(Math.random() * 9) / 10 | ||
Show All 20 Lines | |||||
660 | } | 131 | } | ||
661 | items.store.model = storeModel | 132 | items.store.model = storeModel | ||
662 | 133 | | |||
663 | if(!backMode) { | 134 | if(!backMode) { | ||
664 | items.instructions.text = | 135 | items.instructions.text = | ||
665 | qsTr("Click on the coins or paper money at the bottom of the screen to pay." + | 136 | qsTr("Click on the coins or paper money at the bottom of the screen to pay." + | ||
666 | " If you want to remove a coin or note, click on it on the upper screen area.") | 137 | " If you want to remove a coin or note, click on it on the upper screen area.") | ||
667 | } else { | 138 | } else { | ||
668 | var tuxMoney | 139 | var availableCurrency = pocket.slice() | ||
669 | switch(data.paid) { | 140 | availableCurrency.sort(function sort(a, b) { return b.val - a.val }); | ||
670 | case 5: | 141 | var amountToBeCovered = data.paid | ||
671 | tuxMoney = [moneyItems.MONEY_EURO_PAPER_5E] | 142 | var tuxMoney = [] | ||
672 | break | 143 | while(amountToBeCovered > 0) { | ||
673 | case 10: | 144 | var maxPossible = 0 | ||
674 | tuxMoney = [moneyItems.MONEY_EURO_PAPER_10E] | 145 | for(var i = 0; i < availableCurrency.length; i++) { | ||
675 | break | 146 | if((availableCurrency[i].val <= amountToBeCovered)) { | ||
676 | case 20: | 147 | maxPossible = availableCurrency[i] | ||
677 | tuxMoney = [moneyItems.MONEY_EURO_PAPER_20E] | 148 | break; | ||
678 | break | 149 | } | ||
679 | case 30: | 150 | } | ||
680 | tuxMoney = [moneyItems.MONEY_EURO_PAPER_20E, moneyItems.MONEY_EURO_PAPER_10E] | 151 | tuxMoney.push(maxPossible) | ||
681 | break | 152 | amountToBeCovered -= maxPossible.val; | ||
682 | case 40: | | |||
683 | tuxMoney = [moneyItems.MONEY_EURO_PAPER_20E, moneyItems.MONEY_EURO_PAPER_20E] | | |||
684 | break | | |||
685 | case 50: | | |||
686 | tuxMoney = [moneyItems.MONEY_EURO_PAPER_50E] | | |||
687 | break | | |||
688 | case 100: | | |||
689 | tuxMoney = [moneyItems.MONEY_EURO_PAPER_50E, moneyItems.MONEY_EURO_PAPER_50E] | | |||
690 | break | | |||
691 | } | 153 | } | ||
692 | items.tuxMoney.model = tuxMoney | 154 | items.tuxMoney.model = tuxMoney | ||
693 | 155 | | |||
694 | var tuxTotal = 0 | 156 | var tuxTotal = 0 | ||
695 | for(var i=0; i < tuxMoney.length; i++) | 157 | for(var i=0; i < tuxMoney.length; i++) | ||
696 | tuxTotal += tuxMoney[i].val | 158 | tuxTotal += tuxMoney[i].val | ||
697 | 159 | | |||
698 | var locale = GCompris.ApplicationSettings.locale | 160 | var locale = GCompris.ApplicationSettings.locale | ||
Show All 16 Lines | |||||
715 | //Keyboard reset | 177 | //Keyboard reset | ||
716 | items.itemIndex = -1 | 178 | items.itemIndex = -1 | ||
717 | items.selectedArea = items.pocket | 179 | items.selectedArea = items.pocket | ||
718 | 180 | | |||
719 | } | 181 | } | ||
720 | 182 | | |||
721 | // Given a price return a random object | 183 | // Given a price return a random object | ||
722 | function getRandomObject(price) { | 184 | function getRandomObject(price) { | ||
723 | var list | 185 | var objectList | ||
@AkshayCHD The code misses starting and closing braces. Do add them. scagarwal: @AkshayCHD The code misses starting and closing braces. Do add them. | |||||
724 | if(price < 5) | 186 | if(price < 5) | ||
725 | list = cheapObjects | 187 | objectList = MoneyConstants.cheapObjects | ||
726 | else if(price < 10) | 188 | else if(price < 10) | ||
727 | list = normalObjects | 189 | objectList = MoneyConstants.normalObjects | ||
728 | else | 190 | else | ||
729 | list = expensiveObjects | 191 | objectList = MoneyConstants.expensiveObjects | ||
730 | 192 | | |||
731 | return list[Math.floor(Math.random() * list.length)] | 193 | return objectList[Math.floor(Math.random() * objectList.length)] | ||
732 | } | 194 | } | ||
733 | 195 | | |||
734 | function checkAnswer() { | 196 | function checkAnswer() { | ||
735 | var paid = 0 | 197 | var paid = 0 | ||
736 | for (var i = 0; i < items.answerModel.count; ++i) | 198 | for (var i = 0; i < items.answerModel.count; ++i) | ||
737 | paid += items.answerModel.get(i).val | 199 | paid += items.answerModel.get(i).val | ||
738 | 200 | | |||
739 | paid = paid.toFixed(2) | 201 | paid = paid.toFixed(2) | ||
▲ Show 20 Lines • Show All 45 Lines • Show Last 20 Lines |
Remove the space between Function Name and Parameters.