Marquesduque commited on
Commit
10bda5a
·
verified ·
1 Parent(s): d2f6889

Add 3 files

Browse files
Files changed (3) hide show
  1. README.md +7 -5
  2. index.html +915 -19
  3. prompts.txt +5 -0
README.md CHANGED
@@ -1,10 +1,12 @@
1
  ---
2
- title: Eng
3
- emoji: 📉
4
- colorFrom: gray
5
- colorTo: indigo
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: eng
3
+ emoji: 🐳
4
+ colorFrom: red
5
+ colorTo: gray
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite
10
  ---
11
 
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
index.html CHANGED
@@ -1,19 +1,915 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="pt-br">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Cacau Adventure - Jogo de Treinamento</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
9
+ <style>
10
+ @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;600;700&display=swap');
11
+
12
+ body {
13
+ font-family: 'Poppins', sans-serif;
14
+ overflow-x: hidden;
15
+ background-color: #f5f5f5;
16
+ }
17
+
18
+ .game-container {
19
+ position: relative;
20
+ height: 100vh;
21
+ width: 100%;
22
+ overflow: hidden;
23
+ background: linear-gradient(to bottom, #FFF3E0, #FFE0B2);
24
+ }
25
+
26
+ .platform {
27
+ position: absolute;
28
+ background: linear-gradient(to right, #5D4037, #8D6E63);
29
+ border-radius: 10px;
30
+ box-shadow: 0 4px 8px rgba(0,0,0,0.3);
31
+ }
32
+
33
+ .character {
34
+ position: absolute;
35
+ width: 60px;
36
+ height: 80px;
37
+ transition: all 0.3s ease;
38
+ z-index: 10;
39
+ }
40
+
41
+ .chocolate {
42
+ position: absolute;
43
+ width: 30px;
44
+ height: 30px;
45
+ background: linear-gradient(to bottom, #5D4037, #3E2723);
46
+ border-radius: 5px;
47
+ box-shadow: 0 2px 4px rgba(0,0,0,0.3);
48
+ z-index: 5;
49
+ }
50
+
51
+ .customer {
52
+ position: absolute;
53
+ width: 40px;
54
+ height: 60px;
55
+ background: linear-gradient(to bottom, #4FC3F7, #0288D1);
56
+ border-radius: 5px 5px 0 0;
57
+ z-index: 5;
58
+ display: flex;
59
+ justify-content: center;
60
+ }
61
+
62
+ .customer:after {
63
+ content: "";
64
+ position: absolute;
65
+ top: -10px;
66
+ width: 20px;
67
+ height: 10px;
68
+ background: #FFCDD2;
69
+ border-radius: 50% 50% 0 0;
70
+ }
71
+
72
+ .checkpoint {
73
+ position: absolute;
74
+ width: 40px;
75
+ height: 40px;
76
+ background: radial-gradient(circle, #FFD700, #FFC400);
77
+ border-radius: 50%;
78
+ box-shadow: 0 0 10px #FFD700;
79
+ z-index: 5;
80
+ display: flex;
81
+ align-items: center;
82
+ justify-content: center;
83
+ color: white;
84
+ font-weight: bold;
85
+ }
86
+
87
+ .level-indicator {
88
+ position: fixed;
89
+ top: 20px;
90
+ left: 20px;
91
+ background: rgba(255, 255, 255, 0.9);
92
+ padding: 10px 15px;
93
+ border-radius: 20px;
94
+ font-weight: bold;
95
+ box-shadow: 0 2px 5px rgba(0,0,0,0.2);
96
+ z-index: 100;
97
+ display: flex;
98
+ align-items: center;
99
+ }
100
+
101
+ .progress-container {
102
+ position: fixed;
103
+ top: 20px;
104
+ left: 50%;
105
+ transform: translateX(-50%);
106
+ width: 60%;
107
+ background: rgba(255, 255, 255, 0.9);
108
+ padding: 8px 15px;
109
+ border-radius: 20px;
110
+ box-shadow: 0 2px 5px rgba(0,0,0,0.2);
111
+ z-index: 100;
112
+ }
113
+
114
+ .progress-bar {
115
+ height: 10px;
116
+ background: #E0E0E0;
117
+ border-radius: 5px;
118
+ overflow: hidden;
119
+ margin-top: 5px;
120
+ }
121
+
122
+ .progress-fill {
123
+ height: 100%;
124
+ background: linear-gradient(to right, #FF9800, #F57C00);
125
+ transition: width 0.3s ease;
126
+ }
127
+
128
+ .challenge-popup {
129
+ position: fixed;
130
+ top: 50%;
131
+ left: 50%;
132
+ transform: translate(-50%, -50%);
133
+ background: white;
134
+ padding: 20px;
135
+ border-radius: 15px;
136
+ box-shadow: 0 8px 30px rgba(0,0,0,0.2);
137
+ z-index: 200;
138
+ width: 90%;
139
+ max-width: 500px;
140
+ max-height: 90vh;
141
+ overflow-y: auto;
142
+ animation: fadeIn 0.3s ease-out;
143
+ }
144
+
145
+ .customer-popup {
146
+ position: fixed;
147
+ bottom: 20px;
148
+ left: 50%;
149
+ transform: translateX(-50%);
150
+ background: white;
151
+ padding: 15px;
152
+ border-radius: 10px;
153
+ box-shadow: 0 4px 15px rgba(0,0,0,0.2);
154
+ z-index: 100;
155
+ max-width: 90%;
156
+ text-align: center;
157
+ animation: slideUp 0.3s ease-out;
158
+ }
159
+
160
+ @keyframes slideUp {
161
+ from { transform: translate(-50%, 100px); opacity: 0; }
162
+ to { transform: translate(-50%, 0); opacity: 1; }
163
+ }
164
+
165
+ @keyframes fadeIn {
166
+ from { opacity: 0; transform: translate(-50%, -40%); }
167
+ to { opacity: 1; transform: translate(-50%, -50%); }
168
+ }
169
+
170
+ .jump-animation {
171
+ animation: jump 0.5s ease;
172
+ }
173
+
174
+ @keyframes jump {
175
+ 0% { transform: translateY(0); }
176
+ 50% { transform: translateY(-50px); }
177
+ 100% { transform: translateY(0); }
178
+ }
179
+
180
+ .collect-animation {
181
+ animation: collect 0.5s ease forwards;
182
+ }
183
+
184
+ @keyframes collect {
185
+ 0% { transform: scale(1); }
186
+ 50% { transform: scale(1.5); }
187
+ 100% { transform: scale(0); opacity: 0; }
188
+ }
189
+
190
+ .completed-level {
191
+ position: absolute;
192
+ width: 100%;
193
+ height: 100%;
194
+ background: rgba(76, 175, 80, 0.9);
195
+ display: flex;
196
+ flex-direction: column;
197
+ justify-content: center;
198
+ align-items: center;
199
+ color: white;
200
+ z-index: 150;
201
+ animation: fadeIn 0.5s ease;
202
+ }
203
+
204
+ .feedback-form {
205
+ background: white;
206
+ padding: 20px;
207
+ border-radius: 10px;
208
+ width: 90%;
209
+ max-width: 500px;
210
+ margin-top: 20px;
211
+ }
212
+
213
+ .hidden {
214
+ display: none !important;
215
+ }
216
+
217
+ .shake {
218
+ animation: shake 0.5s;
219
+ }
220
+
221
+ @keyframes shake {
222
+ 0%, 100% { transform: translateX(0); }
223
+ 10%, 30%, 50%, 70%, 90% { transform: translateX(-5px); }
224
+ 20%, 40%, 60%, 80% { transform: translateX(5px); }
225
+ }
226
+
227
+ .floating {
228
+ animation: floating 3s ease-in-out infinite;
229
+ }
230
+
231
+ @keyframes floating {
232
+ 0%, 100% { transform: translateY(0); }
233
+ 50% { transform: translateY(-10px); }
234
+ }
235
+ </style>
236
+ </head>
237
+ <body>
238
+ <div class="game-container" id="gameContainer">
239
+ <div class="level-indicator">
240
+ <i class="fas fa-star mr-2 text-yellow-500"></i>
241
+ <span>Nível: <span id="currentLevel">1</span> - <span id="levelName">Loja de Chocolate</span></span>
242
+ </div>
243
+
244
+ <div class="progress-container">
245
+ <div class="flex justify-between text-sm font-medium">
246
+ <span>Progresso: <span id="collectedItems">0</span>/<span id="totalItems">0</span></span>
247
+ <span>Pontos: <span id="points">0</span></span>
248
+ </div>
249
+ <div class="progress-bar">
250
+ <div class="progress-fill" id="progressFill" style="width: 0%"></div>
251
+ </div>
252
+ </div>
253
+
254
+ <!-- Character -->
255
+ <div class="character" id="character">
256
+ <img src="https://i.imgur.com/JQl5bYt.png" alt="Cacau Show Mascote" style="width:100%;height:100%;object-fit:contain;">
257
+ </div>
258
+
259
+ <!-- Platforms, items and customers will be added dynamically -->
260
+ </div>
261
+
262
+ <!-- Challenge Popup -->
263
+ <div class="challenge-popup hidden" id="challengePopup">
264
+ <h3 class="font-bold text-xl mb-3 text-center" id="challengeTitle">Desafio do Chocolate</h3>
265
+ <p class="text-sm mb-4 text-center text-gray-600" id="challengeDescription">Responda corretamente para continuar!</p>
266
+ <div id="challengeContent" class="mb-4"></div>
267
+ <div class="flex justify-center">
268
+ <button onclick="completeChallenge()" class="bg-green-500 hover:bg-green-600 text-white font-bold py-2 px-6 rounded-full text-sm">
269
+ <i class="fas fa-check mr-2"></i>Confirmar Resposta
270
+ </button>
271
+ </div>
272
+ </div>
273
+
274
+ <!-- Customer Interaction Popup -->
275
+ <div class="customer-popup hidden" id="customerPopup">
276
+ <h3 class="font-bold text-lg mb-2" id="customerTitle">Atendimento ao Cliente</h3>
277
+ <p class="text-sm mb-3" id="customerQuestion">Como posso ajudar?</p>
278
+ <div id="customerOptions" class="space-y-2"></div>
279
+ </div>
280
+
281
+ <!-- Feedback Form -->
282
+ <div class="challenge-popup hidden" id="feedbackPopup">
283
+ <h3 class="font-bold text-xl mb-3 text-center">Feedback do Treinamento</h3>
284
+ <p class="text-sm mb-4 text-center text-gray-600">Ajude-nos a melhorar sua experiência!</p>
285
+
286
+ <div class="space-y-4">
287
+ <div>
288
+ <label class="block text-sm font-medium text-gray-700 mb-1">Como você avalia este treinamento?</label>
289
+ <div class="flex justify-between text-2xl">
290
+ <i class="fas fa-star text-gray-300 hover:text-yellow-400 cursor-pointer" data-rating="1"></i>
291
+ <i class="fas fa-star text-gray-300 hover:text-yellow-400 cursor-pointer" data-rating="2"></i>
292
+ <i class="fas fa-star text-gray-300 hover:text-yellow-400 cursor-pointer" data-rating="3"></i>
293
+ <i class="fas fa-star text-gray-300 hover:text-yellow-400 cursor-pointer" data-rating="4"></i>
294
+ <i class="fas fa-star text-gray-300 hover:text-yellow-400 cursor-pointer" data-rating="5"></i>
295
+ </div>
296
+ </div>
297
+
298
+ <div>
299
+ <label for="feedbackText" class="block text-sm font-medium text-gray-700 mb-1">Comentários ou sugestões:</label>
300
+ <textarea id="feedbackText" rows="3" class="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-amber-500"></textarea>
301
+ </div>
302
+
303
+ <div class="flex justify-center">
304
+ <button onclick="submitFeedback()" class="bg-amber-600 hover:bg-amber-700 text-white font-bold py-2 px-6 rounded-full text-sm">
305
+ <i class="fas fa-paper-plane mr-2"></i>Enviar Feedback
306
+ </button>
307
+ </div>
308
+ </div>
309
+ </div>
310
+
311
+ <script>
312
+ // Game variables
313
+ let currentLevel = 1;
314
+ let characterPosition = { x: 50, y: 100 };
315
+ let gameSpeed = 5;
316
+ let scrollPosition = 0;
317
+ let maxScroll = 3000;
318
+ let collectedItems = 0;
319
+ let totalItems = 0;
320
+ let points = 0;
321
+ let currentChallenge = null;
322
+ let currentCustomer = null;
323
+ let gameRunning = true;
324
+ let selectedRating = 0;
325
+
326
+ // Level data - focused on Cacau Show training
327
+ const levels = [
328
+ {
329
+ name: "Loja de Chocolate",
330
+ platforms: [
331
+ { x: 0, y: 150, width: 300, height: 20 },
332
+ { x: 350, y: 250, width: 200, height: 20 },
333
+ { x: 100, y: 400, width: 250, height: 20 },
334
+ { x: 400, y: 550, width: 200, height: 20 }
335
+ ],
336
+ chocolates: [
337
+ { x: 50, y: 110, type: "product", name: "Bombom Trufado" },
338
+ { x: 200, y: 210, type: "product", name: "Ovo de Páscoa" },
339
+ { x: 150, y: 360, type: "product", name: "Barra 70%" },
340
+ { x: 450, y: 510, type: "product", name: "Brigadeiro" }
341
+ ],
342
+ customers: [
343
+ {
344
+ x: 450, y: 190,
345
+ question: "Qual o produto mais vendido da Cacau Show?",
346
+ options: [
347
+ { text: "Bombom Trufado", correct: true, points: 20 },
348
+ { text: "Ovo de Páscoa", correct: false, points: 5 },
349
+ { text: "Barra de Chocolate", correct: false, points: 5 }
350
+ ]
351
+ }
352
+ ],
353
+ checkpoints: [
354
+ {
355
+ x: 450, y: 530,
356
+ challenge: {
357
+ title: "Conhecimento Básico",
358
+ description: "Qual o principal ingrediente do chocolate?",
359
+ type: "quiz",
360
+ options: ["Açúcar", "Leite", "Cacau", "Fermento"],
361
+ answer: 2,
362
+ points: 30
363
+ }
364
+ }
365
+ ]
366
+ },
367
+ {
368
+ name: "Atendimento ao Cliente",
369
+ platforms: [
370
+ { x: 50, y: 750, width: 200, height: 20 },
371
+ { x: 300, y: 900, width: 200, height: 20 },
372
+ { x: 100, y: 1050, width: 250, height: 20 },
373
+ { x: 350, y: 1200, width: 200, height: 20 }
374
+ ],
375
+ chocolates: [
376
+ { x: 100, y: 710, type: "knowledge", name: "Temperatura" },
377
+ { x: 350, y: 860, type: "knowledge", name: "Validade" },
378
+ { x: 200, y: 1010, type: "knowledge", name: "Ingredientes" },
379
+ { x: 400, y: 1160, type: "knowledge", name: "Armazenamento" }
380
+ ],
381
+ customers: [
382
+ {
383
+ x: 150, y: 730,
384
+ question: "Um cliente pergunta sobre produtos sem lactose. O que fazer?",
385
+ options: [
386
+ { text: "Indicar apenas produtos com selo 'Sem Lactose'", correct: true, points: 25 },
387
+ { text: "Dizer que todos os produtos são seguros", correct: false, points: 0 },
388
+ { text: "Recomendar produtos ao leite", correct: false, points: 0 }
389
+ ]
390
+ },
391
+ {
392
+ x: 400, y: 880,
393
+ question: "Como lidar com um cliente insatisfeito?",
394
+ options: [
395
+ { text: "Ouvir atentamente e oferecer solução", correct: true, points: 30 },
396
+ { text: "Chamar o gerente imediatamente", correct: false, points: 10 },
397
+ { text: "Ignorar e continuar atendendo", correct: false, points: 0 }
398
+ ]
399
+ }
400
+ ],
401
+ checkpoints: [
402
+ {
403
+ x: 400, y: 1180,
404
+ challenge: {
405
+ title: "Temperatura Ideal",
406
+ description: "Qual a temperatura ideal para armazenar chocolate?",
407
+ type: "quiz",
408
+ options: ["10-15°C", "18-22°C", "25-30°C", "Não importa"],
409
+ answer: 1,
410
+ points: 40
411
+ }
412
+ }
413
+ ]
414
+ },
415
+ {
416
+ name: "Promoções e Vendas",
417
+ platforms: [
418
+ { x: 0, y: 1500, width: 300, height: 20 },
419
+ { x: 350, y: 1650, width: 200, height: 20 },
420
+ { x: 100, y: 1800, width: 250, height: 20 },
421
+ { x: 400, y: 1950, width: 200, height: 20 }
422
+ ],
423
+ chocolates: [
424
+ { x: 50, y: 1460, type: "promo", name: "Páscoa" },
425
+ { x: 200, y: 1610, type: "promo", name: "Dia dos Namorados" },
426
+ { x: 150, y: 1760, type: "promo", name: "Natal" },
427
+ { x: 450, y: 1910, type: "promo", name: "Aniversário" }
428
+ ],
429
+ customers: [
430
+ {
431
+ x: 250, y: 1480,
432
+ question: "Como aumentar o ticket médio das vendas?",
433
+ options: [
434
+ { text: "Sugerir combos e produtos complementares", correct: true, points: 35 },
435
+ { text: "Vender apenas o que o cliente pede", correct: false, points: 5 },
436
+ { text: "Oferecer desconto em tudo", correct: false, points: 10 }
437
+ ]
438
+ },
439
+ {
440
+ x: 450, y: 1660,
441
+ question: "Qual a melhor abordagem para vender na Páscoa?",
442
+ options: [
443
+ { text: "Destacar os ovos premium e kits presentes", correct: true, points: 40 },
444
+ { text: "Esperar o cliente escolher sozinho", correct: false, points: 5 },
445
+ { text: "Focar apenas nos produtos mais baratos", correct: false, points: 5 }
446
+ ]
447
+ }
448
+ ],
449
+ checkpoints: [
450
+ {
451
+ x: 450, y: 1930,
452
+ challenge: {
453
+ title: "Diferenciais Cacau Show",
454
+ description: "Qual desses é um diferencial da Cacau Show?",
455
+ type: "quiz",
456
+ options: [
457
+ "Chocolates artesanais",
458
+ "Ingredientes premium",
459
+ "Processo próprio de fabricação",
460
+ "Todas as alternativas"
461
+ ],
462
+ answer: 3,
463
+ points: 50
464
+ }
465
+ }
466
+ ]
467
+ }
468
+ ];
469
+
470
+ // Initialize the game
471
+ function initGame() {
472
+ const gameContainer = document.getElementById('gameContainer');
473
+
474
+ // Clear previous level elements
475
+ gameContainer.querySelectorAll('.platform, .chocolate, .customer, .checkpoint, .completed-level').forEach(el => el.remove());
476
+
477
+ // Load current level
478
+ const level = levels[currentLevel - 1];
479
+ document.getElementById('currentLevel').textContent = currentLevel;
480
+ document.getElementById('levelName').textContent = level.name;
481
+
482
+ // Create platforms
483
+ level.platforms.forEach(platform => {
484
+ const platformElement = document.createElement('div');
485
+ platformElement.className = 'platform';
486
+ platformElement.style.left = `${platform.x}px`;
487
+ platformElement.style.top = `${platform.y}px`;
488
+ platformElement.style.width = `${platform.width}px`;
489
+ platformElement.style.height = `${platform.height}px`;
490
+ gameContainer.appendChild(platformElement);
491
+ });
492
+
493
+ // Create chocolates/knowledge items
494
+ totalItems = level.chocolates.length + level.customers.length;
495
+ collectedItems = 0;
496
+ updateProgress();
497
+
498
+ level.chocolates.forEach(item => {
499
+ const itemElement = document.createElement('div');
500
+ itemElement.className = 'chocolate floating';
501
+ itemElement.style.left = `${item.x}px`;
502
+ itemElement.style.top = `${item.y}px`;
503
+ itemElement.dataset.type = item.type;
504
+ itemElement.dataset.name = item.name;
505
+ gameContainer.appendChild(itemElement);
506
+ });
507
+
508
+ // Create customers
509
+ level.customers.forEach(customer => {
510
+ const customerElement = document.createElement('div');
511
+ customerElement.className = 'customer';
512
+ customerElement.style.left = `${customer.x}px`;
513
+ customerElement.style.top = `${customer.y}px`;
514
+ customerElement.dataset.question = customer.question;
515
+ customerElement.dataset.options = JSON.stringify(customer.options);
516
+ gameContainer.appendChild(customerElement);
517
+ });
518
+
519
+ // Create checkpoints
520
+ level.checkpoints.forEach(check => {
521
+ const checkElement = document.createElement('div');
522
+ checkElement.className = 'checkpoint floating';
523
+ checkElement.style.left = `${check.x}px`;
524
+ checkElement.style.top = `${check.y}px`;
525
+ checkElement.dataset.challenge = JSON.stringify(check.challenge);
526
+ gameContainer.appendChild(checkElement);
527
+ });
528
+
529
+ // Reset character position
530
+ characterPosition = { x: 50, y: 100 };
531
+ updateCharacterPosition();
532
+
533
+ // Reset scroll
534
+ scrollPosition = 0;
535
+ gameContainer.scrollTop = 0;
536
+
537
+ // Start game loop
538
+ gameRunning = true;
539
+ requestAnimationFrame(gameLoop);
540
+ }
541
+
542
+ // Game loop
543
+ function gameLoop() {
544
+ if (!gameRunning) return;
545
+
546
+ const gameContainer = document.getElementById('gameContainer');
547
+ const character = document.getElementById('character');
548
+
549
+ // Auto-scroll down
550
+ scrollPosition += gameSpeed;
551
+ gameContainer.scrollTop = scrollPosition;
552
+
553
+ // Check if level completed
554
+ if (scrollPosition >= maxScroll) {
555
+ completeLevel();
556
+ return;
557
+ }
558
+
559
+ // Check collisions
560
+ checkCollisions();
561
+
562
+ // Continue loop
563
+ requestAnimationFrame(gameLoop);
564
+ }
565
+
566
+ // Update character position
567
+ function updateCharacterPosition() {
568
+ const character = document.getElementById('character');
569
+ character.style.left = `${characterPosition.x}px`;
570
+ character.style.top = `${characterPosition.y}px`;
571
+ }
572
+
573
+ // Handle keyboard controls
574
+ document.addEventListener('keydown', (e) => {
575
+ if (!gameRunning) return;
576
+
577
+ const moveAmount = 20;
578
+
579
+ switch(e.key) {
580
+ case 'ArrowLeft':
581
+ characterPosition.x = Math.max(0, characterPosition.x - moveAmount);
582
+ character.style.transform = 'scaleX(-1)';
583
+ break;
584
+ case 'ArrowRight':
585
+ characterPosition.x = Math.min(window.innerWidth - 60, characterPosition.x + moveAmount);
586
+ character.style.transform = 'scaleX(1)';
587
+ break;
588
+ case 'ArrowUp':
589
+ // Jump animation
590
+ character.classList.add('jump-animation');
591
+ setTimeout(() => {
592
+ character.classList.remove('jump-animation');
593
+ }, 500);
594
+ break;
595
+ }
596
+
597
+ updateCharacterPosition();
598
+ });
599
+
600
+ // Check collisions with items
601
+ function checkCollisions() {
602
+ const character = document.getElementById('character');
603
+ const charRect = character.getBoundingClientRect();
604
+
605
+ // Check chocolates/knowledge items
606
+ document.querySelectorAll('.chocolate:not(.collect-animation)').forEach(item => {
607
+ const itemRect = item.getBoundingClientRect();
608
+
609
+ if (isColliding(charRect, itemRect)) {
610
+ // Collect item
611
+ item.classList.add('collect-animation');
612
+ collectedItems++;
613
+
614
+ // Add points based on item type
615
+ const itemType = item.dataset.type;
616
+ const pointsToAdd = itemType === 'product' ? 10 :
617
+ itemType === 'knowledge' ? 15 :
618
+ itemType === 'promo' ? 20 : 10;
619
+
620
+ addPoints(pointsToAdd);
621
+ updateProgress();
622
+
623
+ // Remove item after animation
624
+ setTimeout(() => {
625
+ item.remove();
626
+ }, 500);
627
+ }
628
+ });
629
+
630
+ // Check customers
631
+ document.querySelectorAll('.customer').forEach(customer => {
632
+ const customerRect = customer.getBoundingClientRect();
633
+
634
+ if (isColliding(charRect, customerRect) && !currentCustomer && !currentChallenge) {
635
+ // Found customer - show interaction
636
+ showCustomerInteraction({
637
+ question: customer.dataset.question,
638
+ options: JSON.parse(customer.dataset.options)
639
+ });
640
+
641
+ // Mark customer as interacted
642
+ currentCustomer = customer;
643
+ customer.style.background = 'linear-gradient(to bottom, #81C784, #4CAF50)';
644
+ }
645
+ });
646
+
647
+ // Check checkpoints
648
+ document.querySelectorAll('.checkpoint').forEach(check => {
649
+ const checkRect = check.getBoundingClientRect();
650
+
651
+ if (isColliding(charRect, checkRect) && !currentChallenge && !currentCustomer) {
652
+ // Found checkpoint - show challenge
653
+ showChallenge(JSON.parse(check.dataset.challenge));
654
+ }
655
+ });
656
+ }
657
+
658
+ // Check if two elements are colliding
659
+ function isColliding(rect1, rect2) {
660
+ return !(
661
+ rect1.right < rect2.left ||
662
+ rect1.left > rect2.right ||
663
+ rect1.bottom < rect2.top ||
664
+ rect1.top > rect2.bottom
665
+ );
666
+ }
667
+
668
+ // Show challenge popup
669
+ function showChallenge(challenge) {
670
+ currentChallenge = challenge;
671
+ gameRunning = false;
672
+
673
+ const popup = document.getElementById('challengePopup');
674
+ const content = document.getElementById('challengeContent');
675
+
676
+ document.getElementById('challengeTitle').textContent = challenge.title;
677
+ document.getElementById('challengeDescription').textContent = challenge.description;
678
+
679
+ // Create challenge content based on type
680
+ content.innerHTML = '';
681
+
682
+ if (challenge.type === 'quiz') {
683
+ challenge.options.forEach((option, index) => {
684
+ const optionEl = document.createElement('div');
685
+ optionEl.className = 'p-3 mb-2 bg-gray-100 rounded-lg cursor-pointer hover:bg-gray-200 transition';
686
+ optionEl.textContent = option;
687
+ optionEl.onclick = function() {
688
+ selectAnswer(index);
689
+ };
690
+ content.appendChild(optionEl);
691
+ });
692
+ }
693
+
694
+ popup.classList.remove('hidden');
695
+ }
696
+
697
+ // Show customer interaction
698
+ function showCustomerInteraction(customer) {
699
+ gameRunning = false;
700
+
701
+ const popup = document.getElementById('customerPopup');
702
+ const options = document.getElementById('customerOptions');
703
+
704
+ document.getElementById('customerTitle').textContent = "Atendimento ao Cliente";
705
+ document.getElementById('customerQuestion').textContent = customer.question;
706
+
707
+ // Create options
708
+ options.innerHTML = '';
709
+ customer.options.forEach((option, index) => {
710
+ const optionEl = document.createElement('div');
711
+ optionEl.className = 'p-2 bg-amber-50 rounded cursor-pointer hover:bg-amber-100 border border-amber-100';
712
+ optionEl.textContent = option.text;
713
+ optionEl.onclick = function() {
714
+ completeCustomerInteraction(index, customer.options);
715
+ };
716
+ options.appendChild(optionEl);
717
+ });
718
+
719
+ popup.classList.remove('hidden');
720
+ }
721
+
722
+ // Complete customer interaction
723
+ function completeCustomerInteraction(selectedIndex, options) {
724
+ const popup = document.getElementById('customerPopup');
725
+ popup.classList.add('hidden');
726
+
727
+ const selectedOption = options[selectedIndex];
728
+
729
+ // Add points based on answer
730
+ addPoints(selectedOption.correct ? selectedOption.points : Math.floor(selectedOption.points/2));
731
+
732
+ // Mark item as collected
733
+ collectedItems++;
734
+ updateProgress();
735
+
736
+ // Remove customer
737
+ if (currentCustomer) {
738
+ currentCustomer.remove();
739
+ currentCustomer = null;
740
+ }
741
+
742
+ gameRunning = true;
743
+ requestAnimationFrame(gameLoop);
744
+ }
745
+
746
+ // Select answer in quiz
747
+ function selectAnswer(index) {
748
+ document.querySelectorAll('#challengeContent div').forEach((el, i) => {
749
+ if (i === index) {
750
+ el.classList.add('bg-amber-500', 'text-white', 'font-medium');
751
+ el.classList.remove('bg-gray-100', 'hover:bg-gray-200');
752
+ } else {
753
+ el.classList.remove('bg-amber-500', 'text-white', 'font-medium');
754
+ el.classList.add('bg-gray-100', 'hover:bg-gray-200');
755
+ }
756
+ });
757
+
758
+ currentChallenge.selectedAnswer = index;
759
+ }
760
+
761
+ // Complete challenge
762
+ function completeChallenge() {
763
+ const popup = document.getElementById('challengePopup');
764
+ popup.classList.add('hidden');
765
+
766
+ // Check if answer is selected
767
+ if (currentChallenge.selectedAnswer === undefined) {
768
+ alert("Por favor, selecione uma resposta antes de continuar!");
769
+ return;
770
+ }
771
+
772
+ // Check if answer is correct
773
+ const isCorrect = currentChallenge.selectedAnswer === currentChallenge.answer;
774
+
775
+ // Add points based on answer
776
+ addPoints(isCorrect ? currentChallenge.points : Math.floor(currentChallenge.points/3));
777
+
778
+ // Mark item as collected
779
+ collectedItems++;
780
+ updateProgress();
781
+
782
+ // Visual feedback
783
+ const character = document.getElementById('character');
784
+ if (!isCorrect) {
785
+ character.classList.add('shake');
786
+ setTimeout(() => {
787
+ character.classList.remove('shake');
788
+ }, 500);
789
+ }
790
+
791
+ currentChallenge = null;
792
+ gameRunning = true;
793
+ requestAnimationFrame(gameLoop);
794
+ }
795
+
796
+ // Add points to score
797
+ function addPoints(amount) {
798
+ points += amount;
799
+ document.getElementById('points').textContent = points;
800
+
801
+ // Visual feedback
802
+ const pointsElement = document.getElementById('points');
803
+ pointsElement.classList.add('text-green-500', 'scale-110');
804
+ setTimeout(() => {
805
+ pointsElement.classList.remove('text-green-500', 'scale-110');
806
+ }, 300);
807
+ }
808
+
809
+ // Update progress bar
810
+ function updateProgress() {
811
+ const progress = (collectedItems / totalItems) * 100;
812
+ document.getElementById('collectedItems').textContent = collectedItems;
813
+ document.getElementById('totalItems').textContent = totalItems;
814
+ document.getElementById('progressFill').style.width = `${progress}%`;
815
+ }
816
+
817
+ // Complete level
818
+ function completeLevel() {
819
+ gameRunning = false;
820
+
821
+ const gameContainer = document.getElementById('gameContainer');
822
+ const completedScreen = document.createElement('div');
823
+ completedScreen.className = 'completed-level';
824
+ completedScreen.innerHTML = `
825
+ <h2 class="text-3xl font-bold mb-4">Nível ${currentLevel} Completo!</h2>
826
+ <p class="text-xl mb-2">Você coletou ${collectedItems} de ${totalItems} itens</p>
827
+ <p class="text-xl mb-6">Pontuação: ${points} pontos</p>
828
+ <button onclick="nextLevel()" class="bg-green-500 hover:bg-green-600 text-white font-bold py-3 px-6 rounded-full text-lg mb-4">
829
+ <i class="fas fa-arrow-right mr-2"></i>Próximo Nível
830
+ </button>
831
+ `;
832
+ gameContainer.appendChild(completedScreen);
833
+ }
834
+
835
+ // Go to next level
836
+ function nextLevel() {
837
+ currentLevel++;
838
+
839
+ if (currentLevel <= levels.length) {
840
+ initGame();
841
+ } else {
842
+ // Game completed - show feedback form
843
+ showFeedbackForm();
844
+ }
845
+ }
846
+
847
+ // Show feedback form
848
+ function showFeedbackForm() {
849
+ const gameContainer = document.getElementById('gameContainer');
850
+ const completedScreen = document.createElement('div');
851
+ completedScreen.className = 'completed-level';
852
+ completedScreen.innerHTML = `
853
+ <h2 class="text-3xl font-bold mb-4">Parabéns!</h2>
854
+ <p class="text-xl mb-6">Você completou todos os níveis de treinamento!</p>
855
+ <p class="mb-6 text-lg">Pontuação final: ${points} pontos</p>
856
+ `;
857
+ gameContainer.appendChild(completedScreen);
858
+
859
+ // Show feedback popup after delay
860
+ setTimeout(() => {
861
+ document.getElementById('feedbackPopup').classList.remove('hidden');
862
+ }, 1000);
863
+ }
864
+
865
+ // Select rating for feedback
866
+ document.querySelectorAll('#feedbackPopup .fa-star').forEach(star => {
867
+ star.addEventListener('click', function() {
868
+ const rating = parseInt(this.dataset.rating);
869
+ selectedRating = rating;
870
+
871
+ // Update stars display
872
+ document.querySelectorAll('#feedbackPopup .fa-star').forEach((s, i) => {
873
+ if (i < rating) {
874
+ s.classList.add('text-yellow-400');
875
+ s.classList.remove('text-gray-300');
876
+ } else {
877
+ s.classList.remove('text-yellow-400');
878
+ s.classList.add('text-gray-300');
879
+ }
880
+ });
881
+ });
882
+ });
883
+
884
+ // Submit feedback
885
+ function submitFeedback() {
886
+ const feedbackText = document.getElementById('feedbackText').value;
887
+
888
+ // Here you would typically send this data to your server
889
+ console.log("Feedback submitted:", {
890
+ rating: selectedRating,
891
+ comments: feedbackText,
892
+ points: points,
893
+ level: currentLevel - 1
894
+ });
895
+
896
+ // Show confirmation
897
+ alert("Obrigado pelo seu feedback! Ele nos ajuda a melhorar o treinamento.");
898
+
899
+ // Restart game
900
+ restartGame();
901
+ }
902
+
903
+ // Restart game
904
+ function restartGame() {
905
+ currentLevel = 1;
906
+ points = 0;
907
+ document.getElementById('feedbackPopup').classList.add('hidden');
908
+ initGame();
909
+ }
910
+
911
+ // Start the game
912
+ initGame();
913
+ </script>
914
+ <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=Marquesduque/eng" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
915
+ </html>
prompts.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ Crie um jogo de missoes e desafios de tirar foto, gravrvideo fazer checkin e responder questionario
2
+ Quero um bau para resgatar recompensa
3
+ Adicionne um jogo que faca sentido para a empresa cacaushow
4
+ Os desafios devem ser um scenario scrolado para baixo estilo faEr de um videogame e cobformw o usiario vai passanndo de faze o bonequinho vai avancqndo
5
+ Agora analise o nosso historico, eu ja twnho um app criado de engajamento para a empresa cacau show e quero adicionar algum jogo que faca sentido para a empresa com o principal objetivo de treinamento e coleta de informacoes proponha um jogo divertido dinamico desafiador e interarivo para incluir ao app