UNPKG

poem_game_component

Version:

110 lines (97 loc) 3.66 kB
import * as express from 'express'; import { Request, Response } from 'express'; declare class Player { private id; private name; private score; private isEliminated; constructor(id: string, name: string); getId(): string; getName(): string; getScore(): number; isPlayerEliminated(): boolean; addScore(points: number): void; eliminate(): void; } declare enum GameType { POEM_MATCHING = "POEM_MATCHING",// 对诗 FLOWER_POEM = "FLOWER_POEM",// 飞花令 CHAIN_POEM = "CHAIN_POEM" } interface GameRule { validateAnswer(historyAnswers: string[], currentAnswer: string, initialCondition: string): Promise<boolean>; validateInitialCondition(initialCondition: string): Promise<boolean>; } declare enum GameStatus { PREPARING = "PREPARING",// 准备状态,可以添加玩家 PLAYING = "PLAYING",// 游戏进行中,可以提交答案 FINISHED = "FINISHED" } declare class Game { private id; private gameType; private initialCondition; private players; private currentPlayerIndex; private historyAnswers; private status; constructor(id: string, gameType: GameType, initialCondition: string); getId(): string; getGameType(): GameType; getInitialCondition(): string; getPlayers(): Player[]; getCurrentPlayerIndex(): number; getCurrentPlayer(): Player; getHistoryAnswers(): string[]; getStatus(): GameStatus; addPlayer(player: Player): void; submitAnswer(answer: string, rule: GameRule): Promise<boolean>; startGame(): void; isGameOver(): boolean; getWinner(): Player | null; getNextPlayer(): number; } interface GameRepository { save(game: Game): Promise<void>; findById(id: string): Promise<Game | null>; findAll(): Promise<Game[]>; update(game: Game): Promise<void>; delete(id: string): Promise<void>; } declare class RuleFactory { createRule(gameType: GameType): GameRule; } declare class GameFactory { private gameRepository; private ruleFactory; constructor(gameRepository: GameRepository, ruleFactory: RuleFactory); createGame(gameType: GameType, initialCondition: string): Promise<Game>; } declare class GameService { private gameFactory; private gameRepository; private ruleFactory; constructor(gameFactory: GameFactory, gameRepository: GameRepository, ruleFactory: RuleFactory); createGame(gameType: GameType, initialCondition: string): Promise<Game>; getPreparingGames(): Promise<Game[]>; getNotFinishedGames(): Promise<Game[]>; getFinishedGames(): Promise<Game[]>; joinGame(gameId: string, playerName: string): Promise<Game>; startGame(gameId: string): Promise<Game>; submitAnswer(gameId: string, answer: string): Promise<boolean>; getGame(gameId: string): Promise<Game>; } declare class GameController { private gameService; constructor(gameService: GameService); createGame(req: Request, res: Response): Promise<void>; getPreparingGames(req: Request, res: Response): Promise<void>; getNotFinishedGames(req: Request, res: Response): Promise<void>; getFinishedGames(req: Request, res: Response): Promise<void>; joinGame(req: Request, res: Response): Promise<void>; startGame(req: Request, res: Response): Promise<void>; submitAnswer(req: Request, res: Response): Promise<void>; getGame(req: Request, res: Response): Promise<void>; } declare function createRoutes(gameRepository: GameRepository): express.Router; export { Game, GameController, GameFactory, type GameRepository, GameService, GameStatus, GameType, Player, RuleFactory, createRoutes };