import { Trophy, Volume2 } from "lucide-react"; import { cn } from "@/lib/utils"; import { pkPageCursorClass } from "../constants"; import type { AnswerState, AppSettings, Grade, Team, WordItem } from "../types"; import { formatWordDisplay } from "../utils"; import { AdaptiveWordText } from "./AdaptiveWordText"; import { TeamCard } from "./TeamCard"; import { WordImage } from "./WordImage"; type GameScreenProps = { selectedGrade: Grade; selectedClassTypeName?: string; roundWords: WordItem[]; currentWord: WordItem; options: WordItem[]; optionCount: number; questionIndex: number; currentTeam: Team; scoreRed: number; scoreBlue: number; answerState: AnswerState; selectedWord: number | null; speechTip: string; settings: AppSettings; onSpeakWord: (word: WordItem) => void; onCheckAnswer: (word: WordItem) => void; onNextQuestion: () => void; }; export function GameScreen({ selectedGrade, selectedClassTypeName, roundWords, currentWord, options, optionCount, questionIndex, currentTeam, scoreRed, scoreBlue, answerState, selectedWord, speechTip, settings, onSpeakWord, onCheckAnswer, onNextQuestion, }: GameScreenProps) { const progress = roundWords.length > 0 ? (questionIndex / roundWords.length) * 100 : 0; return (
{answerState !== "idle" && (
{answerState === "correct" && `🎉 太棒了!答对啦!+${settings.scorePerCorrect}分`} {answerState === "wrong" && (settings.scorePerWrong > 0 ? `答错啦,扣${settings.scorePerWrong}分,轮到下一队!` : "答错啦,轮到下一队!")}
)}

单词PK大作战

{selectedGrade} / {selectedClassTypeName ?? "班型"} / {roundWords.length} 道题

VS
{currentTeam === "red" ? "🔴 红队请作答" : "🔵 蓝队请作答"}

听一听,这是哪个单词?

{speechTip}

= 6 && "xl:grid-cols-3", )} > {options.map((option) => { const correct = option.id === currentWord.id; const selected = selectedWord === option.id; const revealCorrect = answerState !== "idle" && correct; return ( ); })}
); }