UNPKG

poem_game_component

Version:

52 lines (47 loc) 1.98 kB
import axios from 'axios'; import { GameRule } from '../../domain/interfaces/GameRule'; import { GameType } from '../../domain/enums/GameType'; export class RestGameRuleService implements GameRule { private readonly baseUrl: string; private readonly gameType: GameType; constructor(gameType: GameType) { this.gameType = gameType; this.baseUrl = this.getBaseUrl(gameType); } private getBaseUrl(gameType: GameType): string { switch (gameType) { case GameType.CHAIN_POEM: return process.env.CHAIN_POEM_API_URL || 'http://localhost:3001/api/chain-poem'; case GameType.FLOWER_POEM: return process.env.FLOWER_POEM_API_URL || 'http://localhost:3001/api/flying-flower'; case GameType.POEM_MATCHING: return process.env.POEM_MATCHING_API_URL || 'http://localhost:3001/api/poem-matching'; default: throw new Error('无效的游戏类型'); } } async validateAnswer(historyAnswers: string[], currentAnswer: string, initialCondition: string): Promise<boolean> { try { const response = await axios.post(`${this.baseUrl}/check-answer`, { answer: currentAnswer, historyAnswers, initialCondition }); return response.data.isCorrect; } catch (error) { console.error('验证答案时发生错误:', error); return false; } } async validateInitialCondition(initialCondition: string): Promise<boolean> { try { const response = await axios.post(`${this.baseUrl}/check-creation`, { initialCondition }); return response.data.isValid; } catch (error) { console.error('验证初始条件时发生错误:', error); return false; } } }