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;