UNPKG

tmemory

Version:

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

51 lines (50 loc) 1.31 kB
import type { TCardValue, TSuit } from 'ink-playing-cards'; export type GameMode = 'single' | 'vs-player' | 'vs-ai'; export type Player = 'p1' | 'p2' | 'ai'; export type GameState = 'welcome' | 'playing' | 'gameover' | 'leaderboard'; export type GridSelectionMode = 'preset' | 'custom'; export interface GridDimension { rows: number; cols: number; } export interface GameCard { suit: TSuit; value: TCardValue; faceUp: boolean; selected?: boolean; } export interface GameScores { p1: number; p2: number; ai: number; } export interface HighScore { time: number; rows: number; cols: number; gameMode: GameMode; date: string; playerName?: string; deviceId?: string; isOnline?: boolean; } export type Winner = 'Player' | 'P1' | 'P2' | 'AI' | 'Nobody'; export interface GameContextState { gameState: GameState; gameMode: GameMode; gridDimension: GridDimension; gridSelectionMode: GridSelectionMode; currentPresetIndex: number; grid: GameCard[]; flippedIndices: number[]; matchedIndices: number[]; currentPlayer: Player; scores: GameScores; selectedIndex: number; message: string; startTime: number; endTime: number; winner: Winner; shouldTrackScore: boolean; isNewRecord: boolean; }