Spaces:
Sleeping
Sleeping
File size: 2,782 Bytes
bcc8baf 297ca4b bcc8baf 61e3aa1 bcc8baf 253fa7c 61e3aa1 253fa7c bcc8baf 61e3aa1 bcc8baf 61e3aa1 803aa94 bcc8baf 61e3aa1 bcc8baf 61e3aa1 bcc8baf 61e3aa1 253fa7c bcc8baf 61e3aa1 bcc8baf 61e3aa1 bcc8baf 61e3aa1 bcc8baf 803aa94 bcc8baf 803aa94 61e3aa1 bcc8baf 803aa94 bcc8baf 803aa94 bcc8baf 803aa94 bcc8baf 803aa94 bcc8baf 803aa94 253fa7c bcc8baf 803aa94 bcc8baf 61e3aa1 253fa7c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
import React, { useState } from 'react';
// 簡化的成語資料庫
const idiomDatabase = [
{ mainIdiom: '急如星火', synonyms: ['迫在眉睫', '刻不容緩'], meaning: '形容事情非常緊急' },
{ mainIdiom: '一葉知秋', synonyms: ['見微知著', '月暈而風'], meaning: '從小徵兆可以預見未來的發展' },
{ mainIdiom: '一丘之貉', synonyms: ['沆瀣一氣', '狐群狗黨'], meaning: '形容品性相同的壞人' }
];
function ChineseIdiomGame() {
// 基本狀態
const [questionIndex, setQuestionIndex] = useState(0);
const [score, setScore] = useState(0);
const [selectedAnswers, setSelectedAnswers] = useState([]);
// 當前題目
const currentQuestion = idiomDatabase[questionIndex];
// 處理答案選擇
const handleSelect = (answer) => {
if (selectedAnswers.includes(answer)) return;
if (currentQuestion.synonyms.includes(answer)) {
const newSelected = [...selectedAnswers, answer];
setSelectedAnswers(newSelected);
if (newSelected.length === 2) {
const newScore = score + 10;
setScore(newScore);
// 延遲後切換到下一題
setTimeout(() => {
setQuestionIndex((questionIndex + 1) % idiomDatabase.length);
setSelectedAnswers([]);
}, 1000);
}
}
};
// 生成選項
const options = [
...currentQuestion.synonyms,
'望穿秋水',
'守株待兔',
'揮金如土',
'一暴十寒'
].sort(() => Math.random() - 0.5);
return (
<div style={{ padding: '20px' }}>
<h1 style={{ textAlign: 'center', marginBottom: '20px' }}>成語對對碰</h1>
<div style={{
backgroundColor: '#f0f0f0',
padding: '20px',
borderRadius: '8px',
marginBottom: '20px'
}}>
<h2 style={{ textAlign: 'center' }}>{currentQuestion.mainIdiom}</h2>
<p style={{ textAlign: 'center' }}>{currentQuestion.meaning}</p>
</div>
<div style={{
display: 'grid',
gridTemplateColumns: 'repeat(2, 1fr)',
gap: '10px'
}}>
{options.map((option, index) => (
<button
key={index}
onClick={() => handleSelect(option)}
style={{
padding: '10px',
backgroundColor: selectedAnswers.includes(option) ? '#4CAF50' : 'white',
color: selectedAnswers.includes(option) ? 'white' : 'black',
border: '1px solid #ddd',
borderRadius: '4px'
}}
>
{option}
</button>
))}
</div>
<div style={{
marginTop: '20px',
textAlign: 'center'
}}>
分數: {score}
</div>
</div>
);
}
export default ChineseIdiomGame; |