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
JavaScript
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;