timoon811 commited on
Commit
1a9615b
·
verified ·
1 Parent(s): aa4be57

Add 3 files

Browse files
Files changed (3) hide show
  1. README.md +7 -5
  2. index.html +713 -19
  3. prompts.txt +1 -0
README.md CHANGED
@@ -1,10 +1,12 @@
1
  ---
2
- title: Landtop
3
- emoji: 🦀
4
- colorFrom: green
5
- colorTo: red
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: landtop
3
+ emoji: 🐳
4
+ colorFrom: blue
5
+ colorTo: purple
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,713 @@
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="ru">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Выживи как арбитражник | Текстовая RPG</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=JetBrains+Mono:wght@400;700&display=swap');
11
+
12
+ body {
13
+ font-family: 'JetBrains Mono', monospace;
14
+ background-color: #000;
15
+ color: #00ff41;
16
+ overflow-x: hidden;
17
+ }
18
+
19
+ .terminal-text {
20
+ text-shadow: 0 0 5px #00ff41;
21
+ }
22
+
23
+ .blink {
24
+ animation: blink 1s step-end infinite;
25
+ }
26
+
27
+ @keyframes blink {
28
+ from, to { opacity: 1; }
29
+ 50% { opacity: 0; }
30
+ }
31
+
32
+ .typewriter {
33
+ overflow: hidden;
34
+ border-right: .15em solid #00ff41;
35
+ white-space: nowrap;
36
+ margin: 0 auto;
37
+ letter-spacing: .15em;
38
+ animation:
39
+ typing 3.5s steps(40, end),
40
+ blink-caret .75s step-end infinite;
41
+ }
42
+
43
+ @keyframes typing {
44
+ from { width: 0 }
45
+ to { width: 100% }
46
+ }
47
+
48
+ @keyframes blink-caret {
49
+ from, to { border-color: transparent }
50
+ 50% { border-color: #00ff41; }
51
+ }
52
+
53
+ .glitch {
54
+ position: relative;
55
+ }
56
+
57
+ .glitch::before, .glitch::after {
58
+ content: attr(data-text);
59
+ position: absolute;
60
+ top: 0;
61
+ left: 0;
62
+ width: 100%;
63
+ height: 100%;
64
+ }
65
+
66
+ .glitch::before {
67
+ left: 2px;
68
+ text-shadow: -2px 0 #ff00ff;
69
+ clip: rect(24px, 550px, 90px, 0);
70
+ animation: glitch-anim-1 2s infinite linear alternate-reverse;
71
+ }
72
+
73
+ .glitch::after {
74
+ left: -2px;
75
+ text-shadow: -2px 0 #00ffff;
76
+ clip: rect(85px, 550px, 140px, 0);
77
+ animation: glitch-anim-2 2s infinite linear alternate-reverse;
78
+ }
79
+
80
+ @keyframes glitch-anim-1 {
81
+ 0% { clip: rect(32px, 9999px, 28px, 0); }
82
+ 10% { clip: rect(13px, 9999px, 97px, 0); }
83
+ 20% { clip: rect(55px, 9999px, 98px, 0); }
84
+ 30% { clip: rect(33px, 9999px, 85px, 0); }
85
+ 40% { clip: rect(39px, 9999px, 25px, 0); }
86
+ 50% { clip: rect(19px, 9999px, 54px, 0); }
87
+ 60% { clip: rect(31px, 9999px, 72px, 0); }
88
+ 70% { clip: rect(70px, 9999px, 103px, 0); }
89
+ 80% { clip: rect(90px, 9999px, 92px, 0); }
90
+ 90% { clip: rect(78px, 9999px, 40px, 0); }
91
+ 100% { clip: rect(42px, 9999px, 33px, 0); }
92
+ }
93
+
94
+ @keyframes glitch-anim-2 {
95
+ 0% { clip: rect(65px, 9999px, 119px, 0); }
96
+ 10% { clip: rect(120px, 9999px, 80px, 0); }
97
+ 20% { clip: rect(10px, 9999px, 5px, 0); }
98
+ 30% { clip: rect(85px, 9999px, 100px, 0); }
99
+ 40% { clip: rect(91px, 9999px, 59px, 0); }
100
+ 50% { clip: rect(148px, 9999px, 138px, 0); }
101
+ 60% { clip: rect(63px, 9999px, 17px, 0); }
102
+ 70% { clip: rect(105px, 9999px, 69px, 0); }
103
+ 80% { clip: rect(88px, 9999px, 122px, 0); }
104
+ 90% { clip: rect(54px, 9999px, 111px, 0); }
105
+ 100% { clip: rect(102px, 9999px, 79px, 0); }
106
+ }
107
+
108
+ .neon-btn {
109
+ position: relative;
110
+ display: inline-block;
111
+ padding: 10px 20px;
112
+ color: #00ff41;
113
+ text-transform: uppercase;
114
+ letter-spacing: 4px;
115
+ text-decoration: none;
116
+ font-size: 18px;
117
+ overflow: hidden;
118
+ transition: 0.2s;
119
+ border: 1px solid #00ff41;
120
+ }
121
+
122
+ .neon-btn:hover {
123
+ color: #000;
124
+ background: #00ff41;
125
+ box-shadow: 0 0 10px #00ff41, 0 0 40px #00ff41, 0 0 80px #00ff41;
126
+ transition-delay: 0.1s;
127
+ }
128
+
129
+ .neon-btn span {
130
+ position: absolute;
131
+ display: block;
132
+ }
133
+
134
+ .neon-btn span:nth-child(1) {
135
+ top: 0;
136
+ left: -100%;
137
+ width: 100%;
138
+ height: 2px;
139
+ background: linear-gradient(90deg, transparent, #00ff41);
140
+ }
141
+
142
+ .neon-btn:hover span:nth-child(1) {
143
+ left: 100%;
144
+ transition: 1s;
145
+ }
146
+
147
+ .neon-btn span:nth-child(3) {
148
+ bottom: 0;
149
+ right: -100%;
150
+ width: 100%;
151
+ height: 2px;
152
+ background: linear-gradient(270deg, transparent, #00ff41);
153
+ }
154
+
155
+ .neon-btn:hover span:nth-child(3) {
156
+ right: 100%;
157
+ transition: 1s;
158
+ transition-delay: 0.5s;
159
+ }
160
+
161
+ .neon-btn span:nth-child(2) {
162
+ top: -100%;
163
+ right: 0;
164
+ width: 2px;
165
+ height: 100%;
166
+ background: linear-gradient(180deg, transparent, #00ff41);
167
+ }
168
+
169
+ .neon-btn:hover span:nth-child(2) {
170
+ top: 100%;
171
+ transition: 1s;
172
+ transition-delay: 0.25s;
173
+ }
174
+
175
+ .neon-btn span:nth-child(4) {
176
+ bottom: -100%;
177
+ left: 0;
178
+ width: 2px;
179
+ height: 100%;
180
+ background: linear-gradient(360deg, transparent, #00ff41);
181
+ }
182
+
183
+ .neon-btn:hover span:nth-child(4) {
184
+ bottom: 100%;
185
+ transition: 1s;
186
+ transition-delay: 0.75s;
187
+ }
188
+
189
+ .scene {
190
+ display: none;
191
+ min-height: 100vh;
192
+ padding: 2rem;
193
+ }
194
+
195
+ .active-scene {
196
+ display: flex;
197
+ flex-direction: column;
198
+ justify-content: center;
199
+ align-items: center;
200
+ text-align: center;
201
+ }
202
+
203
+ .option-btn {
204
+ margin: 0.5rem;
205
+ padding: 0.75rem 1.5rem;
206
+ border: 1px solid #00ff41;
207
+ color: #00ff41;
208
+ background: transparent;
209
+ cursor: pointer;
210
+ transition: all 0.3s;
211
+ width: 80%;
212
+ max-width: 400px;
213
+ text-align: left;
214
+ }
215
+
216
+ .option-btn:hover {
217
+ background: rgba(0, 255, 65, 0.1);
218
+ }
219
+
220
+ .option-btn i {
221
+ margin-right: 0.5rem;
222
+ }
223
+
224
+ .money-display {
225
+ position: fixed;
226
+ top: 1rem;
227
+ right: 1rem;
228
+ padding: 0.5rem 1rem;
229
+ border: 1px solid #00ff41;
230
+ background: rgba(0, 0, 0, 0.7);
231
+ z-index: 100;
232
+ }
233
+
234
+ .success {
235
+ color: #00ff41;
236
+ animation: pulse 2s infinite;
237
+ }
238
+
239
+ .failure {
240
+ color: #ff0033;
241
+ animation: shake 0.5s;
242
+ }
243
+
244
+ @keyframes pulse {
245
+ 0% { text-shadow: 0 0 5px #00ff41; }
246
+ 50% { text-shadow: 0 0 20px #00ff41; }
247
+ 100% { text-shadow: 0 0 5px #00ff41; }
248
+ }
249
+
250
+ @keyframes shake {
251
+ 0% { transform: translate(1px, 1px) rotate(0deg); }
252
+ 10% { transform: translate(-1px, -2px) rotate(-1deg); }
253
+ 20% { transform: translate(-3px, 0px) rotate(1deg); }
254
+ 30% { transform: translate(3px, 2px) rotate(0deg); }
255
+ 40% { transform: translate(1px, -1px) rotate(1deg); }
256
+ 50% { transform: translate(-1px, 2px) rotate(-1deg); }
257
+ 60% { transform: translate(-3px, 1px) rotate(0deg); }
258
+ 70% { transform: translate(3px, 1px) rotate(-1deg); }
259
+ 80% { transform: translate(-1px, -1px) rotate(1deg); }
260
+ 90% { transform: translate(1px, 2px) rotate(0deg); }
261
+ 100% { transform: translate(1px, -2px) rotate(-1deg); }
262
+ }
263
+
264
+ .tooltip {
265
+ position: relative;
266
+ display: inline-block;
267
+ border-bottom: 1px dotted #00ff41;
268
+ cursor: help;
269
+ }
270
+
271
+ .tooltip .tooltiptext {
272
+ visibility: hidden;
273
+ width: 200px;
274
+ background-color: #000;
275
+ color: #00ff41;
276
+ text-align: center;
277
+ border: 1px solid #00ff41;
278
+ border-radius: 6px;
279
+ padding: 5px;
280
+ position: absolute;
281
+ z-index: 1;
282
+ bottom: 125%;
283
+ left: 50%;
284
+ margin-left: -100px;
285
+ opacity: 0;
286
+ transition: opacity 0.3s;
287
+ }
288
+
289
+ .tooltip:hover .tooltiptext {
290
+ visibility: visible;
291
+ opacity: 1;
292
+ }
293
+
294
+ .progress-bar {
295
+ width: 100%;
296
+ max-width: 400px;
297
+ height: 10px;
298
+ background-color: #000;
299
+ border: 1px solid #00ff41;
300
+ margin: 1rem 0;
301
+ }
302
+
303
+ .progress {
304
+ height: 100%;
305
+ background-color: #00ff41;
306
+ width: 0%;
307
+ transition: width 0.5s;
308
+ }
309
+
310
+ .ascii-art {
311
+ font-family: monospace;
312
+ white-space: pre;
313
+ color: #00ff41;
314
+ margin: 1rem 0;
315
+ }
316
+ </style>
317
+ </head>
318
+ <body>
319
+ <!-- Money Display -->
320
+ <div class="money-display terminal-text" id="moneyDisplay">
321
+ $<span id="moneyAmount">300</span> | Уровень: <span id="level">новичок</span>
322
+ </div>
323
+
324
+ <!-- Scene 0: Start Screen -->
325
+ <div class="scene active-scene" id="scene0">
326
+ <div class="glitch" data-text="Выживи в мире арбитража">
327
+ <h1 class="text-4xl md:text-6xl font-bold mb-8 terminal-text">Выживи в мире арбитража</h1>
328
+ </div>
329
+
330
+ <div class="ascii-art mb-8">
331
+ _____ _____ _____ _____ _____ _____
332
+ | | | | | | | | | | | |
333
+ | A | | R | | B | | I | | T | | R |
334
+ |_____| |_____| |_____| |_____| |_____| |_____|
335
+ </div>
336
+
337
+ <p class="mb-8 text-xl terminal-text blink">START: $300 | Уровень: новичок</p>
338
+
339
+ <button class="neon-btn" id="startGameBtn">
340
+ <span></span>
341
+ <span></span>
342
+ <span></span>
343
+ <span></span>
344
+ Начать игру
345
+ </button>
346
+ </div>
347
+
348
+ <!-- Scene 1: First Step -->
349
+ <div class="scene" id="scene1">
350
+ <h2 class="text-3xl mb-6 terminal-text typewriter">День 1: Первые шаги</h2>
351
+
352
+ <div class="progress-bar">
353
+ <div class="progress" id="progress1"></div>
354
+ </div>
355
+
356
+ <p class="mb-8 text-xl terminal-text">
357
+ Ты зарегистрировался в партнерской программе и получил оффер. Что делаешь первым?
358
+ </p>
359
+
360
+ <div class="w-full flex flex-col items-center">
361
+ <button class="option-btn" onclick="chooseOption(1, 'self-creative')">
362
+ <i class="fas fa-paint-brush"></i> Сделать креатив сам
363
+ </button>
364
+ <button class="option-btn" onclick="chooseOption(1, 'buy-creative')">
365
+ <i class="fas fa-shopping-cart"></i> Купить креатив на фрилансе
366
+ </button>
367
+ <button class="option-btn" onclick="chooseOption(1, 'copy-creative')">
368
+ <i class="fas fa-copy"></i> Скопировать из спая
369
+ </button>
370
+ </div>
371
+
372
+ <div class="tooltip mt-4">
373
+ <i class="fas fa-question-circle"></i> Подсказка
374
+ <span class="tooltiptext">Выбор повлияет на ваш стартовый бюджет и возможные проблемы</span>
375
+ </div>
376
+ </div>
377
+
378
+ <!-- Scene 2: Campaign Launch -->
379
+ <div class="scene" id="scene2">
380
+ <h2 class="text-3xl mb-6 terminal-text typewriter">День 2: Запуск кампании</h2>
381
+
382
+ <div class="progress-bar">
383
+ <div class="progress" id="progress2"></div>
384
+ </div>
385
+
386
+ <p class="mb-8 text-xl terminal-text" id="scene2Text">
387
+ Ты настроил кабинет. Кампания запущена. День 1 — минус $40
388
+ </p>
389
+
390
+ <div class="w-full flex flex-col items-center">
391
+ <button class="option-btn" onclick="chooseOption(2, 'continue')">
392
+ <i class="fas fa-fire"></i> Слить дальше
393
+ </button>
394
+ <button class="option-btn" onclick="chooseOption(2, 'restart')">
395
+ <i class="fas fa-redo"></i> Перезапустить
396
+ </button>
397
+ <button class="option-btn" onclick="chooseOption(2, 'ask-help')">
398
+ <i class="fas fa-users"></i> Попросить совет у команды
399
+ </button>
400
+ </div>
401
+
402
+ <div class="tooltip mt-4">
403
+ <i class="fas fa-lightbulb"></i> Совет от наставника
404
+ <span class="tooltiptext">"Не лезь в бурю без зонда. Анализируй данные перед принятием решения."</span>
405
+ </div>
406
+ </div>
407
+
408
+ <!-- Scene 3: First Profit -->
409
+ <div class="scene" id="scene3">
410
+ <h2 class="text-3xl mb-6 terminal-text success">УСПЕХ!</h2>
411
+
412
+ <div class="progress-bar">
413
+ <div class="progress" id="progress3"></div>
414
+ </div>
415
+
416
+ <div class="mb-8 text-xl terminal-text success">
417
+ <p>+5 FTD</p>
418
+ <p>ROI 143%</p>
419
+ <p>Telegram Push: $280</p>
420
+ </div>
421
+
422
+ <div class="ascii-art mb-4">
423
+ _____
424
+ / ___ \
425
+ | | | |
426
+ | |___| |
427
+ \_____/
428
+ </div>
429
+
430
+ <p class="mb-4 terminal-text">
431
+ Ты сделал правильные выборы и получил первый профит!
432
+ </p>
433
+
434
+ <button class="neon-btn" onclick="nextScene(3)">
435
+ <span></span>
436
+ <span></span>
437
+ <span></span>
438
+ <span></span>
439
+ Продолжить
440
+ </button>
441
+ </div>
442
+
443
+ <!-- Scene 4: Failure -->
444
+ <div class="scene" id="scene4">
445
+ <h2 class="text-3xl mb-6 terminal-text failure">ПРОВАЛ!</h2>
446
+
447
+ <div class="progress-bar">
448
+ <div class="progress" id="progress4"></div>
449
+ </div>
450
+
451
+ <div class="mb-8 text-xl terminal-text failure">
452
+ <p>Warning: Бюджет исчерпан</p>
453
+ <p>Опыт получен. Деньги нет.</p>
454
+ </div>
455
+
456
+ <div class="ascii-art mb-4">
457
+ _____
458
+ / ___ \
459
+ | | | |
460
+ | | | |
461
+ \___\_/
462
+ </div>
463
+
464
+ <p class="mb-4 terminal-text">
465
+ В реальной жизни тебе понадобился бы наставник, чтобы избежать таких потерь.
466
+ </p>
467
+
468
+ <button class="neon-btn" onclick="nextScene(4)">
469
+ <span></span>
470
+ <span></span>
471
+ <span></span>
472
+ <span></span>
473
+ Продолжить
474
+ </button>
475
+ </div>
476
+
477
+ <!-- Scene 5: Final Offer -->
478
+ <div class="scene" id="scene5">
479
+ <h2 class="text-3xl mb-6 terminal-text typewriter">Финал игры</h2>
480
+
481
+ <div class="progress-bar">
482
+ <div class="progress" id="progress5" style="width: 100%"></div>
483
+ </div>
484
+
485
+ <p class="mb-8 text-xl terminal-text">
486
+ Это была всего лишь игра. А в жизни ставки выше.
487
+ </p>
488
+
489
+ <div class="mb-8">
490
+ <p class="terminal-text">Твой результат:</p>
491
+ <p class="terminal-text">Финальный бюджет: $<span id="finalMoney">0</span></p>
492
+ <p class="terminal-text">Ошибок: <span id="mistakes">0</span></p>
493
+ <p class="terminal-text">Правильных решений: <span id="correctChoices">0</span></p>
494
+ </div>
495
+
496
+ <p class="mb-8 text-2xl terminal-text">
497
+ Хочешь научиться выживать по-настоящему?
498
+ </p>
499
+
500
+ <button class="neon-btn" id="courseOfferBtn">
501
+ <span></span>
502
+ <span></span>
503
+ <span></span>
504
+ <span></span>
505
+ Пройти курс и выжить по-настоящему
506
+ </button>
507
+
508
+ <div class="mt-8 text-sm terminal-text">
509
+ <p>На курсе ты получишь:</p>
510
+ <p>- Доступ к закрытому комьюнити</p>
511
+ <p>- Проверенные стратегии</p>
512
+ <p>- Поддержку наставников</p>
513
+ <p>- Готовые связки</p>
514
+ </div>
515
+ </div>
516
+
517
+ <script>
518
+ // Game state
519
+ const gameState = {
520
+ money: 300,
521
+ level: "новичок",
522
+ mistakes: 0,
523
+ correctChoices: 0,
524
+ previousChoices: [],
525
+ currentScene: 0
526
+ };
527
+
528
+ // DOM elements
529
+ const scenes = document.querySelectorAll('.scene');
530
+ const moneyAmount = document.getElementById('moneyAmount');
531
+ const levelDisplay = document.getElementById('level');
532
+ const finalMoneyDisplay = document.getElementById('finalMoney');
533
+ const mistakesDisplay = document.getElementById('mistakes');
534
+ const correctChoicesDisplay = document.getElementById('correctChoices');
535
+
536
+ // Event listeners
537
+ document.getElementById('startGameBtn').addEventListener('click', () => {
538
+ nextScene(0);
539
+ });
540
+
541
+ document.getElementById('courseOfferBtn').addEventListener('click', () => {
542
+ alert('Редирект на страницу курса...');
543
+ // In a real implementation, this would redirect to the course page
544
+ });
545
+
546
+ // Scene transitions
547
+ function nextScene(currentSceneIndex) {
548
+ // Hide current scene
549
+ scenes[currentSceneIndex].classList.remove('active-scene');
550
+
551
+ // Show next scene
552
+ const nextSceneIndex = currentSceneIndex + 1;
553
+ scenes[nextSceneIndex].classList.add('active-scene');
554
+
555
+ // Update progress bars
556
+ updateProgressBars(nextSceneIndex);
557
+
558
+ // Update game state
559
+ gameState.currentScene = nextSceneIndex;
560
+
561
+ // Special cases for certain scenes
562
+ if (nextSceneIndex === 2) {
563
+ updateScene2Text();
564
+ }
565
+
566
+ if (nextSceneIndex === 5) {
567
+ showFinalResults();
568
+ }
569
+ }
570
+
571
+ function updateProgressBars(sceneIndex) {
572
+ const progressPercentage = (sceneIndex / (scenes.length - 1)) * 100;
573
+
574
+ for (let i = 1; i <= 5; i++) {
575
+ const progressBar = document.getElementById(`progress${i}`);
576
+ if (progressBar) {
577
+ if (i <= sceneIndex) {
578
+ progressBar.style.width = `${(i / (scenes.length - 1)) * 100}%`;
579
+ } else {
580
+ progressBar.style.width = '0%';
581
+ }
582
+ }
583
+ }
584
+ }
585
+
586
+ function updateScene2Text() {
587
+ const scene2Text = document.getElementById('scene2Text');
588
+ const moneyLost = Math.floor(Math.random() * 30) + 20;
589
+ gameState.money -= moneyLost;
590
+ updateMoneyDisplay();
591
+
592
+ scene2Text.textContent = `Ты настроил кабинет. Кампания запущена. День 1 — минус $${moneyLost}`;
593
+ }
594
+
595
+ function chooseOption(sceneIndex, option) {
596
+ gameState.previousChoices.push(option);
597
+
598
+ // Process the choice
599
+ switch (option) {
600
+ case 'self-creative':
601
+ gameState.money -= 50;
602
+ gameState.correctChoices++;
603
+ break;
604
+ case 'buy-creative':
605
+ gameState.money -= 100;
606
+ break;
607
+ case 'copy-creative':
608
+ gameState.money -= 20;
609
+ gameState.mistakes++;
610
+ break;
611
+ case 'continue':
612
+ // 50% chance of success
613
+ if (Math.random() > 0.5) {
614
+ gameState.money += 150;
615
+ gameState.correctChoices++;
616
+ nextScene(sceneIndex);
617
+ setTimeout(() => {
618
+ scenes[3].classList.add('active-scene');
619
+ scenes[2].classList.remove('active-scene');
620
+ updateProgressBars(3);
621
+ gameState.currentScene = 3;
622
+ }, 1000);
623
+ return;
624
+ } else {
625
+ gameState.money -= 80;
626
+ gameState.mistakes++;
627
+ }
628
+ break;
629
+ case 'restart':
630
+ gameState.money -= 60;
631
+ break;
632
+ case 'ask-help':
633
+ gameState.money -= 30;
634
+ gameState.correctChoices++;
635
+ break;
636
+ }
637
+
638
+ updateMoneyDisplay();
639
+
640
+ // Randomly determine if this leads to success or failure
641
+ if (sceneIndex === 2) {
642
+ setTimeout(() => {
643
+ if (gameState.money <= 0 || Math.random() > 0.6) {
644
+ // Failure path
645
+ scenes[4].classList.add('active-scene');
646
+ scenes[2].classList.remove('active-scene');
647
+ updateProgressBars(4);
648
+ gameState.currentScene = 4;
649
+ } else {
650
+ // Success path
651
+ gameState.money += 200;
652
+ gameState.correctChoices += 2;
653
+ updateMoneyDisplay();
654
+ scenes[3].classList.add('active-scene');
655
+ scenes[2].classList.remove('active-scene');
656
+ updateProgressBars(3);
657
+ gameState.currentScene = 3;
658
+ }
659
+ }, 1000);
660
+ } else {
661
+ nextScene(sceneIndex);
662
+ }
663
+ }
664
+
665
+ function updateMoneyDisplay() {
666
+ moneyAmount.textContent = gameState.money;
667
+
668
+ // Update level based on money
669
+ if (gameState.money >= 500) {
670
+ gameState.level = "эксперт";
671
+ } else if (gameState.money >= 300) {
672
+ gameState.level = "продвинутый";
673
+ } else if (gameState.money >= 100) {
674
+ gameState.level = "новичок";
675
+ } else if (gameState.money > 0) {
676
+ gameState.level = "начинающий";
677
+ } else {
678
+ gameState.level = "банкрот";
679
+ }
680
+
681
+ levelDisplay.textContent = gameState.level;
682
+
683
+ // Change color if money is low
684
+ if (gameState.money < 100) {
685
+ moneyAmount.classList.add('failure');
686
+ moneyAmount.classList.remove('success');
687
+ } else if (gameState.money > 300) {
688
+ moneyAmount.classList.add('success');
689
+ moneyAmount.classList.remove('failure');
690
+ } else {
691
+ moneyAmount.classList.remove('success', 'failure');
692
+ }
693
+ }
694
+
695
+ function showFinalResults() {
696
+ finalMoneyDisplay.textContent = gameState.money;
697
+ mistakesDisplay.textContent = gameState.mistakes;
698
+ correctChoicesDisplay.textContent = gameState.correctChoices;
699
+ }
700
+
701
+ // Random glitch effect
702
+ setInterval(() => {
703
+ if (Math.random() > 0.95) {
704
+ const randomScene = scenes[Math.floor(Math.random() * scenes.length)];
705
+ randomScene.classList.add('glitch-effect');
706
+ setTimeout(() => {
707
+ randomScene.classList.remove('glitch-effect');
708
+ }, 200);
709
+ }
710
+ }, 5000);
711
+ </script>
712
+ <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=timoon811/landtop" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
713
+ </html>
prompts.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ ... ## 🎮 Техническое задание: Лендинг «Мини-игра: Выживи как арбитражник» ### 🎯 Цель: Создать лендинг, оформленный как **пошаговая текстовая игра**, в которой пользователь проходит путь начинающего арбитражника: делает выборы, сталкивается с трудностями, принимает решения. Всё ведёт к финалу — предложению пройти курс и стать реальным “победителем”. --- ### 🕹️ Главная идея: Погружение через механику **текстовой мини-RPG**: «У тебя $300. Что ты делаешь первым?» → последствия → новые выборы. Это не просто просмотр лендинга — это опыт прохождения сценария. В каждом шаге пользователь выбирает → меняется исход. --- ### 🧱 Структура и блоки: #### 1. Экран старта — Вступление в игру - Заголовок: *“Выживи в мире арбитража”* - Визуал: тёмный экран, надпись мигает: `START: $300 | Уровень: новичок` - Кнопка: **Начать игру** #### 2. Сцена 1 — Первый шаг - Текст: *“Ты зарегистрировался в ПП и получил оффер. Что дальше?”* - Варианты: - Сделать креатив сам - Купить креатив на фрилансе - Скопировать из спая - При выборе → переход на новую сцену #### 3. Сцена 2 — Запуск - Текст: *“Ты настроил кабинет. Кампания запущена. День 1 — минус $40”* - Выбор: - Слить дальше - Перезапустить - Попросить совет у команды - Подсказки: “Совет от наставника: не лезь в бурю без зонда.” #### 4. Сцена 3 — Первый профит - Если пользователь “выживает” → получает сообщение: `+5 FTD | ROI 143% | Telegram Push: $280` - Сцена радости, эффекты, поздравление #### 5. Альтернативный путь — слив и провал - Если пользователь “жёстко ошибается”: `Warning: Бюджет исчерпан. Опыт получен. Деньги нет.` - Визуал: “Тебе нужен наставник.” #### 6. Финал — Предложение перейти к реальности - Текст: *“Это была игра. А в жизни ставки выше.”* - Кнопка: **Пройти курс и выжить по-настоящему** --- ### 🎨 Визуальный стиль: - Стилистика: ретро-RPG + терминал - Цвет: чёрный, кислотный зелёный, неоновые кнопки - Шрифт: моноширинный, интерфейсный - Анимации: набор текста, экран загрузки, случайные “баги” --- ### ⚙️ Технические особенности: - Логика на JS: переменные, условные переходы - Сохранение/передача результата профиля в заявку - Возможность прохождения с телефона (tap-to-choose) - Scroll-free: поэтапное нажатие → экран смены --- Готов перейти к четвёртой идее — **«Взломай систему»**?