import React, { useState } from 'react'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { Input } from '@/components/ui/input'; import { Badge } from '@/components/ui/badge'; import { Search } from 'lucide-react'; import Layout from '@/components/Layout'; import GameOfSim from '@/components/GameOfSim'; import NorthcottsGame from '@/components/NorthcottsGame'; import NimGame from '@/components/NimGame'; import AssistedNimGame from '@/components/AssistedNimGame'; import GoldCoinGame from '@/components/GoldCoinGame'; import GuessingGame from '@/components/GuessingGame'; import SubtractionGame from '@/components/SubtractionGame'; import ParityBitsGame from '@/components/ParityBitsGame'; import CrapsGame from '@/components/CrapsGame'; import BagchalGame from '@/components/BagchalGame'; interface Game { id: string; title: string; description: string; tags: string[]; component: React.ComponentType<{ showSocialShare?: boolean }>; } const games: Game[] = [ { id: 'bagchal', title: 'Bagchal (Tiger and Goats)', description: 'A strategic board game where the tiger tries to capture goats by jumping over them, while goats try to trap the tiger so it cannot move.', tags: ['strategy', 'two-player', 'board-game', 'traditional', 'nepal', 'asymmetric'], component: BagchalGame }, { id: 'craps-game', title: 'Craps: An Exploration', description: 'Experience the classic casino dice game! Roll two dice and learn about probability as you discover the rules of the opening throw.', tags: ['probability', 'dice', 'casino', 'mathematics', 'statistics', 'gambling'], component: CrapsGame }, { id: 'parity-magic', title: 'Parity Magic', description: 'Learn how parity bits detect and correct single-bit errors! Set up a grid, add parity bits, flip a bit, and watch the magic of error detection unfold.', tags: ['error-correction', 'parity', 'computer-science', 'educational', 'interactive', 'magic-trick'], component: ParityBitsGame }, { id: 'subtraction-game-uid-2024', title: 'The Subtraction Game', description: 'A strategic two-player game where players take turns removing circles. Click on any of the last k circles to remove it and all circles to its right!', tags: ['strategy', 'two-player', 'logic', 'game-theory', 'subtraction'], component: SubtractionGame }, { id: 'guessing-game', title: 'Number Guessing Game', description: 'Experience different search algorithms through interactive gameplay. Compare random, linear, and binary search strategies!', tags: ['algorithms', 'search', 'educational', 'interactive', 'binary-search', 'computer-science'], component: GuessingGame }, { id: 'gold-coin', title: 'The Gold Coin Game', description: 'A strategic two-player game where you move coins to the left or take the leftmost coin. The player who takes the gold coin wins!', tags: ['strategy', 'two-player', 'logic', 'game-theory', 'movement', 'coins'], component: GoldCoinGame }, { id: 'assisted-nim', title: 'Assisted Game of Nim', description: 'Learn the XOR strategy! Visualize how powers of 2 determine winning moves with color-coded borders.', tags: ['strategy', 'two-player', 'math', 'logic', 'game-theory', 'xor-strategy', 'educational'], component: AssistedNimGame }, { id: 'nim', title: 'Game of Nim', description: 'A classic two-player game of strategy. Take turns removing stones from heaps. The player to take the last stone wins!', tags: ['strategy', 'two-player', 'math', 'logic', 'game-theory'], component: NimGame }, { id: 'sim', title: 'Game of Sim', description: 'A strategic two-player game where you take turns coloring edges between vertices, trying to avoid creating a triangle of your own color.', tags: ['strategy', 'graph-theory', 'two-player', 'logic', 'game-theory'], component: GameOfSim }, { id: 'northcotts-game', title: "Northcott's Game", description: 'A classic strategy game played on a grid where players move pieces horizontally toward each other, trying to be the last one able to move.', tags: ['strategy', 'two-player', 'grid-game', 'logic', 'movement'], component: NorthcottsGame } ]; const GamesGallery = () => { const [searchTerm, setSearchTerm] = useState(''); const [selectedGame, setSelectedGame] = useState(null); const filteredGames = games.filter(game => game.title.toLowerCase().includes(searchTerm.toLowerCase()) || game.description.toLowerCase().includes(searchTerm.toLowerCase()) || game.tags.some(tag => tag.toLowerCase().includes(searchTerm.toLowerCase())) ); if (selectedGame) { const GameComponent = selectedGame.component; return (
); } return (

Games

Learn through play with interactive games that reinforce computer science and mathematical concepts.

{/* Search bar */}
setSearchTerm(e.target.value)} className="pl-10" />
{/* Games Gallery */}
{filteredGames.map(game => ( setSelectedGame(game)} > {game.title} {game.description}
{game.tags.map(tag => ( {tag} ))}
))}
{filteredGames.length === 0 && (

No games found matching your search.

)}
); }; export default GamesGallery;