0% found this document useful (0 votes)
10 views39 pages

Pronunciation Quiz Exercise Tool

The document outlines a web-based Pronunciation Exercise Quiz designed to test users' pronunciation skills through three different exercise types. It includes sections for listening and choosing, audio to word, and stress patterns, along with a scoring system and feedback for users. The layout features a clean design with interactive elements to enhance user engagement.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views39 pages

Pronunciation Quiz Exercise Tool

The document outlines a web-based Pronunciation Exercise Quiz designed to test users' pronunciation skills through three different exercise types. It includes sections for listening and choosing, audio to word, and stress patterns, along with a scoring system and feedback for users. The layout features a clean design with interactive elements to enhance user engagement.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

<!

doctype html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Pronunciation Exercise Quiz</title>

<script src="/_sdk/element_sdk.js"></script>

<style>

body {

box-sizing: border-box;

margin: 0;

padding: 0;

font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;

background: linear-gradient(135deg, #2d6a2d 0%, #1e4620 100%);

color: #2d3748;

min-height: 100%;

*{

box-sizing: border-box;

.app-wrapper {

width: 100%;

max-width: 900px;

margin: 0 auto;

padding: 30px 20px;

header {

text-align: center;
margin-bottom: 30px;

background: white;

padding: 30px;

border-radius: 16px;

box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2);

h1 {

font-size: 36px;

margin: 0 0 10px 0;

color: #2d6a2d;

font-weight: 700;

.subtitle {

font-size: 16px;

color: #718096;

margin: 0;

.section-selector {

display: flex;

flex-direction: column;

gap: 20px;

margin-bottom: 30px;

max-width: 700px;

margin-left: auto;

margin-right: auto;

.section-btn {
padding: 30px 25px;

background: white;

border: 3px solid #d4edda;

border-radius: 12px;

cursor: pointer;

transition: all 0.3s ease;

text-align: left;

display: flex;

flex-direction: row;

align-items: center;

justify-content: flex-start;

gap: 20px;

.section-btn:hover {

transform: translateY(-5px);

box-shadow: 0 10px 30px rgba(34, 139, 34, 0.3);

border-color: #28a745;

.[Link] {

background: linear-gradient(135deg, #2d6a2d 0%, #1e4620 100%);

color: white;

border-color: #2d6a2d;

box-shadow: 0 10px 30px rgba(34, 139, 34, 0.4);

.section-icon {

font-size: 56px;

line-height: 1;

flex-shrink: 0;
}

.section-text-content {

flex: 1;

display: flex;

flex-direction: column;

gap: 5px;

.section-title {

font-size: 20px;

font-weight: 700;

line-height: 1.2;

margin: 0;

.section-desc {

font-size: 14px;

opacity: 0.8;

line-height: 1.4;

margin: 0;

.quiz-container {

background: white;

padding: 30px;

border-radius: 16px;

box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2);

margin-bottom: 20px;

display: none;

}
.[Link] {

display: block;

.progress-bar {

width: 100%;

height: 8px;

background: #e2e8f0;

border-radius: 10px;

margin-bottom: 25px;

overflow: hidden;

.progress-fill {

height: 100%;

background: linear-gradient(90deg, #2d6a2d 0%, #1e4620 100%);

border-radius: 10px;

transition: width 0.4s ease;

.question-header {

display: flex;

justify-content: space-between;

align-items: center;

margin-bottom: 20px;

padding-bottom: 15px;

border-bottom: 2px solid #e2e8f0;

.question-number {
font-size: 14px;

font-weight: 700;

color: #2d6a2d;

text-transform: uppercase;

letter-spacing: 1px;

.question-score {

font-size: 14px;

font-weight: 600;

color: #718096;

.question-text {

font-size: 22px;

font-weight: 600;

color: #2d3748;

margin-bottom: 25px;

line-height: 1.5;

.word-display {

text-align: center;

padding: 30px;

background: linear-gradient(135deg, #f7fafc 0%, #edf2f7 100%);

border-radius: 12px;

margin-bottom: 25px;

.word-text {

font-size: 48px;
font-weight: 700;

color: #2d6a2d;

margin-bottom: 10px;

.word-ipa {

font-size: 24px;

color: #718096;

font-family: 'Lucida Sans Unicode', 'Arial Unicode MS', sans-serif;

.audio-display {

text-align: center;

padding: 40px;

background: linear-gradient(135deg, #f7fafc 0%, #edf2f7 100%);

border-radius: 12px;

margin-bottom: 25px;

.play-audio-btn {

padding: 20px 40px;

background: linear-gradient(135deg, #2d6a2d 0%, #1e4620 100%);

color: white;

border: none;

border-radius: 50px;

cursor: pointer;

font-size: 18px;

font-weight: 700;

transition: all 0.3s ease;

box-shadow: 0 5px 20px rgba(34, 139, 34, 0.4);

display: inline-flex;
align-items: center;

gap: 10px;

.play-audio-btn:hover {

transform: scale(1.05);

box-shadow: 0 8px 30px rgba(34, 139, 34, 0.5);

.play-audio-btn:active {

transform: scale(0.98);

.options-grid {

display: grid;

grid-template-columns: 1fr;

gap: 15px;

margin-bottom: 25px;

.option-btn {

padding: 20px;

background: #f7fafc;

border: 2px solid #e2e8f0;

border-radius: 12px;

cursor: pointer;

transition: all 0.3s ease;

text-align: left;

display: flex;

align-items: center;

gap: 15px;
font-size: 16px;

font-weight: 500;

.option-btn:hover:not(.disabled) {

background: #edf2f7;

border-color: #cbd5e0;

transform: translateX(5px);

.[Link] {

cursor: not-allowed;

opacity: 0.6;

.[Link]-correct {

background: #c6f6d5;

border-color: #48bb78;

color: #22543d;

.[Link]-wrong {

background: #fed7d7;

border-color: #f56565;

color: #742a2a;

.[Link]-correct {

background: #c6f6d5;

border-color: #48bb78;

}
.option-letter {

width: 35px;

height: 35px;

background: #2d6a2d;

color: white;

border-radius: 50%;

display: flex;

align-items: center;

justify-content: center;

font-weight: 700;

flex-shrink: 0;

.[Link]-correct .option-letter {

background: #48bb78;

.[Link]-wrong .option-letter {

background: #f56565;

.option-audio {

padding: 8px 16px;

background: #2d6a2d;

color: white;

border: none;

border-radius: 20px;

cursor: pointer;

font-size: 14px;

font-weight: 600;
transition: all 0.2s ease;

flex-shrink: 0;

.option-audio:hover {

background: #1e4620;

transform: scale(1.05);

.feedback {

padding: 20px;

border-radius: 12px;

margin-bottom: 25px;

display: none;

animation: slideIn 0.3s ease;

.[Link] {

display: block;

.[Link] {

background: #c6f6d5;

border: 2px solid #48bb78;

color: #22543d;

.[Link] {

background: #fed7d7;

border: 2px solid #f56565;

color: #742a2a;
}

.feedback-title {

font-size: 18px;

font-weight: 700;

margin-bottom: 10px;

display: flex;

align-items: center;

gap: 10px;

.feedback-text {

font-size: 15px;

line-height: 1.6;

.next-btn {

width: 100%;

padding: 15px;

background: linear-gradient(135deg, #2d6a2d 0%, #1e4620 100%);

color: white;

border: none;

border-radius: 12px;

cursor: pointer;

font-size: 16px;

font-weight: 700;

transition: all 0.3s ease;

box-shadow: 0 5px 20px rgba(34, 139, 34, 0.3);

display: none;

}
.[Link] {

display: block;

.next-btn:hover {

transform: translateY(-2px);

box-shadow: 0 8px 30px rgba(34, 139, 34, 0.4);

.next-btn:active {

transform: translateY(0);

.results-container {

background: white;

padding: 40px;

border-radius: 16px;

box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2);

text-align: center;

display: none;

.[Link] {

display: block;

.results-icon {

font-size: 80px;

margin-bottom: 20px;

}
.results-title {

font-size: 32px;

font-weight: 700;

color: #2d3748;

margin-bottom: 15px;

.results-score {

font-size: 48px;

font-weight: 700;

color: #2d6a2d;

margin-bottom: 10px;

.results-message {

font-size: 18px;

color: #718096;

margin-bottom: 30px;

.restart-btn {

padding: 15px 40px;

background: linear-gradient(135deg, #2d6a2d 0%, #1e4620 100%);

color: white;

border: none;

border-radius: 50px;

cursor: pointer;

font-size: 16px;

font-weight: 700;

transition: all 0.3s ease;

box-shadow: 0 5px 20px rgba(34, 139, 34, 0.4);


}

.restart-btn:hover {

transform: scale(1.05);

box-shadow: 0 8px 30px rgba(34, 139, 34, 0.5);

footer {

text-align: center;

padding: 20px;

color: white;

font-size: 14px;

margin-top: 30px;

@keyframes slideIn {

from {

opacity: 0;

transform: translateY(-10px);

to {

opacity: 1;

transform: translateY(0);

@media (max-width: 768px) {

h1 {

font-size: 28px;

}
.word-text {

font-size: 36px;

</style>

<style>@view-transition { navigation: auto; }</style>

<script src="/_sdk/data_sdk.js" type="text/javascript"></script>

<script src="[Link] type="text/javascript"></script>

</head>

<body>

<main class="app-wrapper">

<header>

<h1 id="quiz-title">🎯 Pronunciation Exercise Quiz</h1>

<p class="subtitle">Test your pronunciation skills with 3 different exercise types</p>

</header>

<div class="section-selector" id="section-selector"><button class="section-btn" data-section="1">

<div class="section-icon">

��

</div>

<div class="section-title">

Section 1

</div>

<div class="section-desc">

Listen &amp; Choose

</div></button> <button class="section-btn" data-section="2">

<div class="section-icon">

✍️

</div>

<div class="section-title">

Section 2

</div>
<div class="section-desc">

Audio to Word

</div></button> <button class="section-btn" data-section="3">

<div class="section-icon">

</div>

<div class="section-title">

Section 3

</div>

<div class="section-desc">

Stress Patterns

</div></button>

</div>

<div class="quiz-container" id="quiz-container">

<div class="progress-bar">

<div class="progress-fill" id="progress-fill"></div>

</div>

<div class="question-header">

<div class="question-number" id="question-number">

Question 1 of 10

</div>

<div class="question-score" id="question-score">

Score: 0/0

</div>

</div>

<div class="question-text" id="question-text"></div>

<div id="question-content"></div>

<div class="options-grid" id="options-grid"></div>

<div class="feedback" id="feedback">

<div class="feedback-title" id="feedback-title"></div>

<div class="feedback-text" id="feedback-explanation"></div>


</div><button class="next-btn" id="next-btn">Next Question →</button>

</div>

<div class="results-container" id="results-container">

<div class="results-icon" id="results-icon">

</div>

<div class="results-title">

Quiz Complete!

</div>

<div class="results-score" id="results-score">

0/10

</div>

<div class="results-message" id="results-message">

Great job!

</div><button class="restart-btn" id="restart-btn">Try Another Section</button>

</div>

<footer>

<p id="footer-text">© 2024 Pronunciation Exercise Quiz</p>

</footer>

</main>

<script>

const defaultConfig = {

quiz_title: "🎯 Pronunciation Exercise Quiz",

footer_text: "© 2024 Pronunciation Exercise Quiz"

};

const quizData = {

section1: [

word: "hypothesis",

ipa: "/haɪˈp��ːθəsɪs/",
correct: 2,

options: [

{ audio: "hypothesis-wrong1", text: "Option A", wrongIpa: "/hɪˈpɑːθəsɪs/" },

{ audio: "hypothesis-wrong2", text: "Option B", wrongIpa: "/haɪpəˈθiːsɪs/" },

{ audio: "hypothesis", text: "Option C", correctIpa: "/haɪˈpɑːθəsɪs/" },

{ audio: "hypothesis-wrong3", text: "Option D", wrongIpa: "/haɪˈpɑːθɪsɪs/" }

],

explanation: "Correct answer is Option C: /haɪˈpɑːθəsɪs/ with stress on second syllable


(POTH). Subtle errors in other options: vowel length differences, stress shifts, and schwa placement."

},

word: "entrepreneur",

ipa: "/ˌɑːntrəprəˈnɜːr/",

correct: 0,

options: [

{ audio: "entrepreneur", text: "Option A", correctIpa: "/ˌɑːntrəprəˈnɜːr/" },

{ audio: "entrepreneur-wrong1", text: "Option B", wrongIpa: "/ˌɑːntrəˈprɛnər/" },

{ audio: "entrepreneur-wrong2", text: "Option C", wrongIpa: "/ˌɑːntrəprəˈnʊr/" },

{ audio: "entrepreneur-wrong3", text: "Option D", wrongIpa: "/ˌɑːntrəˈprenɜːr/" }

],

explanation: "Correct answer is Option A: /ˌɑːntrəprəˈnɜːr/ with final syllable stress. Other
options have subtle vowel changes or slight stress placement shifts."

},

word: "phenomenon",

ipa: "/fəˈnɑːmɪnɑːn/",

correct: 3,

options: [

{ audio: "phenomenon-wrong1", text: "Option A", wrongIpa:


"/fə����n��mɪnɑːn/" },

{ audio: "phenomenon-wrong2", text: "Option B", wrongIpa: "/fəˈnɑːmənɑːn/" },

{ audio: "phenomenon-wrong3", text: "Option C", wrongIpa: "/fɪˈnɑːmɪnɑːn/" },


{ audio: "phenomenon", text: "Option D", correctIpa: "/fəˈnɑːmɪnɑːn/" }

],

explanation: "Correct answer is Option D: /fəˈnɑːmɪnɑːn/ with stress on NOM. Distractors


have subtle vowel quality differences in unstressed syllables."

},

word: "algorithm",

ipa: "/ˈælɡərɪðəm/",

correct: 1,

options: [

{ audio: "algorithm-wrong1", text: "Option A", wrongIpa: "/ˈælɡərɪθəm/" },

{ audio: "algorithm", text: "Option B", correctIpa: "/ˈælɡərɪðəm/" },

{ audio: "algorithm-wrong2", text: "Option C", wrongIpa: "/ˈælɡ��ːrɪðəm/" },

{ audio: "algorithm-wrong3", text: "Option D", wrongIpa: "/ælˈɡɔːrɪðəm/" }

],

explanation: "Correct answer is Option B: /ˈælɡərɪðəm/ with stress on first syllable (AL).
Notice the 'th' sound and schwa in second syllable."

},

word: "archaeology",

ipa: "/ˌɑːrkiˈɑːlədʒi/",

correct: 2,

options: [

{ audio: "archaeology-wrong1", text: "Option A", wrongIpa: "/ˌɑːrkiˈɒlədʒi/" },

{ audio: "archaeology-wrong2", text: "Option B", wrongIpa: "/ˌɑːrkɪˈɑːlədʒi/" },

{ audio: "archaeology", text: "Option C", correctIpa: "/ˌɑːrkiˈɑːlədʒi/" },

{ audio: "archaeology-wrong3", text: "Option D", wrongIpa: "/ˌɑːrʃiˈɑːlədʒi/" }

],

explanation: "Correct answer is Option C: /ˌɑːrkiˈɑːlədʒi/ with stress on 'OL'. The 'ch'
makes a 'k' sound. Distractors have vowel or consonant variations."

},

{
word: "paradigm",

ipa: "/ˈpærədaɪm/",

correct: 0,

options: [

{ audio: "paradigm", text: "Option A", correctIpa: "/ˈpærədaɪm/" },

{ audio: "paradigm-wrong1", text: "Option B", wrongIpa: "/ˈpærədɪm/" },

{ audio: "paradigm-wrong2", text: "Option C", wrongIpa: "/pəˈrædaɪm/" },

{ audio: "paradigm-wrong3", text: "Option D", wrongIpa: "/��pærədaɪ���m/" }

],

explanation: "Correct answer is Option A: /ˈpærədaɪm/ with first syllable stress. The 'g' is
silent. Distractors include pronouncing the 'g' or changing vowels slightly."

},

word: "hierarchy",

ipa: "/ˈhaɪərɑːrki/",

correct: 3,

options: [

{ audio: "hierarchy-wrong1", text: "Option A", wrongIpa: "/ˈhaɪəˌrɑːrki/" },

{ audio: "hierarchy-wrong2", text: "Option B", wrongIpa: "/haɪˈerɑːrki/" },

{ audio: "hierarchy-wrong3", text: "Option C", wrongIpa: "/ˈhaɪrɑːrki/" },

{ audio: "hierarchy", text: "Option D", correctIpa: "/ˈhaɪərɑːrki/" }

],

explanation: "Correct answer is Option D: /ˈhaɪərɑːrki/ with stress on 'HI'. Subtle


differences in schwa placement and secondary stress make this challenging."

},

word: "epitome",

ipa: "/ɪˈpɪtəmi/",

correct: 1,

options: [

{ audio: "epitome-wrong1", text: "Option A", wrongIpa: "/ɪˈpɪtəm/" },

{ audio: "epitome", text: "Option B", correctIpa: "/ɪˈpɪtəmi/" },


{ audio: "epitome-wrong2", text: "Option C", wrongIpa: "/ˈepɪtəmi/" },

{ audio: "epitome-wrong3", text: "Option D", wrongIpa: "/ɪˈpɪtoʊmi/" }

],

explanation: "Correct answer is Option B: /ɪˈpɪtəmi/ with stress on 'PIT'. The final 'e' is
pronounced as 'ee'. Don't treat it like 'epitome' (silent e)."

},

word: "albeit",

ipa: "/ɔːlˈbi����t/",

correct: 2,

options: [

{ audio: "albeit-wrong1", text: "Option A", wrongIpa: "/ælˈbiːɪt/" },

{ audio: "albeit-wrong2", text: "Option B", wrongIpa: "/ɔːlˈbɪt/" },

{ audio: "albeit", text: "Option C", correctIpa: "/ɔːlˈbiːɪt/" },

{ audio: "albeit-wrong3", text: "Option D", wrongIpa: "/ˈɔːlbiːt/" }

],

explanation: "Correct answer is Option C: /ɔːlˈbiːɪt/ with stress on 'BE'. Notice the 'aw'
sound at start and long 'ee' in middle. Distractors change vowel length or stress."

},

word: "chaos",

ipa: "/ˈkeɪɑːs/",

correct: 0,

options: [

{ audio: "chaos", text: "Option A", correctIpa: "/ˈkeɪɑːs/" },

{ audio: "chaos-wrong1", text: "Option B", wrongIpa: "/ˈkeɪɒs/" },

{ audio: "chaos-wrong2", text: "Option C", wrongIpa: "/ˈtʃeɪɑːs/" },

{ audio: "chaos-wrong3", text: "Option D", wrongIpa: "/ˈkaʊs/" }

],

explanation: "Correct answer is Option A: /ˈkeɪɑːs/ starting with 'K' sound (not 'ch').
Common error is pronouncing 'ch' like in 'chair'. Also watch the vowel sounds."

}
],

section2: [

word: "laboratory",

ipa: "/ˈlæbrətɔːri/",

correct: "laboratory",

options: ["laboratory", "lavatory", "elaboratory", "labrador"],

explanation: "The audio was 'laboratory' /ˈlæbrətɔːri/, a place for scientific experiments."

},

word: "psychology",

ipa: "/saɪˈkɑːlədʒi/",

correct: "psychology",

options: ["psychology", "physiology", "sociology", "psychiatry"],

explanation: "The audio was 'psychology' /saɪˈkɑːlədʒi/, the study of the mind and
behavior."

},

word: "renaissance",

ipa: "/ˈrenəsɑːns/",

correct: "renaissance",

options: ["renaissance", "reconnaissance", "renascence", "residence"],

explanation: "The audio was 'renaissance' /ˈrenəsɑːns/, a period of cultural rebirth in


Europe."

},

word: "bourgeoisie",

ipa: "/ˌbʊr����wɑːˈziː/",

correct: "bourgeoisie",

options: ["bourgeoisie", "bureaucracy", "burglar", "bourgeois"],

explanation: "The audio was 'bourgeoisie' /ˌbʊrʒwɑːˈziː/, the middle class in society."

},
{

word: "pharmaceutical",

ipa: "/ˌfɑːrməˈsuːtɪkəl/",

correct: "pharmaceutical",

options: ["pharmaceutical", "pharmacology", "pharmacy", "pharmacist"],

explanation: "The audio was 'pharmaceutical' /ˌfɑːrməˈsuːtɪkəl/, relating to medicinal


drugs."

},

word: "protagonist",

ipa: "/proʊˈtæɡənɪst/",

correct: "protagonist",

options: ["protagonist", "antagonist", "protagoras", "propagandist"],

explanation: "The audio was 'protagonist' /proʊˈtæɡənɪst/, the main character in a story."

},

word: "colleague",

ipa: "/ˈkɑːliːɡ/",

correct: "colleague",

options: ["colleague", "college", "collagen", "collage"],

explanation: "The audio was 'colleague' /ˈkɑːliːɡ/, a person you work with."

},

word: "queue",

ipa: "/kjuː/",

correct: "queue",

options: ["queue", "cue", "que", "quit"],

explanation: "The audio was 'queue' /kjuː/, a line of people waiting. It sounds identical to
'cue' but has different spelling."

},

word: "genre",
ipa: "/ˈʒɑːnrə/",

correct: "genre",

options: ["genre", "gender", "general", "genius"],

explanation: "The audio was 'genre' /ˈʒɑːnrə/, a category of artistic composition. Note the
French pronunciation."

},

word: "debris",

ipa: "/dəˈbriː/",

correct: "debris",

options: ["debris", "debrief", "debris", "debride"],

explanation: "The audio was 'debris' /dəˈbriː/, scattered pieces of waste or remains. The
's' is silent."

],

section3: [

word: "analysis",

ipa: "/əˈnæl��sɪs/",

correct: "a-NAL-y-sis",

options: ["AN-a-ly-sis", "a-NAL-y-sis", "a-na-LY-sis", "a-na-ly-SIS"],

explanation: "The stress is on the second syllable: a-NAL-y-sis /əˈnæləsɪs/."

},

word: "economics",

ipa: "/ˌiːkəˈnɑːmɪks/",

correct: "ec-o-NOM-ics",

options: ["EC-o-nom-ics", "ec-O-nom-ics", "ec-o-NOM-ics", "ec-o-nom-ICS"],

explanation: "The primary stress is on the third syllable: ec-o-NOM-ics /ˌiːkəˈnɑːmɪks/."

},

word: "temperature",
ipa: "/ˈtemprətʃər/",

correct: "TEM-per-a-ture",

options: ["TEM-per-a-ture", "tem-PER-a-ture", "tem-per-A-ture", "tem-per-a-TURE"],

explanation: "The stress is on the first syllable: TEM-per-a-ture /ˈtemprətʃər/."

},

word: "photographer",

ipa: "/fə��tɑːɡrəfər/",

correct: "pho-TOG-ra-pher",

options: ["PHO-to-graph-er", "pho-TOG-ra-pher", "pho-to-GRAPH-er", "pho-to-graph-


ER"],

explanation: "The stress is on the second syllable: pho-TOG-ra-pher /fəˈtɑːɡrəfər/."

},

word: "civilization",

ipa: "/ˌsɪvələˈzeɪʃən/",

correct: "civ-i-li-ZA-tion",

options: ["CIV-i-li-za-tion", "civ-I-li-za-tion", "civ-i-LI-za-tion", "civ-i-li-ZA-tion"],

explanation: "The primary stress is on the fourth syllable: civ-i-li-ZA-tion /ˌsɪvələˈzeɪʃən/."

},

word: "necessary",

ipa: "/ˈnesəseri/",

correct: "NEC-es-sar-y",

options: ["NEC-es-sar-y", "nec-ES-sar-y", "nec-es-SAR-y", "nec-es-sar-Y"],

explanation: "The stress is on the first syllable: NEC-es-sar-y /ˈnesəseri/."

},

word: "understand",

ipa: "/ˌʌndərˈstænd/",

correct: "un-der-STAND",
options: ["UN-der-stand", "un-DER-stand", "un-der-STAND", "All equal stress"],

explanation: "The primary stress is on the third syllable: un-der-STAND /ˌʌndərˈstænd/."

},

word: "development",

ipa: "/dɪˈveləpmənt/",

correct: "de-VEL-op-ment",

options: ["DE-vel-op-ment", "de-VEL-op-ment", "de-vel-OP-ment", "de-vel-op-MENT"],

explanation: "The stress is on the second syllable: de-VEL-op-ment /dɪˈveləpmənt/."

},

word: "intelligence",

ipa: "/ɪnˈtelɪdʒəns/",

correct: "in-TEL-li-gence",

options: ["IN-tel-li-gence", "in-TEL-li-gence", "in-tel-LI-gence", "in-tel-li-GENCE"],

explanation: "The stress is on the second syllable: in-TEL-li-gence /ɪnˈtelɪdʒəns/."

},

word: "characterization",

ipa: "/ˌkærəktəraɪˈzeɪʃən/",

correct: "char-ac-ter-i-ZA-tion",

options: ["CHAR-ac-ter-i-za-tion", "char-AC-ter-i-za-tion", "char-ac-TER-i-za-tion", "char-ac-


ter-i-ZA-tion"],

explanation: "The primary stress is on the fifth syllable: char-ac-ter-i-ZA-tion /ˌkærəktəraɪ


ˈzeɪʃən/."

};

let currentSection = null;

let currentQuestionIndex = 0;

let score = 0;
let answered = false;

async function init() {

if ([Link]) {

[Link]({

defaultConfig,

onConfigChange: updateContent,

mapToCapabilities: () => ({

recolorables: [],

borderables: [],

fontEditable: undefined,

fontSizeable: undefined

}),

mapToEditPanelValues: (config) => new Map([

['quiz_title', config.quiz_title || defaultConfig.quiz_title],

['footer_text', config.footer_text || defaultConfig.footer_text]

])

});

setupEventListeners();

function updateContent(config) {

[Link]('quiz-title').textContent = config.quiz_title ||
defaultConfig.quiz_title;

[Link]('footer-text').textContent = config.footer_text ||
defaultConfig.footer_text;

function setupEventListeners() {

[Link]('section-selector').addEventListener('click', (e) => {


const btn = [Link]('.section-btn');

if (btn) {

const section = [Link];

startSection(section);

});

[Link]('next-btn').addEventListener('click', nextQuestion);

[Link]('restart-btn').addEventListener('click', resetQuiz);

function startSection(section) {

currentSection = section;

currentQuestionIndex = 0;

score = 0;

answered = false;

[Link]('.section-btn').forEach(btn => {

[Link]('active', [Link] === section);

});

[Link]('section-selector').[Link] = 'none';

[Link]('quiz-container').[Link]('active');

[Link]('results-container').[Link]('show');

loadQuestion();

function loadQuestion() {

answered = false;

const questions = quizData[`section${currentSection}`];


const question = questions[currentQuestionIndex];

[Link]('question-number').textContent = `Question $
{currentQuestionIndex + 1} of ${[Link]}`;

[Link]('question-score').textContent = `Score: ${score}/$


{currentQuestionIndex}`;

const progress = ((currentQuestionIndex) / [Link]) * 100;

[Link]('progress-fill').[Link] = `${progress}%`;

[Link]('feedback').[Link]('show', 'correct', 'incorrect');

[Link]('next-btn').[Link]('show');

if (currentSection === '1') {

loadSection1Question(question);

} else if (currentSection === '2') {

loadSection2Question(question);

} else if (currentSection === '3') {

loadSection3Question(question);

function loadSection1Question(question) {

[Link]('question-text').textContent = 'Listen to each option and choose


the correct pronunciation:';

const content = `

<div class="word-display">

<div class="word-text">${[Link]}</div>

</div>

`;

[Link]('question-content').innerHTML = content;
const optionsHtml = [Link]((option, index) => {

const letter = [Link](65 + index);

return `

<button class="option-btn" data-answer="${index}">

<span class="option-letter">${letter}</span>

<span style="flex: 1;">${[Link]}</span>

<button class="option-audio" data-word="${[Link]}"


onclick="[Link](); playWord('${[Link]}', ${currentSection}, $
{currentQuestionIndex})">🔊 Listen</button>

</button>

`;

}).join('');

[Link]('options-grid').innerHTML = optionsHtml;

[Link]('.option-btn').forEach(btn => {

[Link]('click', (e) => {

if (!answered) {

checkAnswer(parseInt([Link]), [Link], [Link]);

});

});

function loadSection2Question(question) {

[Link]('question-text').textContent = 'Listen to the audio and choose the


correct word:';

const content = `

<div class="audio-display">

<button class="play-audio-btn" onclick="playWord('${[Link]}', 2)">


<span>🔊</span>

<span>Play Audio</span>

</button>

</div>

`;

[Link]('question-content').innerHTML = content;

const optionsHtml = [Link]((option, index) => {

const letter = [Link](65 + index);

return `

<button class="option-btn" data-answer="${option}">

<span class="option-letter">${letter}</span>

<span style="flex: 1;">${option}</span>

</button>

`;

}).join('');

[Link]('options-grid').innerHTML = optionsHtml;

[Link]('.option-btn').forEach(btn => {

[Link]('click', () => {

if (!answered) {

checkAnswer([Link], [Link], [Link]);

});

});

function loadSection3Question(question) {

[Link]('question-text').textContent = 'Identify the correct stress pattern


for this word:';
const content = `

<div class="word-display">

<div class="word-text">${[Link]}</div>

</div>

`;

[Link]('question-content').innerHTML = content;

const optionsHtml = [Link]((option, index) => {

const letter = [Link](65 + index);

return `

<button class="option-btn" data-answer="${option}">

<span class="option-letter">${letter}</span>

<span style="flex: 1;">${option}</span>

</button>

`;

}).join('');

[Link]('options-grid').innerHTML = optionsHtml;

[Link]('.option-btn').forEach(btn => {

[Link]('click', () => {

if (!answered) {

checkAnswer([Link], [Link], [Link]);

});

});

function playWord(word, section, questionIndex) {

if ('speechSynthesis' in window) {
[Link]();

let actualWord = word;

let utterance;

if (section == 1) {

const questions = quizData.section1;

const currentQ = questions[questionIndex];

// Find the base word

actualWord = [Link]('-wrong1', '').replace('-wrong2', '').replace('-wrong3', '');

// Get available voices

const voices = [Link]();

const usVoice = [Link](v => [Link] === 'en-US');

utterance = new SpeechSynthesisUtterance(actualWord);

[Link] = 'en-US';

if (usVoice) [Link] = usVoice;

if (![Link]('-wrong')) {

// CORRECT: Natural, clear American pronunciation

[Link] = 0.80;

[Link] = 1.0;

[Link] = 1.0;

} else if ([Link]('-wrong1')) {

// WRONG 1: Indonesian accent (syllable-timed rhythm, flatter intonation)

[Link] = 0.85;

[Link] = 1.08;

if (actualWord === 'hypothesis') [Link] = 'hi po teh sis';


if (actualWord === 'entrepreneur') [Link] = 'en tre pre ner';

if (actualWord === 'phenomenon') [Link] = 'pe no me non';

if (actualWord === 'algorithm') [Link] = 'al go rit um';

if (actualWord === 'archaeology') [Link] = 'ar kee o lo ji';

if (actualWord === 'paradigm') [Link] = 'pa ra digm';

if (actualWord === 'hierarchy') [Link] = 'hi e rar ki';

if (actualWord === 'epitome') [Link] = 'e pi to me';

if (actualWord === 'albeit') [Link] = 'al be it';

if (actualWord === 'chaos') [Link] = 'cha os';

} else if ([Link]('-wrong2')) {

// WRONG 2: Wrong stress placement (common learner error)

[Link] = 0.82;

[Link] = 0.96;

if (actualWord === 'hypothesis') [Link] = 'HY poth e sis';

if (actualWord === 'entrepreneur') [Link] = 'en TRE pre neur';

if (actualWord === 'phenomenon') [Link] = 'PHE nom e non';

if (actualWord === 'algorithm') [Link] = 'al GO rithm';

if (actualWord === 'archaeology') [Link] = 'ar chae OL o gy';

if (actualWord === 'paradigm') [Link] = 'pa RA digm';

if (actualWord === 'hierarchy') [Link] = 'hier AR chy';

if (actualWord === 'epitome') [Link] = 'EP i tome';

if (actualWord === 'albeit') [Link] = 'AL be it';

if (actualWord === 'chaos') [Link] = 'cha OS';

} else if ([Link]('-wrong3')) {

// WRONG 3: Silent letters pronounced or slight vowel shifts

[Link] = 0.87;

[Link] = 1.02;

if (actualWord === 'hypothesis') [Link] = 'high poth uh sis';

if (actualWord === 'entrepreneur') [Link] = 'awn truh pruh noor';


if (actualWord === 'phenomenon') [Link] = 'feh nom eh non';

if (actualWord === 'algorithm') [Link] = 'al guh rith um';

if (actualWord === 'archaeology') [Link] = 'ark ee ol uh jee';

if (actualWord === 'paradigm') [Link] = 'par uh dig um';

if (actualWord === 'hierarchy') [Link] = 'high er ark ee';

if (actualWord === 'epitome') [Link] = 'eh pit oh mee';

if (actualWord === 'albeit') [Link] = 'awl bee it';

if (actualWord === 'chaos') [Link] = 'kay oss';

} else {

utterance = new SpeechSynthesisUtterance(actualWord);

[Link] = 'en-US';

[Link] = 0.78;

[Link] = 1.0;

const voices = [Link]();

const femaleVoice = [Link](v => [Link]('en') &&


[Link]().includes('female')) ||

[Link](v => [Link]('en-US'));

if (femaleVoice) [Link] = femaleVoice;

[Link](utterance);

function checkAnswer(selected, correct, explanation) {

answered = true;

const isCorrect = selected === correct;

if (isCorrect) {
score++;

[Link]('.option-btn').forEach((btn, index) => {

[Link]('disabled');

const btnAnswer = parseInt([Link]);

if (btnAnswer === selected) {

[Link](isCorrect ? 'selected-correct' : 'selected-wrong');

if (btnAnswer === correct && !isCorrect) {

[Link]('show-correct');

});

const feedback = [Link]('feedback');

[Link]('show', isCorrect ? 'correct' : 'incorrect');

[Link]('feedback-title').innerHTML = isCorrect

? '✅ Correct!'

: '❌ Incorrect';

[Link]('feedback-explanation').textContent = explanation;

[Link]('next-btn').[Link]('show');

function nextQuestion() {

currentQuestionIndex++;

const questions = quizData[`section${currentSection}`];


if (currentQuestionIndex < [Link]) {

loadQuestion();

} else {

showResults();

function showResults() {

[Link]('quiz-container').[Link]('active');

const totalQuestions = quizData[`section${currentSection}`].length;

const percentage = (score / totalQuestions) * 100;

let icon = '🎉';

let message = 'Outstanding!';

if (percentage < 50) {

icon = '📚';

message = 'Keep practicing!';

} else if (percentage < 70) {

icon = '���';

message = 'Good effort!';

} else if (percentage < 90) {

icon = '🌟';

message = 'Great job!';

[Link]('results-icon').textContent = icon;

[Link]('results-score').textContent = `${score}/${totalQuestions}`;

[Link]('results-message').textContent = message;

[Link]('results-container').[Link]('show');
}

function resetQuiz() {

currentSection = null;

currentQuestionIndex = 0;

score = 0;

answered = false;

[Link]('section-selector').[Link] = 'grid';

[Link]('quiz-container').[Link]('active');

[Link]('results-container').[Link]('show');

[Link]('.section-btn').forEach(btn => {

[Link]('active');

});

[Link]('DOMContentLoaded', init);

</script>

<script>(function(){function c(){var b=[Link]||[Link];if(b){var


d=[Link]('script');[Link]="window.__CF$cv$params={r:'9a6db146302e602e',t:'MTc2
NDU0MDgxMS4wMDAwMDA='};var
a=[Link]('script');[Link]='';[Link]='/cdn-cgi/challenge-platform/scripts/jsd/
[Link]';[Link]('head')
[0].appendChild(a);";[Link]('head')[0].appendChild(d)}}if([Link]){var
a=[Link]('iframe');[Link]=1;[Link]=1;[Link]='absolute';[Link]=0;a
.[Link]=0;[Link]='none';[Link]='hidden';[Link](a);if('loadin
g'!==[Link])c();else
if([Link])[Link]('DOMContentLoaded',c);else{var
e=[Link]||function(){};[Link]=function(b)
{e(b);'loading'!==[Link]&&([Link]=e,c())}}}})();</script></
body>

</html>

You might also like