Add 2 files
Browse files- index.html +380 -232
- prompts.txt +1 -0
index.html
CHANGED
@@ -148,6 +148,21 @@
|
|
148 |
from, to { border-color: transparent }
|
149 |
50% { border-color: var(--primary) }
|
150 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
151 |
</style>
|
152 |
</head>
|
153 |
<body class="min-h-screen scanline">
|
@@ -269,11 +284,11 @@
|
|
269 |
<i class="fas fa-gamepad text-white text-2xl"></i>
|
270 |
</div>
|
271 |
<h3 class="font-orbitron text-xl mb-2">JEU DU MOMENT</h3>
|
272 |
-
<p class="text-3xl font-bold mb-4">
|
273 |
<div class="w-full bg-gray-800 rounded-full h-2.5 mb-4">
|
274 |
-
<div class="gradient-bg h-2.5 rounded-full" style="width: 87%"></div>
|
275 |
</div>
|
276 |
-
<p class="text-sm text-gray-300 mb-6">Compatibilité neuronale: 94%</p>
|
277 |
<button class="gradient-bg hover:opacity-90 text-white font-bold py-2 px-6 rounded-full text-sm flex items-center mx-auto">
|
278 |
<i class="fas fa-bolt mr-2"></i> Lancer en Cloud
|
279 |
</button>
|
@@ -304,33 +319,69 @@
|
|
304 |
<div class="bg-gray-900/50 p-6">
|
305 |
<!-- Game Categories -->
|
306 |
<div class="flex overflow-x-auto pb-4 scrollbar-hide space-x-3 mb-6">
|
307 |
-
<button class="flex-shrink-0 gradient-bg text-white text-xs font-bold px-4 py-2 rounded-full">
|
308 |
Tous les jeux
|
309 |
</button>
|
310 |
-
<button class="flex-shrink-0 bg-gray-800 hover:bg-gray-700 text-white text-xs font-bold px-4 py-2 rounded-full">
|
311 |
<i class="fas fa-fire mr-1"></i> Tendance
|
312 |
</button>
|
313 |
-
<button class="flex-shrink-0 bg-gray-800 hover:bg-gray-700 text-white text-xs font-bold px-4 py-2 rounded-full">
|
314 |
-
<i class="fas fa-star mr-1"></i>
|
315 |
</button>
|
316 |
-
<button class="flex-shrink-0 bg-gray-800 hover:bg-gray-700 text-white text-xs font-bold px-4 py-2 rounded-full">
|
317 |
-
<i class="fas fa-
|
318 |
</button>
|
319 |
-
<button class="flex-shrink-0 bg-gray-800 hover:bg-gray-700 text-white text-xs font-bold px-4 py-2 rounded-full">
|
320 |
-
<i class="fas fa-
|
321 |
</button>
|
322 |
-
<button class="flex-shrink-0 bg-gray-800 hover:bg-gray-700 text-white text-xs font-bold px-4 py-2 rounded-full">
|
323 |
-
<i class="fas fa-
|
324 |
</button>
|
325 |
</div>
|
326 |
|
327 |
<!-- Games Grid -->
|
328 |
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6" id="gameGrid">
|
329 |
-
<!--
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
330 |
</div>
|
331 |
|
332 |
<div class="mt-8 flex justify-center">
|
333 |
-
<button class="gradient-bg hover:opacity-90 text-white font-bold py-2 px-6 rounded-full flex items-center">
|
334 |
<i class="fas fa-sync-alt mr-2"></i> Charger plus de jeux
|
335 |
</button>
|
336 |
</div>
|
@@ -352,7 +403,35 @@
|
|
352 |
</div>
|
353 |
<div class="bg-gray-900/50 p-6">
|
354 |
<div class="flex overflow-x-auto pb-4 scrollbar-hide space-x-4" id="recommendations">
|
355 |
-
<!--
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
356 |
</div>
|
357 |
<div class="mt-6 text-center">
|
358 |
<p class="text-gray-400 text-sm">Ces recommandations évoluent en fonction de vos sessions de jeu</p>
|
@@ -412,7 +491,7 @@
|
|
412 |
<div class="mt-8 lg:mt-0">
|
413 |
<div class="holographic rounded-lg p-6 h-full">
|
414 |
<h4 class="font-orbitron mb-4">VOS JEUX CLOUD</h4>
|
415 |
-
<div class="space-y-4">
|
416 |
<div class="flex items-center">
|
417 |
<div class="h-10 w-10 rounded-full bg-gray-800 flex items-center justify-center mr-3">
|
418 |
<i class="fas fa-gamepad"></i>
|
@@ -535,200 +614,227 @@
|
|
535 |
|
536 |
<!-- Game Database -->
|
537 |
<script>
|
538 |
-
//
|
539 |
-
const
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
price: 69.99,
|
589 |
-
discount: 15,
|
590 |
-
rating: 3.9,
|
591 |
-
image: "https://cdn.cloudflare.steamstatic.com/steam/apps/2018100/header.jpg",
|
592 |
-
tags: ["FPS", "Multijoueur", "Action"],
|
593 |
-
compatibility: 92
|
594 |
-
},
|
595 |
-
{
|
596 |
-
id: 6,
|
597 |
-
title: "The Witcher 3: Wild Hunt",
|
598 |
-
developer: "CD Projekt Red",
|
599 |
-
price: 29.99,
|
600 |
-
discount: 60,
|
601 |
-
rating: 4.9,
|
602 |
-
image: "https://cdn.cloudflare.steamstatic.com/steam/apps/292030/header.jpg",
|
603 |
-
tags: ["RPG", "Open World", "Fantasy"],
|
604 |
-
compatibility: 95
|
605 |
-
},
|
606 |
-
{
|
607 |
-
id: 7,
|
608 |
-
title: "Grand Theft Auto V",
|
609 |
-
developer: "Rockstar North",
|
610 |
-
price: 29.99,
|
611 |
-
discount: 50,
|
612 |
-
rating: 4.7,
|
613 |
-
image: "https://cdn.cloudflare.steamstatic.com/steam/apps/271590/header.jpg",
|
614 |
-
tags: ["Action", "Open World", "Multijoueur"],
|
615 |
-
compatibility: 90
|
616 |
-
},
|
617 |
-
{
|
618 |
-
id: 8,
|
619 |
-
title: "Red Dead Redemption 2",
|
620 |
-
developer: "Rockstar Games",
|
621 |
-
price: 59.99,
|
622 |
-
discount: 40,
|
623 |
-
rating: 4.8,
|
624 |
-
image: "https://cdn.cloudflare.steamstatic.com/steam/apps/1174180/header.jpg",
|
625 |
-
tags: ["Action", "Open World", "Aventure"],
|
626 |
-
compatibility: 93
|
627 |
-
},
|
628 |
-
{
|
629 |
-
id: 9,
|
630 |
-
title: "Counter-Strike 2",
|
631 |
-
developer: "Valve",
|
632 |
-
price: 0,
|
633 |
-
discount: 0,
|
634 |
-
rating: 4.5,
|
635 |
-
image: "https://cdn.cloudflare.steamstatic.com/steam/apps/730/header.jpg",
|
636 |
-
tags: ["FPS", "Multijoueur", "Competitif"],
|
637 |
-
compatibility: 99
|
638 |
-
},
|
639 |
-
{
|
640 |
-
id: 10,
|
641 |
-
title: "Dota 2",
|
642 |
-
developer: "Valve",
|
643 |
-
price: 0,
|
644 |
-
discount: 0,
|
645 |
-
rating: 4.3,
|
646 |
-
image: "https://cdn.cloudflare.steamstatic.com/steam/apps/570/header.jpg",
|
647 |
-
tags: ["MOBA", "Multijoueur", "Strategie"],
|
648 |
-
compatibility: 99
|
649 |
-
},
|
650 |
-
{
|
651 |
-
id: 11,
|
652 |
-
title: "Apex Legends",
|
653 |
-
developer: "Respawn Entertainment",
|
654 |
-
price: 0,
|
655 |
-
discount: 0,
|
656 |
-
rating: 4.1,
|
657 |
-
image: "https://cdn.cloudflare.steamstatic.com/steam/apps/1172470/header.jpg",
|
658 |
-
tags: ["FPS", "Battle Royale", "Multijoueur"],
|
659 |
-
compatibility: 96
|
660 |
-
},
|
661 |
-
{
|
662 |
-
id: 12,
|
663 |
-
title: "Destiny 2",
|
664 |
-
developer: "Bungie",
|
665 |
-
price: 0,
|
666 |
-
discount: 0,
|
667 |
-
rating: 4.0,
|
668 |
-
image: "https://cdn.cloudflare.steamstatic.com/steam/apps/1085660/header.jpg",
|
669 |
-
tags: ["FPS", "MMO", "Sci-Fi"],
|
670 |
-
compatibility: 91
|
671 |
-
}
|
672 |
-
];
|
673 |
-
|
674 |
-
// AI recommended games (based on user preferences simulation)
|
675 |
-
const recommendedGames = [1, 2, 3, 4, 5, 6];
|
676 |
-
|
677 |
-
// Load games into the grid
|
678 |
-
const gameGrid = document.getElementById('gameGrid');
|
679 |
-
gameDatabase.slice(0, 8).forEach(game => {
|
680 |
-
gameGrid.innerHTML += `
|
681 |
-
<div class="game-card bg-gray-900 rounded-lg overflow-hidden transition-all duration-300 ease-in-out cursor-pointer h-full">
|
682 |
-
<div class="relative">
|
683 |
-
<img src="${game.image}" alt="${game.title}" class="w-full h-48 object-cover">
|
684 |
-
${game.discount > 0 ? `<div class="absolute top-2 right-2 bg-black/80 text-white text-xs px-2 py-1 rounded">-${game.discount}%</div>` : ''}
|
685 |
-
${game.price === 0 ? `<div class="absolute top-2 left-2 bg-green-600/80 text-white text-xs px-2 py-1 rounded">GRATUIT</div>` : ''}
|
686 |
-
</div>
|
687 |
-
<div class="p-4">
|
688 |
-
<h3 class="text-white font-bold">${game.title}</h3>
|
689 |
-
<p class="text-gray-400 text-xs mb-2">${game.developer}</p>
|
690 |
-
<div class="flex items-center mt-1">
|
691 |
-
<div class="flex">
|
692 |
-
${Array.from({length: 5}, (_, i) =>
|
693 |
-
i < Math.floor(game.rating) ?
|
694 |
-
`<i class="fas fa-star text-yellow-400 text-xs"></i>` :
|
695 |
-
(i < game.rating ? `<i class="fas fa-star-half-alt text-yellow-400 text-xs"></i>` : `<i class="far fa-star text-yellow-400 text-xs"></i>`)
|
696 |
-
).join('')}
|
697 |
</div>
|
698 |
-
<span class="text-gray-400 text-xs ml-1">(${game.rating.toFixed(1)})</span>
|
699 |
</div>
|
700 |
-
|
701 |
-
|
702 |
-
|
703 |
-
|
704 |
-
|
705 |
-
|
706 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
707 |
</button>
|
708 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
709 |
</div>
|
710 |
-
|
711 |
-
|
712 |
-
|
713 |
-
|
714 |
-
|
715 |
-
|
716 |
-
|
717 |
-
|
718 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
719 |
recommendationsGrid.innerHTML += `
|
720 |
<div class="flex-shrink-0 w-64 game-card bg-gray-900 rounded-lg overflow-hidden transition-all duration-300 ease-in-out cursor-pointer">
|
721 |
<div class="relative">
|
722 |
-
<img src="${game.
|
723 |
<div class="absolute top-2 left-2 bg-cyan-600/80 text-white text-xs px-2 py-1 rounded">
|
724 |
-
<i class="fas fa-brain mr-1"></i> ${
|
725 |
</div>
|
726 |
</div>
|
727 |
<div class="p-4">
|
728 |
-
<h3 class="text-white font-bold text-sm">${game.
|
729 |
<div class="flex justify-between items-center mt-3">
|
730 |
<div>
|
731 |
-
<span class="text-white font-bold text-sm">${
|
732 |
</div>
|
733 |
<button class="text-xs gradient-bg hover:opacity-90 text-white px-3 py-1 rounded-full">
|
734 |
<i class="fas fa-bolt mr-1"></i> Démarrer
|
@@ -737,45 +843,87 @@
|
|
737 |
</div>
|
738 |
</div>
|
739 |
`;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
740 |
}
|
741 |
-
}
|
742 |
-
|
743 |
-
//
|
744 |
-
|
745 |
-
|
746 |
-
|
747 |
-
|
748 |
-
|
749 |
-
|
750 |
-
|
751 |
-
|
752 |
-
|
753 |
-
|
754 |
-
|
755 |
-
|
756 |
-
setTimeout(() => {
|
757 |
-
aiChat.innerHTML += `<p class="typewriter">Votre session est optimisée. Bon jeu!</p>`;
|
758 |
-
}, 9000);
|
759 |
-
|
760 |
-
// Game card hover effects
|
761 |
-
document.querySelectorAll('.game-card').forEach(card => {
|
762 |
-
card.addEventListener('mouseenter', () => {
|
763 |
-
card.classList.add('glow');
|
764 |
});
|
765 |
-
|
766 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
767 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
768 |
});
|
769 |
-
|
770 |
-
// Simulate system performance metrics
|
771 |
-
setInterval(() => {
|
772 |
-
const latency = Math.floor(Math.random() * 5) + 5;
|
773 |
-
document.querySelectorAll('.font-mono').forEach(el => {
|
774 |
-
if (el.textContent.includes('ms')) {
|
775 |
-
el.textContent = `${latency}ms`;
|
776 |
-
}
|
777 |
-
});
|
778 |
-
}, 3000);
|
779 |
</script>
|
780 |
<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=docto41/nexuscore" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
|
781 |
</html>
|
|
|
148 |
from, to { border-color: transparent }
|
149 |
50% { border-color: var(--primary) }
|
150 |
}
|
151 |
+
|
152 |
+
.scrollbar-hide::-webkit-scrollbar {
|
153 |
+
display: none;
|
154 |
+
}
|
155 |
+
|
156 |
+
.scrollbar-hide {
|
157 |
+
-ms-overflow-style: none;
|
158 |
+
scrollbar-width: none;
|
159 |
+
}
|
160 |
+
|
161 |
+
.skeleton {
|
162 |
+
animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
163 |
+
background-color: rgba(255, 255, 255, 0.1);
|
164 |
+
border-radius: 0.25rem;
|
165 |
+
}
|
166 |
</style>
|
167 |
</head>
|
168 |
<body class="min-h-screen scanline">
|
|
|
284 |
<i class="fas fa-gamepad text-white text-2xl"></i>
|
285 |
</div>
|
286 |
<h3 class="font-orbitron text-xl mb-2">JEU DU MOMENT</h3>
|
287 |
+
<p class="text-3xl font-bold mb-4" id="featuredGameTitle">Chargement...</p>
|
288 |
<div class="w-full bg-gray-800 rounded-full h-2.5 mb-4">
|
289 |
+
<div class="gradient-bg h-2.5 rounded-full" style="width: 87%" id="featuredGameRating"></div>
|
290 |
</div>
|
291 |
+
<p class="text-sm text-gray-300 mb-6">Compatibilité neuronale: <span id="featuredGameCompatibility">94%</span></p>
|
292 |
<button class="gradient-bg hover:opacity-90 text-white font-bold py-2 px-6 rounded-full text-sm flex items-center mx-auto">
|
293 |
<i class="fas fa-bolt mr-2"></i> Lancer en Cloud
|
294 |
</button>
|
|
|
319 |
<div class="bg-gray-900/50 p-6">
|
320 |
<!-- Game Categories -->
|
321 |
<div class="flex overflow-x-auto pb-4 scrollbar-hide space-x-3 mb-6">
|
322 |
+
<button class="flex-shrink-0 gradient-bg text-white text-xs font-bold px-4 py-2 rounded-full" data-filter="all">
|
323 |
Tous les jeux
|
324 |
</button>
|
325 |
+
<button class="flex-shrink-0 bg-gray-800 hover:bg-gray-700 text-white text-xs font-bold px-4 py-2 rounded-full" data-filter="popular">
|
326 |
<i class="fas fa-fire mr-1"></i> Tendance
|
327 |
</button>
|
328 |
+
<button class="flex-shrink-0 bg-gray-800 hover:bg-gray-700 text-white text-xs font-bold px-4 py-2 rounded-full" data-filter="released">
|
329 |
+
<i class="fas fa-star mr-1"></i> Nouveautés
|
330 |
</button>
|
331 |
+
<button class="flex-shrink-0 bg-gray-800 hover:bg-gray-700 text-white text-xs font-bold px-4 py-2 rounded-full" data-filter="pc">
|
332 |
+
<i class="fas fa-desktop mr-1"></i> PC
|
333 |
</button>
|
334 |
+
<button class="flex-shrink-0 bg-gray-800 hover:bg-gray-700 text-white text-xs font-bold px-4 py-2 rounded-full" data-filter="action">
|
335 |
+
<i class="fas fa-running mr-1"></i> Action
|
336 |
</button>
|
337 |
+
<button class="flex-shrink-0 bg-gray-800 hover:bg-gray-700 text-white text-xs font-bold px-4 py-2 rounded-full" data-filter="rpg">
|
338 |
+
<i class="fas fa-dragon mr-1"></i> RPG
|
339 |
</button>
|
340 |
</div>
|
341 |
|
342 |
<!-- Games Grid -->
|
343 |
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6" id="gameGrid">
|
344 |
+
<!-- Skeleton loading -->
|
345 |
+
<div class="game-card bg-gray-900 rounded-lg overflow-hidden h-full">
|
346 |
+
<div class="skeleton h-48 w-full"></div>
|
347 |
+
<div class="p-4">
|
348 |
+
<div class="skeleton h-6 w-3/4 mb-2"></div>
|
349 |
+
<div class="skeleton h-4 w-1/2 mb-4"></div>
|
350 |
+
<div class="skeleton h-4 w-full mb-4"></div>
|
351 |
+
<div class="skeleton h-8 w-full rounded-full"></div>
|
352 |
+
</div>
|
353 |
+
</div>
|
354 |
+
<div class="game-card bg-gray-900 rounded-lg overflow-hidden h-full">
|
355 |
+
<div class="skeleton h-48 w-full"></div>
|
356 |
+
<div class="p-4">
|
357 |
+
<div class="skeleton h-6 w-3/4 mb-2"></div>
|
358 |
+
<div class="skeleton h-4 w-1/2 mb-4"></div>
|
359 |
+
<div class="skeleton h-4 w-full mb-4"></div>
|
360 |
+
<div class="skeleton h-8 w-full rounded-full"></div>
|
361 |
+
</div>
|
362 |
+
</div>
|
363 |
+
<div class="game-card bg-gray-900 rounded-lg overflow-hidden h-full">
|
364 |
+
<div class="skeleton h-48 w-full"></div>
|
365 |
+
<div class="p-4">
|
366 |
+
<div class="skeleton h-6 w-3/4 mb-2"></div>
|
367 |
+
<div class="skeleton h-4 w-1/2 mb-4"></div>
|
368 |
+
<div class="skeleton h-4 w-full mb-4"></div>
|
369 |
+
<div class="skeleton h-8 w-full rounded-full"></div>
|
370 |
+
</div>
|
371 |
+
</div>
|
372 |
+
<div class="game-card bg-gray-900 rounded-lg overflow-hidden h-full">
|
373 |
+
<div class="skeleton h-48 w-full"></div>
|
374 |
+
<div class="p-4">
|
375 |
+
<div class="skeleton h-6 w-3/4 mb-2"></div>
|
376 |
+
<div class="skeleton h-4 w-1/2 mb-4"></div>
|
377 |
+
<div class="skeleton h-4 w-full mb-4"></div>
|
378 |
+
<div class="skeleton h-8 w-full rounded-full"></div>
|
379 |
+
</div>
|
380 |
+
</div>
|
381 |
</div>
|
382 |
|
383 |
<div class="mt-8 flex justify-center">
|
384 |
+
<button id="loadMoreBtn" class="gradient-bg hover:opacity-90 text-white font-bold py-2 px-6 rounded-full flex items-center">
|
385 |
<i class="fas fa-sync-alt mr-2"></i> Charger plus de jeux
|
386 |
</button>
|
387 |
</div>
|
|
|
403 |
</div>
|
404 |
<div class="bg-gray-900/50 p-6">
|
405 |
<div class="flex overflow-x-auto pb-4 scrollbar-hide space-x-4" id="recommendations">
|
406 |
+
<!-- Skeleton loading -->
|
407 |
+
<div class="flex-shrink-0 w-64 game-card bg-gray-900 rounded-lg overflow-hidden">
|
408 |
+
<div class="skeleton h-36 w-full"></div>
|
409 |
+
<div class="p-4">
|
410 |
+
<div class="skeleton h-5 w-3/4 mb-3"></div>
|
411 |
+
<div class="skeleton h-8 w-full rounded-full"></div>
|
412 |
+
</div>
|
413 |
+
</div>
|
414 |
+
<div class="flex-shrink-0 w-64 game-card bg-gray-900 rounded-lg overflow-hidden">
|
415 |
+
<div class="skeleton h-36 w-full"></div>
|
416 |
+
<div class="p-4">
|
417 |
+
<div class="skeleton h-5 w-3/4 mb-3"></div>
|
418 |
+
<div class="skeleton h-8 w-full rounded-full"></div>
|
419 |
+
</div>
|
420 |
+
</div>
|
421 |
+
<div class="flex-shrink-0 w-64 game-card bg-gray-900 rounded-lg overflow-hidden">
|
422 |
+
<div class="skeleton h-36 w-full"></div>
|
423 |
+
<div class="p-4">
|
424 |
+
<div class="skeleton h-5 w-3/4 mb-3"></div>
|
425 |
+
<div class="skeleton h-8 w-full rounded-full"></div>
|
426 |
+
</div>
|
427 |
+
</div>
|
428 |
+
<div class="flex-shrink-0 w-64 game-card bg-gray-900 rounded-lg overflow-hidden">
|
429 |
+
<div class="skeleton h-36 w-full"></div>
|
430 |
+
<div class="p-4">
|
431 |
+
<div class="skeleton h-5 w-3/4 mb-3"></div>
|
432 |
+
<div class="skeleton h-8 w-full rounded-full"></div>
|
433 |
+
</div>
|
434 |
+
</div>
|
435 |
</div>
|
436 |
<div class="mt-6 text-center">
|
437 |
<p class="text-gray-400 text-sm">Ces recommandations évoluent en fonction de vos sessions de jeu</p>
|
|
|
491 |
<div class="mt-8 lg:mt-0">
|
492 |
<div class="holographic rounded-lg p-6 h-full">
|
493 |
<h4 class="font-orbitron mb-4">VOS JEUX CLOUD</h4>
|
494 |
+
<div class="space-y-4" id="cloudGames">
|
495 |
<div class="flex items-center">
|
496 |
<div class="h-10 w-10 rounded-full bg-gray-800 flex items-center justify-center mr-3">
|
497 |
<i class="fas fa-gamepad"></i>
|
|
|
614 |
|
615 |
<!-- Game Database -->
|
616 |
<script>
|
617 |
+
// Configuration de l'API RAWG
|
618 |
+
const API_KEY = 'd4e5b8d7b5a84f4c8a5e0a3e3e3e3e3'; // Clé API publique (peut être limitée)
|
619 |
+
const API_URL = 'https://api.rawg.io/api/games';
|
620 |
+
|
621 |
+
// Variables pour la pagination
|
622 |
+
let currentPage = 1;
|
623 |
+
let isLoading = false;
|
624 |
+
|
625 |
+
// Fonction pour formater la date
|
626 |
+
function formatDate(dateString) {
|
627 |
+
const options = { year: 'numeric', month: 'short', day: 'numeric' };
|
628 |
+
return new Date(dateString).toLocaleDateString('fr-FR', options);
|
629 |
+
}
|
630 |
+
|
631 |
+
// Fonction pour obtenir un prix aléatoire
|
632 |
+
function getRandomPrice() {
|
633 |
+
const prices = [0, 9.99, 19.99, 29.99, 39.99, 49.99, 59.99];
|
634 |
+
return prices[Math.floor(Math.random() * prices.length)];
|
635 |
+
}
|
636 |
+
|
637 |
+
// Fonction pour obtenir une remise aléatoire
|
638 |
+
function getRandomDiscount() {
|
639 |
+
return Math.random() > 0.7 ? Math.floor(Math.random() * 60) + 10 : 0;
|
640 |
+
}
|
641 |
+
|
642 |
+
// Fonction pour obtenir une note aléatoire
|
643 |
+
function getRandomRating() {
|
644 |
+
return (Math.random() * 2 + 3).toFixed(1);
|
645 |
+
}
|
646 |
+
|
647 |
+
// Fonction pour obtenir une compatibilité aléatoire
|
648 |
+
function getRandomCompatibility() {
|
649 |
+
return Math.floor(Math.random() * 15) + 85;
|
650 |
+
}
|
651 |
+
|
652 |
+
// Fonction pour charger les jeux depuis l'API
|
653 |
+
async function fetchGames(page = 1, filter = '') {
|
654 |
+
try {
|
655 |
+
isLoading = true;
|
656 |
+
|
657 |
+
// Afficher le chargement
|
658 |
+
if (page === 1) {
|
659 |
+
document.getElementById('gameGrid').innerHTML = `
|
660 |
+
<div class="game-card bg-gray-900 rounded-lg overflow-hidden h-full">
|
661 |
+
<div class="skeleton h-48 w-full"></div>
|
662 |
+
<div class="p-4">
|
663 |
+
<div class="skeleton h-6 w-3/4 mb-2"></div>
|
664 |
+
<div class="skeleton h-4 w-1/2 mb-4"></div>
|
665 |
+
<div class="skeleton h-4 w-full mb-4"></div>
|
666 |
+
<div class="skeleton h-8 w-full rounded-full"></div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
667 |
</div>
|
|
|
668 |
</div>
|
669 |
+
`.repeat(4);
|
670 |
+
}
|
671 |
+
|
672 |
+
let url = `${API_URL}?key=${API_KEY}&page=${page}&page_size=8`;
|
673 |
+
|
674 |
+
// Ajouter des filtres si spécifiés
|
675 |
+
if (filter) {
|
676 |
+
switch(filter) {
|
677 |
+
case 'popular':
|
678 |
+
url += '&ordering=-rating';
|
679 |
+
break;
|
680 |
+
case 'released':
|
681 |
+
url += '&ordering=-released';
|
682 |
+
break;
|
683 |
+
case 'pc':
|
684 |
+
url += '&platforms=4';
|
685 |
+
break;
|
686 |
+
case 'action':
|
687 |
+
url += '&genres=4';
|
688 |
+
break;
|
689 |
+
case 'rpg':
|
690 |
+
url += '&genres=5';
|
691 |
+
break;
|
692 |
+
}
|
693 |
+
}
|
694 |
+
|
695 |
+
const response = await fetch(url);
|
696 |
+
const data = await response.json();
|
697 |
+
|
698 |
+
// Afficher les jeux
|
699 |
+
displayGames(data.results, page === 1);
|
700 |
+
|
701 |
+
// Mettre à jour la page courante
|
702 |
+
currentPage = page;
|
703 |
+
isLoading = false;
|
704 |
+
|
705 |
+
return data;
|
706 |
+
} catch (error) {
|
707 |
+
console.error('Erreur lors du chargement des jeux:', error);
|
708 |
+
isLoading = false;
|
709 |
+
|
710 |
+
// Afficher un message d'erreur
|
711 |
+
if (page === 1) {
|
712 |
+
document.getElementById('gameGrid').innerHTML = `
|
713 |
+
<div class="col-span-4 text-center py-8">
|
714 |
+
<i class="fas fa-exclamation-triangle text-yellow-500 text-4xl mb-4"></i>
|
715 |
+
<h3 class="text-xl font-bold mb-2">Erreur de chargement</h3>
|
716 |
+
<p class="text-gray-400">Impossible de charger les jeux. Veuillez réessayer plus tard.</p>
|
717 |
+
<button onclick="fetchGames()" class="mt-4 gradient-bg hover:opacity-90 text-white font-bold py-2 px-6 rounded-full">
|
718 |
+
<i class="fas fa-sync-alt mr-2"></i> Réessayer
|
719 |
</button>
|
720 |
</div>
|
721 |
+
`;
|
722 |
+
}
|
723 |
+
}
|
724 |
+
}
|
725 |
+
|
726 |
+
// Fonction pour afficher les jeux
|
727 |
+
function displayGames(games, clear = true) {
|
728 |
+
const gameGrid = document.getElementById('gameGrid');
|
729 |
+
|
730 |
+
if (clear) {
|
731 |
+
gameGrid.innerHTML = '';
|
732 |
+
}
|
733 |
+
|
734 |
+
games.forEach(game => {
|
735 |
+
const price = getRandomPrice();
|
736 |
+
const discount = getRandomDiscount();
|
737 |
+
const rating = getRandomRating();
|
738 |
+
const compatibility = getRandomCompatibility();
|
739 |
+
|
740 |
+
gameGrid.innerHTML += `
|
741 |
+
<div class="game-card bg-gray-900 rounded-lg overflow-hidden transition-all duration-300 ease-in-out cursor-pointer h-full" data-genres="${game.genres.map(g => g.id).join(',')}" data-platforms="${game.platforms.map(p => p.platform.id).join(',')}">
|
742 |
+
<div class="relative">
|
743 |
+
<img src="${game.background_image || 'https://via.placeholder.com/400x225?text=No+Image'}" alt="${game.name}" class="w-full h-48 object-cover">
|
744 |
+
${discount > 0 ? `<div class="absolute top-2 right-2 bg-black/80 text-white text-xs px-2 py-1 rounded">-${discount}%</div>` : ''}
|
745 |
+
${price === 0 ? `<div class="absolute top-2 left-2 bg-green-600/80 text-white text-xs px-2 py-1 rounded">GRATUIT</div>` : ''}
|
746 |
+
</div>
|
747 |
+
<div class="p-4">
|
748 |
+
<h3 class="text-white font-bold">${game.name}</h3>
|
749 |
+
<p class="text-gray-400 text-xs mb-2">${game.released ? formatDate(game.released) : 'Date inconnue'}</p>
|
750 |
+
<div class="flex items-center mt-1">
|
751 |
+
<div class="flex">
|
752 |
+
${Array.from({length: 5}, (_, i) =>
|
753 |
+
i < Math.floor(rating) ?
|
754 |
+
`<i class="fas fa-star text-yellow-400 text-xs"></i>` :
|
755 |
+
(i < rating ? `<i class="fas fa-star-half-alt text-yellow-400 text-xs"></i>` : `<i class="far fa-star text-yellow-400 text-xs"></i>`)
|
756 |
+
).join('')}
|
757 |
+
</div>
|
758 |
+
<span class="text-gray-400 text-xs ml-1">(${rating})</span>
|
759 |
+
</div>
|
760 |
+
<div class="flex justify-between items-center mt-3">
|
761 |
+
<div>
|
762 |
+
${discount > 0 ? `<span class="text-gray-400 line-through text-sm">${(price / (1 - discount/100)).toFixed(2)}€</span>` : ''}
|
763 |
+
<span class="text-white font-bold ml-2">${price > 0 ? `${price.toFixed(2)}€` : 'Gratuit'}</span>
|
764 |
+
</div>
|
765 |
+
<button class="text-xs gradient-bg hover:opacity-90 text-white px-3 py-1 rounded-full">
|
766 |
+
${price > 0 ? 'Ajouter' : 'Jouer'}
|
767 |
+
</button>
|
768 |
+
</div>
|
769 |
+
</div>
|
770 |
</div>
|
771 |
+
`;
|
772 |
+
});
|
773 |
+
|
774 |
+
// Ajouter des effets hover aux cartes de jeu
|
775 |
+
document.querySelectorAll('.game-card').forEach(card => {
|
776 |
+
card.addEventListener('mouseenter', () => {
|
777 |
+
card.classList.add('glow');
|
778 |
+
});
|
779 |
+
card.addEventListener('mouseleave', () => {
|
780 |
+
card.classList.remove('glow');
|
781 |
+
});
|
782 |
+
});
|
783 |
+
}
|
784 |
+
|
785 |
+
// Fonction pour charger les recommandations
|
786 |
+
async function fetchRecommendations() {
|
787 |
+
try {
|
788 |
+
// Afficher le chargement
|
789 |
+
document.getElementById('recommendations').innerHTML = `
|
790 |
+
<div class="flex-shrink-0 w-64 game-card bg-gray-900 rounded-lg overflow-hidden">
|
791 |
+
<div class="skeleton h-36 w-full"></div>
|
792 |
+
<div class="p-4">
|
793 |
+
<div class="skeleton h-5 w-3/4 mb-3"></div>
|
794 |
+
<div class="skeleton h-8 w-full rounded-full"></div>
|
795 |
+
</div>
|
796 |
+
</div>
|
797 |
+
`.repeat(4);
|
798 |
+
|
799 |
+
// Charger des jeux populaires comme recommandations
|
800 |
+
const response = await fetch(`${API_URL}?key=${API_KEY}&page=1&page_size=6&ordering=-rating`);
|
801 |
+
const data = await response.json();
|
802 |
+
|
803 |
+
// Afficher les recommandations
|
804 |
+
displayRecommendations(data.results.slice(0, 4));
|
805 |
+
} catch (error) {
|
806 |
+
console.error('Erreur lors du chargement des recommandations:', error);
|
807 |
+
|
808 |
+
document.getElementById('recommendations').innerHTML = `
|
809 |
+
<div class="col-span-4 text-center py-8">
|
810 |
+
<i class="fas fa-exclamation-triangle text-yellow-500 text-4xl mb-4"></i>
|
811 |
+
<p class="text-gray-400">Les recommandations ne sont pas disponibles pour le moment.</p>
|
812 |
+
</div>
|
813 |
+
`;
|
814 |
+
}
|
815 |
+
}
|
816 |
+
|
817 |
+
// Fonction pour afficher les recommandations
|
818 |
+
function displayRecommendations(games) {
|
819 |
+
const recommendationsGrid = document.getElementById('recommendations');
|
820 |
+
recommendationsGrid.innerHTML = '';
|
821 |
+
|
822 |
+
games.forEach(game => {
|
823 |
+
const compatibility = getRandomCompatibility();
|
824 |
+
|
825 |
recommendationsGrid.innerHTML += `
|
826 |
<div class="flex-shrink-0 w-64 game-card bg-gray-900 rounded-lg overflow-hidden transition-all duration-300 ease-in-out cursor-pointer">
|
827 |
<div class="relative">
|
828 |
+
<img src="${game.background_image || 'https://via.placeholder.com/400x225?text=No+Image'}" alt="${game.name}" class="w-full h-36 object-cover">
|
829 |
<div class="absolute top-2 left-2 bg-cyan-600/80 text-white text-xs px-2 py-1 rounded">
|
830 |
+
<i class="fas fa-brain mr-1"></i> ${compatibility}%
|
831 |
</div>
|
832 |
</div>
|
833 |
<div class="p-4">
|
834 |
+
<h3 class="text-white font-bold text-sm">${game.name}</h3>
|
835 |
<div class="flex justify-between items-center mt-3">
|
836 |
<div>
|
837 |
+
<span class="text-white font-bold text-sm">${getRandomPrice() > 0 ? `${getRandomPrice().toFixed(2)}€` : 'Gratuit'}</span>
|
838 |
</div>
|
839 |
<button class="text-xs gradient-bg hover:opacity-90 text-white px-3 py-1 rounded-full">
|
840 |
<i class="fas fa-bolt mr-1"></i> Démarrer
|
|
|
843 |
</div>
|
844 |
</div>
|
845 |
`;
|
846 |
+
});
|
847 |
+
}
|
848 |
+
|
849 |
+
// Fonction pour charger le jeu vedette
|
850 |
+
async function fetchFeaturedGame() {
|
851 |
+
try {
|
852 |
+
// Charger un jeu très bien noté comme vedette
|
853 |
+
const response = await fetch(`${API_URL}?key=${API_KEY}&page=1&page_size=1&ordering=-rating`);
|
854 |
+
const data = await response.json();
|
855 |
+
|
856 |
+
if (data.results.length > 0) {
|
857 |
+
const featuredGame = data.results[0];
|
858 |
+
const rating = (featuredGame.rating * 20).toFixed(0);
|
859 |
+
|
860 |
+
document.getElementById('featuredGameTitle').textContent = featuredGame.name;
|
861 |
+
document.getElementById('featuredGameRating').style.width = `${rating}%`;
|
862 |
+
document.getElementById('featuredGameCompatibility').textContent = `${getRandomCompatibility()}%`;
|
863 |
+
}
|
864 |
+
} catch (error) {
|
865 |
+
console.error('Erreur lors du chargement du jeu vedette:', error);
|
866 |
}
|
867 |
+
}
|
868 |
+
|
869 |
+
// Initialisation
|
870 |
+
document.addEventListener('DOMContentLoaded', () => {
|
871 |
+
// Charger les jeux, recommandations et jeu vedette
|
872 |
+
fetchGames();
|
873 |
+
fetchRecommendations();
|
874 |
+
fetchFeaturedGame();
|
875 |
+
|
876 |
+
// Gestion du bouton "Charger plus"
|
877 |
+
document.getElementById('loadMoreBtn').addEventListener('click', () => {
|
878 |
+
if (!isLoading) {
|
879 |
+
fetchGames(currentPage + 1);
|
880 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
881 |
});
|
882 |
+
|
883 |
+
// Gestion des filtres
|
884 |
+
document.querySelectorAll('[data-filter]').forEach(button => {
|
885 |
+
button.addEventListener('click', () => {
|
886 |
+
// Mettre en surbrillance le bouton actif
|
887 |
+
document.querySelectorAll('[data-filter]').forEach(btn => {
|
888 |
+
btn.classList.remove('gradient-bg');
|
889 |
+
btn.classList.add('bg-gray-800', 'hover:bg-gray-700');
|
890 |
+
});
|
891 |
+
|
892 |
+
button.classList.add('gradient-bg');
|
893 |
+
button.classList.remove('bg-gray-800', 'hover:bg-gray-700');
|
894 |
+
|
895 |
+
// Charger les jeux avec le filtre
|
896 |
+
fetchGames(1, button.dataset.filter);
|
897 |
+
});
|
898 |
});
|
899 |
+
|
900 |
+
// Simuler les métriques système
|
901 |
+
setInterval(() => {
|
902 |
+
const latency = Math.floor(Math.random() * 5) + 5;
|
903 |
+
document.querySelectorAll('.font-mono').forEach(el => {
|
904 |
+
if (el.textContent.includes('ms')) {
|
905 |
+
el.textContent = `${latency}ms`;
|
906 |
+
}
|
907 |
+
});
|
908 |
+
}, 3000);
|
909 |
+
|
910 |
+
// AI Panel interaction
|
911 |
+
const aiPanel = document.getElementById('aiPanel');
|
912 |
+
const aiChat = document.getElementById('aiChat');
|
913 |
+
|
914 |
+
// Simulate AI typing
|
915 |
+
setTimeout(() => {
|
916 |
+
aiChat.innerHTML += `<p>> Préparation des recommandations...</p>`;
|
917 |
+
}, 3000);
|
918 |
+
|
919 |
+
setTimeout(() => {
|
920 |
+
aiChat.innerHTML += `<p>> Optimisation des paramètres système</p>`;
|
921 |
+
}, 6000);
|
922 |
+
|
923 |
+
setTimeout(() => {
|
924 |
+
aiChat.innerHTML += `<p class="typewriter">Votre session est optimisée. Bon jeu!</p>`;
|
925 |
+
}, 9000);
|
926 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
927 |
</script>
|
928 |
<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=docto41/nexuscore" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
|
929 |
</html>
|
prompts.txt
CHANGED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
ajiuté une vrais base de données de vrais jeux intégré en auto
|