poem_game_component
Version:
52 lines (47 loc) • 1.98 kB
text/typescript
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;
}
}
}