UNPKG

tmemory

Version:

A terminal-based Memory card game built with React Ink. Features multiple grid sizes, AI opponent, and high scores.

43 lines (42 loc) 1.74 kB
import { DeckProvider, createStandardDeck } from 'ink-playing-cards'; import React from 'react'; import { GameProvider, useGame } from './context/GameContext/index.js'; import { HighScoreProvider } from './context/HighScoreContext/index.js'; import { GameOver } from './screens/GameOver/index.js'; import { GameScreen } from './screens/GameScreen/index.js'; import LeaderboardScreen from './screens/Leaderboard/index.js'; import { MainMenu } from './screens/MainMenu/index.js'; const GameRouter = () => { const { state } = useGame(); switch (state.gameState) { case 'welcome': return React.createElement(MainMenu, null); case 'playing': return React.createElement(GameScreen, null); case 'gameover': return React.createElement(GameOver, null); case 'leaderboard': return React.createElement(LeaderboardScreen, null); default: return React.createElement(MainMenu, null); } }; const createPairedDeck = () => { // Create multiple standard decks to ensure we have enough cards const standardDeck = [ ...createStandardDeck(), ...createStandardDeck(), ...createStandardDeck(), ...createStandardDeck(), ]; return standardDeck; }; export const App = ({ initialMode, initialGrid }) => { // Create paired deck with sequential pairs const pairedDeck = createPairedDeck(); return (React.createElement(HighScoreProvider, null, React.createElement(DeckProvider, { initialCards: pairedDeck }, React.createElement(GameProvider, { initialMode: initialMode, initialGrid: initialGrid }, React.createElement(GameRouter, null))))); }; export default App;