Дай мне в входную контрольную работу по английскому языку. в который будет входить аудирование грамматика, чтение лексика и письмо она будет, кстати, проходить 30. 09. 2026 года. так же это должна быть работа для-для 6 класса. для проверки 5 класса.
Краткий ответ: ниже готовая входная диагностическая контрольная работа по английскому языку для 6 класса, проверяющая знания за 5 класс. Дата проведения: 30.09.2026.
Входная контрольная работа по английскому языку
Класс: 6
Дата: 30.09.2026
Время: 45 минут
Максимальный балл: 40
Фамилия и имя: ___________________________
1. Listening — Аудирование (8 баллов)
Прослушай текст два раза. Выбери правильный вариант ответа.
Task 1. Choose the correct answer.
Ben is …
a) ten
b) eleven
c) twelveBen goes to school …
a) on foot
b) by bike
c) by busAfter school Ben usually …
a) plays football
b) does karate
c) plays computer gamesLast Saturday Ben’s family went to the …
a) zoo
b) cinema
c) farm
Task 2. True or False?
- Ben has a little sister. _____
- His favourite subject is history. _____
- Ben has a music lesson on Tuesdays. _____
- Next weekend Ben is going to visit his grandparents. _____
2. Vocabulary — Лексика (8 баллов)
Task 1. Match the words with their definitions.
- cousin
- cloudy
- library
- breakfast
a) a meal in the morning
b) a place with many books
c) your aunt or uncle’s child
d) with many clouds
Ответы:
1 — _____; 2 — _____; 3 — _____; 4 — _____.
Task 2. Choose the correct word.
My father works in a …
a) hospital
b) sandwich
c) TuesdayWe wear … on our feet.
a) gloves
b) shoes
c) scarfA dolphin is an animal that can …
a) swim
b) read
c) cookI usually … my homework after dinner.
a) do
b) make
c) play
3. Grammar — Грамматика (10 баллов)
Task 1. Choose the correct answer.
My sister ___ ten.
a) am
b) is
c) areWe ___ breakfast at 8 o’clock every day.
a) have
b) has
c) havingLook! The boys ___ football.
a) play
b) are playing
c) playedThere ___ two books on the desk.
a) is
b) are
c) amShe ___ ride a bike.
a) can
b) cans
c) is can___ you visit your grandmother last Sunday?
a) Do
b) Are
c) Did
Task 2. Put the verbs in the correct form.
Tom __________________ fish. (not like)
Anna and Kate __________________ at school yesterday. (be)
__________________ your brother __________________ now? (read)
I __________________ a film yesterday. (watch)
4. Reading — Чтение (8 баллов)
Прочитай текст и выбери правильный ответ.
Emily’s Weekend
Hi! I’m Emily and I’m eleven. I live in a small town with my parents and my older brother, Sam. Our house is near a park, so I often walk there after school. My favourite place in the park is the lake. At weekends, I ride my bike, take photos of birds and sometimes have a picnic with my family.
On school days I get up at half past seven. I usually have cereal and a banana for breakfast. My school starts at nine o’clock. I like English and art, but maths is difficult for me. Last Friday, our class visited the city museum. We saw old trains and took part in an interesting quiz. It was a great day. Next Saturday, I am going to meet my friend Lucy at the park.
Emily lives with …
a) her parents and older brother
b) her parents and younger sister
c) her grandparentsEmily’s favourite place in the park is …
a) the playground
b) the lake
c) the sports centreAt weekends Emily sometimes …
a) has a picnic
b) goes shopping
c) cooks at schoolEmily’s school starts at …
a) 7:30
b) 8:30
c) 9:00Which subject is difficult for Emily?
a) English
b) Art
c) MathsLast Friday Emily’s class visited the …
a) city museum
b) zoo
c) libraryAt the museum the pupils saw …
a) paintings
b) old trains
c) dinosaursNext Saturday Emily is going to meet …
a) Sam
b) Lucy
c) her teacher
5. Writing — Письмо (6 баллов)
Напиши электронное письмо новому другу по переписке объёмом 50–60 слов.
Расскажи:
- как тебя зовут и сколько тебе лет;
- где ты живёшь или кто входит в твою семью;
- какой школьный предмет тебе нравится;
- какое у тебя хобби;
- что ты делал(а) в прошлые выходные или что будешь делать в следующие.
Начни письмо:
Dear …,
Закончи:
Best wishes,
…
Текст для аудирования
Текст читает учитель два раза. Ученикам текст заранее не показывается.
Hello! My name is Ben. I am eleven years old and I live in York with my parents and my little sister, Lucy. On weekdays I get up at seven o’clock and go to school by bus. My favourite subject is science, but I don’t like history. After school I usually play football with my friends. On Tuesdays I have a music lesson. Last Saturday my family went to the zoo. We saw monkeys, lions and a very funny penguin. Next weekend I am going to visit my grandparents in the countryside.
Ключ для проверки
Listening
1 — b
2 — c
3 — a
4 — a
5 — True
6 — False
7 — True
8 — True
Vocabulary
1 — c
2 — d
3 — b
4 — a
5 — a
6 — b
7 — a
8 — a
Grammar
1 — b
2 — a
3 — b
4 — b
5 — a
6 — c
7. doesn’t like
8. were
9. Is, reading
10. watched
Reading
1 — a
2 — b
3 — a
4 — c
5 — c
6 — a
7 — b
8 — b
Критерии оценивания письма
- 2 балла — содержание раскрыто полностью;
- 2 балла — правильное употребление грамматики и лексики;
- 2 балла — соблюдены объём, структура письма, орфография и пунктуация.
Перевод баллов в отметку
- 36–40 баллов — «5»
- 28–35 баллов — «4»
- 20–27 баллов — «3»
- 0–19 баллов — «2»
Работа построена от простого к сложному: сначала проверяется понимание информации и узнавание слов, затем грамматика, чтение и самостоятельное письменное высказывание.
Обсуждение
2 сообщенияСделай второй вариант этой контрольной. Но уже с аудио для аудирование и попробуй сделать чтобы я сразу могла отмечать ответы и делай так чтобы если вдруг не ответила неправильно там загорелось красная
Да. Сделала второй вариант в виде интерактивного HTML-файла:
- есть аудирование — текст озвучивается браузером;
- варианты ответов можно выбирать мышкой;
- правильный ответ подсвечивается зелёным;
- неправильный — красным;
- есть автоматический подсчёт баллов;
- письмо проверяется вручную по критериям.
Как открыть работу
- Скопируй весь код ниже.
- Вставь его в «Блокнот».
- Сохрани файл под именем
kontrolnaya_variant_2.html. - Открой файл браузером.
- Для аудирования нажми «Прослушать аудио». Желательно прослушать текст два раза.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Входная контрольная работа. Вариант 2</title>
<style>
* {
box-sizing: border-box;
}
body {
margin: 0;
padding: 20px;
background: #f2f5f8;
color: #202124;
font-family: Arial, sans-serif;
line-height: 1.5;
}
.container {
max-width: 950px;
margin: auto;
background: white;
padding: 25px;
border-radius: 14px;
box-shadow: 0 3px 15px rgba(0,0,0,0.1);
}
h1, h2 {
color: #243b64;
}
h1 {
text-align: center;
margin-top: 0;
}
h2 {
border-bottom: 2px solid #dce4f0;
padding-bottom: 8px;
}
.header-info {
background: #eef4ff;
padding: 15px;
border-radius: 10px;
margin-bottom: 20px;
}
.note {
background: #fff8df;
padding: 12px;
border-left: 5px solid #e4b400;
border-radius: 5px;
}
section {
margin-top: 30px;
}
.question {
border: 2px solid #dce1e8;
border-radius: 10px;
padding: 13px;
margin: 12px 0;
transition: 0.2s;
}
.question.correct {
border-color: #25a45a;
background: #effcf3;
}
.question.incorrect {
border-color: #dc3545;
background: #fff0f1;
}
.option {
display: block;
padding: 7px;
margin: 4px 0;
border-radius: 6px;
cursor: pointer;
}
.option:hover {
background: #f0f4fa;
}
.option.correct-choice {
background: #bdf0ca;
color: #12632f;
}
.option.wrong-choice {
background: #ffc5ca;
color: #8d1723;
}
select,
input[type="text"],
input[type="number"],
textarea {
width: 100%;
max-width: 600px;
padding: 9px;
border: 1px solid #aeb8c5;
border-radius: 6px;
font-size: 16px;
margin-top: 5px;
}
input.field-correct,
select.field-correct {
border: 3px solid #25a45a;
background: #effcf3;
}
input.field-wrong,
select.field-wrong {
border: 3px solid #dc3545;
background: #fff0f1;
}
textarea {
min-height: 180px;
resize: vertical;
}
button {
border: none;
border-radius: 7px;
padding: 10px 16px;
margin: 5px 5px 5px 0;
background: #2d65c8;
color: white;
font-size: 16px;
cursor: pointer;
}
button:hover {
background: #204d9b;
}
button.secondary {
background: #687789;
}
button.secondary:hover {
background: #4f5c69;
}
.audio-panel {
padding: 15px;
background: #f0f5ff;
border-radius: 10px;
margin-bottom: 15px;
}
#audioStatus {
margin-left: 8px;
color: #40546d;
}
#scoreBox,
#totalResult {
margin-top: 15px;
padding: 14px;
background: #edf7ff;
border-radius: 8px;
font-weight: bold;
}
.word-count {
color: #40546d;
}
details {
margin-top: 20px;
padding: 12px;
background: #f7f7f7;
border-radius: 8px;
}
summary {
cursor: pointer;
font-weight: bold;
}
@media print {
body {
background: white;
}
.container {
box-shadow: none;
}
button,
.no-print {
display: none;
}
}
</style>
</head>
<body>
<div class="container">
<h1>Входная контрольная работа<br>по английскому языку</h1>
<div class="header-info">
<b>Класс:</b> 6<br>
<b>Проверяемый материал:</b> 5 класс<br>
<b>Вариант:</b> 2<br>
<b>Дата проведения:</b> 30.09.2026<br>
<b>Время:</b> 45 минут<br>
<b>Максимальный балл:</b> 40
</div>
<label>
<b>Фамилия и имя:</b><br>
<input type="text" placeholder="Введите фамилию и имя">
</label>
<p class="note">
После выбора ответа он сразу проверяется: правильный ответ станет зелёным,
неправильный — красным.
</p>
<form id="testForm">
<!-- АУДИРОВАНИЕ -->
<section>
<h2>1. Listening — Аудирование (8 баллов)</h2>
<div class="audio-panel">
<p>
Нажми кнопку и прослушай текст два раза. Текст аудирования
озвучивается на английском языке голосом браузера.
</p>
<button type="button" id="playAudio">▶ Прослушать аудио</button>
<button type="button" class="secondary" id="stopAudio">■ Остановить</button>
<span id="audioStatus"></span>
</div>
<div class="question auto-question" data-answer="b">
<b>1. Oliver is …</b>
<label class="option">
<input type="radio" name="l1" value="a"> a) eleven
</label>
<label class="option">
<input type="radio" name="l1" value="b"> b) twelve
</label>
<label class="option">
<input type="radio" name="l1" value="c"> c) thirteen
</label>
</div>
<div class="question auto-question" data-answer="a">
<b>2. Oliver lives in …</b>
<label class="option">
<input type="radio" name="l2" value="a"> a) Bristol
</label>
<label class="option">
<input type="radio" name="l2" value="b"> b) Oxford
</label>
<label class="option">
<input type="radio" name="l2" value="c"> c) London
</label>
</div>
<div class="question auto-question" data-answer="c">
<b>3. Oliver goes to school …</b>
<label class="option">
<input type="radio" name="l3" value="a"> a) by bus
</label>
<label class="option">
<input type="radio" name="l3" value="b"> b) by bike
</label>
<label class="option">
<input type="radio" name="l3" value="c"> c) on foot
</label>
</div>
<div class="question auto-question" data-answer="a">
<b>4. Oliver’s favourite subjects are …</b>
<label class="option">
<input type="radio" name="l4" value="a"> a) English and PE
</label>
<label class="option">
<input type="radio" name="l4" value="b"> b) Maths and Science
</label>
<label class="option">
<input type="radio" name="l4" value="c"> c) Music and Art
</label>
</div>
<div class="question auto-question" data-answer="false">
<b>5. Oliver likes geography.</b>
<label class="option">
<input type="radio" name="l5" value="true"> True
</label>
<label class="option">
<input type="radio" name="l5" value="false"> False
</label>
</div>
<div class="question auto-question" data-answer="true">
<b>6. Oliver has a younger sister.</b>
<label class="option">
<input type="radio" name="l6" value="true"> True
</label>
<label class="option">
<input type="radio" name="l6" value="false"> False
</label>
</div>
<div class="question auto-question" data-answer="false">
<b>7. Last Saturday Oliver’s family visited a zoo.</b>
<label class="option">
<input type="radio" name="l7" value="true"> True
</label>
<label class="option">
<input type="radio" name="l7" value="false"> False
</label>
</div>
<div class="question auto-question" data-answer="true">
<b>8. Next Sunday Oliver is going to have a picnic.</b>
<label class="option">
<input type="radio" name="l8" value="true"> True
</label>
<label class="option">
<input type="radio" name="l8" value="false"> False
</label>
</div>
</section>
<!-- ЛЕКСИКА -->
<section>
<h2>2. Vocabulary — Лексика (8 баллов)</h2>
<div class="question auto-question" data-answer="c">
<b>1. A neighbour is …</b>
<select>
<option value="">— выбери ответ —</option>
<option value="a">a) a person who lives in another town</option>
<option value="b">b) someone in your family</option>
<option value="c">c) a person who lives near you</option>
<option value="d">d) a person who works at school</option>
</select>
</div>
<div class="question auto-question" data-answer="a">
<b>2. Windy means …</b>
<select>
<option value="">— выбери ответ —</option>
<option value="a">a) with strong wind</option>
<option value="b">b) with a lot of snow</option>
<option value="c">c) with no clouds</option>
<option value="d">d) very hot</option>
</select>
</div>
<div class="question auto-question" data-answer="b">
<b>3. To borrow means …</b>
<select>
<option value="">— выбери ответ —</option>
<option value="a">a) to buy something</option>
<option value="b">b) to take something and return it later</option>
<option value="c">c) to lose something</option>
<option value="d">d) to give something away</option>
</select>
</div>
<div class="question auto-question" data-answer="c">
<b>4. A bakery is a place where people …</b>
<select>
<option value="">— выбери ответ —</option>
<option value="a">a) read books</option>
<option value="b">b) play sports</option>
<option value="c">c) make or sell bread and cakes</option>
<option value="d">d) see a doctor</option>
</select>
</div>
<div class="question auto-question" data-answer="a">
<b>5. I wear a ___ on my wrist. It tells me the time.</b>
<select>
<option value="">— выбери ответ —</option>
<option value="a">a) watch</option>
<option value="b">b) scarf</option>
<option value="c">c) glove</option>
<option value="d">d) belt</option>
</select>
</div>
<div class="question auto-question" data-answer="b">
<b>6. My brother is very ___; he always helps people.</b>
<select>
<option value="">— выбери ответ —</option>
<option value="a">a) noisy</option>
<option value="b">b) kind</option>
<option value="c">c) hungry</option>
<option value="d">d) cloudy</option>
</select>
</div>
<div class="question auto-question" data-answer="a">
<b>7. We usually ___ photos on holiday.</b>
<select>
<option value="">— выбери ответ —</option>
<option value="a">a) take</option>
<option value="b">b) do</option>
<option value="c">c) play</option>
<option value="d">d) go</option>
</select>
</div>
<div class="question auto-question" data-answer="b">
<b>8. The opposite of “expensive” is …</b>
<select>
<option value="">— выбери ответ —</option>
<option value="a">a) difficult</option>
<option value="b">b) cheap</option>
<option value="c">c) modern</option>
<option value="d">d) famous</option>
</select>
</div>
</section>
<!-- ГРАММАТИКА -->
<section>
<h2>3. Grammar — Грамматика (10 баллов)</h2>
<div class="question auto-question" data-answer="b">
<b>1. There ___ a cat under the table.</b>
<label class="option">
<input type="radio" name="g1" value="a"> a) are
</label>
<label class="option">
<input type="radio" name="g1" value="b"> b) is
</label>
<label class="option">
<input type="radio" name="g1" value="c"> c) am
</label>
</div>
<div class="question auto-question" data-answer="a">
<b>2. They ___ TV every evening.</b>
<label class="option">
<input type="radio" name="g2" value="a"> a) watch
</label>
<label class="option">
<input type="radio" name="g2" value="b"> b) watches
</label>
<label class="option">
<input type="radio" name="g2" value="c"> c) watching
</label>
</div>
<div class="question auto-question" data-answer="b">
<b>3. Listen! Mary ___ the piano.</b>
<label class="option">
<input type="radio" name="g3" value="a"> a) plays
</label>
<label class="option">
<input type="radio" name="g3" value="b"> b) is playing
</label>
<label class="option">
<input type="radio" name="g3" value="c"> c) played
</label>
</div>
<div class="question auto-question" data-answer="b">
<b>4. We ___ at home last night.</b>
<label class="option">
<input type="radio" name="g4" value="a"> a) was
</label>
<label class="option">
<input type="radio" name="g4" value="b"> b) were
</label>
<label class="option">
<input type="radio" name="g4" value="c"> c) are
</label>
</div>
<div class="question auto-question" data-answer="a">
<b>5. ___ he got a pet?</b>
<label class="option">
<input type="radio" name="g5" value="a"> a) Has
</label>
<label class="option">
<input type="radio" name="g5" value="b"> b) Have
</label>
<label class="option">
<input type="radio" name="g5" value="c"> c) Is
</label>
</div>
<div class="question auto-question" data-answer="a">
<b>6. I ___ swim very well.</b>
<label class="option">
<input type="radio" name="g6" value="a"> a) can
</label>
<label class="option">
<input type="radio" name="g6" value="b"> b) am
</label>
<label class="option">
<input type="radio" name="g6" value="c"> c) have
</label>
</div>
<div class="question auto-question" data-answer="has">
<b>7. Ann __________ breakfast at seven every day. (have)</b>
<input type="text" placeholder="Введите слово">
</div>
<div class="question auto-question" data-answer="went">
<b>8. We __________ to the museum last Sunday. (go)</b>
<input type="text" placeholder="Введите слово">
</div>
<div class="question auto-question"
data-accept="aren't playing|are not playing">
<b>9. They __________ basketball now. (not play)</b>
<input type="text" placeholder="Введите форму глагола">
</div>
<div class="question auto-question" data-answer="cleaned">
<b>10. My brother __________ his room yesterday. (clean)</b>
<input type="text" placeholder="Введите слово">
</div>
</section>
<!-- ЧТЕНИЕ -->
<section>
<h2>4. Reading — Чтение (8 баллов)</h2>
<div class="note">
Прочитай текст и выбери правильный ответ.
</div>
<div style="background:#fafafa; padding:15px; border-radius:8px;">
<b>Daniel’s Week</b><br><br>
Hi! My name is Daniel and I am eleven. I live in a village
with my mum, dad and older sister Kate. There is a river near
our house, and I often go there with my dog Max.
<br><br>
On weekdays I get up at seven o’clock and have toast and an
apple for breakfast. My school starts at half past eight.
I like science and PE, but I find French difficult.
<br><br>
Last Wednesday, our class went to the local library. We met
a writer and listened to him talk about adventure books.
It was exciting. This Saturday, I am going to help my dad
in the garden. In the afternoon, I will ride my bike with Kate.
</div>
<div class="question auto-question" data-answer="a">
<b>1. Daniel lives in …</b>
<label class="option">
<input type="radio" name="r1" value="a"> a) a village
</label>
<label class="option">
<input type="radio" name="r1" value="b"> b) a city
</label>
<label class="option">
<input type="radio" name="r1" value="c"> c) a farm
</label>
</div>
<div class="question auto-question" data-answer="b">
<b>2. Daniel lives with …</b>
<label class="option">
<input type="radio" name="r2" value="a"> a) his aunt
</label>
<label class="option">
<input type="radio" name="r2" value="b"> b) his mum, dad and older sister
</label>
<label class="option">
<input type="radio" name="r2" value="c"> c) his grandparents
</label>
</div>
<div class="question auto-question" data-answer="b">
<b>3. There is a ___ near Daniel’s house.</b>
<label class="option">
<input type="radio" name="r3" value="a"> a) lake
</label>
<label class="option">
<input type="radio" name="r3" value="b"> b) river
</label>
<label class="option">
<input type="radio" name="r3" value="c"> c) sea
</label>
</div>
<div class="question auto-question" data-answer="b">
<b>4. Daniel has ___ for breakfast.</b>
<label class="option">
<input type="radio" name="r4" value="a"> a) cereal and milk
</label>
<label class="option">
<input type="radio" name="r4" value="b"> b) toast and an apple
</label>
<label class="option">
<input type="radio" name="r4" value="c"> c) eggs and tea
</label>
</div>
<div class="question auto-question" data-answer="c">
<b>5. Daniel’s school starts at …</b>
<label class="option">
<input type="radio" name="r5" value="a"> a) 7:00
</label>
<label class="option">
<input type="radio" name="r5" value="b"> b) 8:00
</label>
<label class="option">
<input type="radio" name="r5" value="c"> c) 8:30
</label>
</div>
<div class="question auto-question" data-answer="a">
<b>6. Which subject is difficult for Daniel?</b>
<label class="option">
<input type="radio" name="r6" value="a"> a) French
</label>
<label class="option">
<input type="radio" name="r6" value="b"> b) Science
</label>
<label class="option">
<input type="radio" name="r6" value="c"> c) PE
</label>
</div>
<div class="question auto-question" data-answer="a">
<b>7. Last Wednesday Daniel’s class went to the …</b>
<label class="option">
<input type="radio" name="r7" value="a"> a) local library
</label>
<label class="option">
<input type="radio" name="r7" value="b"> b) zoo
</label>
<label class="option">
<input type="radio" name="r7" value="c"> c) theatre
</label>
</div>
<div class="question auto-question" data-answer="b">
<b>8. This Saturday Daniel is going to …</b>
<label class="option">
<input type="radio" name="r8" value="a"> a) visit his grandparents
</label>
<label class="option">
<input type="radio" name="r8" value="b"> b) help his dad in the garden
</label>
<label class="option">
<input type="radio" name="r8" value="c"> c) play computer games
</label>
</div>
</section>
<!-- ПИСЬМО -->
<section>
<h2>5. Writing — Письмо (6 баллов)</h2>
<p>
Напиши электронное письмо новому другу объёмом
<b>50–60 слов</b>.
</p>
<p>Расскажи:</p>
<ul>
<li>как тебя зовут и сколько тебе лет;</li>
<li>где ты живёшь и кто входит в твою семью;</li>
<li>какой школьный предмет тебе нравится;</li>
<li>какое у тебя хобби;</li>
<li>что ты делал(а) в прошлые выходные или будешь делать в следующие.</li>
</ul>
<p><b>Начни письмо:</b> Dear …,</p>
<p><b>Закончи:</b> Best wishes, …</p>
<textarea id="writing"
placeholder="Напиши письмо на английском языке"></textarea>
<p class="word-count">
Количество слов:
<b id="wordCount">0</b>
</p>
</section>
<button type="button" id="checkAll">
Проверить все ответы
</button>
<button type="button" class="secondary" id="resetButton">
Сбросить ответы
</button>
<div id="scoreBox">
Пока не выбрано ни одного ответа.
</div>
</form>
<details>
<summary>Критерии проверки письма и подсчёт итоговой отметки</summary>
<p><b>Письмо — 6 баллов:</b></p>
<ul>
<li>2 балла — содержание раскрыто полностью;</li>
<li>2 балла — правильная грамматика и лексика;</li>
<li>2 балла — соблюдены объём, структура, орфография и пунктуация.</li>
</ul>
<p>
Автоматически проверяются 34 задания.
Письмо оценивается отдельно.
</p>
<label>
Баллы за письмо от 0 до 6:
<input type="number" id="writingScore" min="0" max="6">
</label>
<br>
<button type="button" id="totalButton">
Посчитать итоговый балл
</button>
<div id="totalResult"></div>
<p><b>Перевод баллов в отметку:</b></p>
<ul>
<li>36–40 баллов — «5»;</li>
<li>28–35 баллов — «4»;</li>
<li>20–27 баллов — «3»;</li>
<li>0–19 баллов — «2».</li>
</ul>
</details>
</div>
<script>
const audioText =
"Hello! My name is Oliver. I am twelve years old and I live in Bristol " +
"with my mum, dad and younger sister, Molly. On school days I get up " +
"at half past seven and walk to school because it is near our house. " +
"My favourite subjects are English and PE, but I don't like geography. " +
"After school I often play basketball with my friends. Last Saturday, " +
"my family visited a farm. I fed the goats and rode a pony. Next Sunday, " +
"I am going to have a picnic in the park with my cousin, Ben.";
const cards = Array.from(
document.querySelectorAll(".auto-question")
);
let currentObjectiveScore = 0;
function normalize(value) {
return String(value || "")
.toLowerCase()
.replace(/’/g, "'")
.replace(/[.,!?;:]/g, "")
.replace(/\s+/g, " ")
.trim();
}
function getAnswer(card) {
const radio = card.querySelector(
'input[type="radio"]:checked'
);
if (radio) {
return radio.value;
}
const select = card.querySelector("select");
if (select) {
return select.value;
}
const textInput = card.querySelector('input[type="text"]');
if (textInput) {
return textInput.value;
}
return "";
}
function getCorrectAnswers(card) {
const answerText =
card.dataset.accept || card.dataset.answer || "";
return answerText
.split("|")
.map(answer => normalize(answer));
}
function isCorrect(card) {
const userAnswer = normalize(getAnswer(card));
if (!userAnswer) {
return false;
}
return getCorrectAnswers(card).includes(userAnswer);
}
function markCard(card) {
const answer = normalize(getAnswer(card));
card.classList.remove("correct", "incorrect");
card.querySelectorAll(".option").forEach(option => {
option.classList.remove(
"correct-choice",
"wrong-choice"
);
});
const field = card.querySelector(
"select, input[type='text']"
);
if (field) {
field.classList.remove(
"field-correct",
"field-wrong"
);
}
if (!answer) {
return null;
}
const correct = isCorrect(card);
card.classList.add(
correct ? "correct" : "incorrect"
);
const selected = card.querySelector(
'input[type="radio"]:checked'
);
if (selected) {
const label = selected.closest(".option");
if (label) {
label.classList.add(
correct ? "correct-choice" : "wrong-choice"
);
}
}
if (field) {
field.classList.add(
correct ? "field-correct" : "field-wrong"
);
}
return correct;
}
function updateScore() {
let answered = 0;
let correctAnswers = 0;
cards.forEach(card => {
if (normalize(getAnswer(card))) {
answered++;
if (isCorrect(card)) {
correctAnswers++;
}
}
});
currentObjectiveScore = correctAnswers;
const notAnswered = cards.length - answered;
document.getElementById("scoreBox").innerHTML =
"Проверено заданий: " + answered + " из " + cards.length +
"<br>Правильных ответов: " + correctAnswers +
" из " + cards.length +
"<br>Без ответа: " + notAnswered;
}
cards.forEach(card => {
card.querySelectorAll(
'input[type="radio"], select'
).forEach(control => {
control.addEventListener("change", () => {
markCard(card);
updateScore();
});
});
card.querySelectorAll(
'input[type="text"]'
).forEach(control => {
control.addEventListener("change", () => {
markCard(card);
updateScore();
});
control.addEventListener("keydown", event => {
if (event.key === "Enter") {
event.preventDefault();
markCard(card);
updateScore();
}
});
});
});
document.getElementById("checkAll").addEventListener(
"click",
() => {
cards.forEach(card => markCard(card));
updateScore();
}
);
document.getElementById("resetButton").addEventListener(
"click",
() => {
document.getElementById("testForm").reset();
cards.forEach(card => {
card.classList.remove("correct", "incorrect");
card.querySelectorAll(".option").forEach(option => {
option.classList.remove(
"correct-choice",
"wrong-choice"
);
});
const field = card.querySelector(
"select, input[type='text']"
);
if (field) {
field.classList.remove(
"field-correct",
"field-wrong"
);
}
});
document.getElementById("wordCount").textContent = "0";
document.getElementById("writingScore").value = "";
document.getElementById("totalResult").textContent = "";
updateScore();
if ("speechSynthesis" in window) {
speechSynthesis.cancel();
}
}
);
const writing = document.getElementById("writing");
const wordCount = document.getElementById("wordCount");
writing.addEventListener("input", () => {
const words = writing.value.trim()
? writing.value.trim().split(/\s+/).length
: 0;
wordCount.textContent = words;
});
let voices = [];
function loadVoices() {
if ("speechSynthesis" in window) {
voices = speechSynthesis.getVoices();
}
}
loadVoices();
if ("speechSynthesis" in window) {
speechSynthesis.onvoiceschanged = loadVoices;
}
document.getElementById("playAudio").addEventListener(
"click",
() => {
const status = document.getElementById("audioStatus");
if (!("speechSynthesis" in window)) {
status.textContent =
"В этом браузере аудиоозвучка недоступна.";
return;
}
speechSynthesis.cancel();
const utterance =
new SpeechSynthesisUtterance(audioText);
utterance.lang = "en-GB";
utterance.rate = 0.82;
utterance.pitch = 1;
const englishVoice = voices.find(voice =>
voice.lang.toLowerCase().startsWith("en")
);
if (englishVoice) {
utterance.voice = englishVoice;
}
utterance.onstart = () => {
status.textContent = "Аудио воспроизводится…";
};
utterance.onend = () => {
status.textContent = "Аудио закончено.";
};
speechSynthesis.speak(utterance);
}
);
document.getElementById("stopAudio").addEventListener(
"click",
() => {
if ("speechSynthesis" in window) {
speechSynthesis.cancel();
document.getElementById("audioStatus").textContent =
"Аудио остановлено.";
}
}
);
document.getElementById("totalButton").addEventListener(
"click",
() => {
const writingScore = Number(
document.getElementById("writingScore").value
);
const result = document.getElementById("totalResult");
if (
!Number.isInteger(writingScore) ||
writingScore < 0 ||
writingScore > 6
) {
result.textContent =
"Введите баллы за письмо от 0 до 6.";
return;
}
const total = currentObjectiveScore + writingScore;
let mark;
if (total >= 36) {
mark = "5";
} else if (total >= 28) {
mark = "4";
} else if (total >= 20) {
mark = "3";
} else {
mark = "2";
}
result.innerHTML =
"Итоговый балл: " + total +
" из 40<br>Отметка: «" + mark + "»";
}
);
updateScore();
</script>
</body>
</html>
В этой версии аудирование озвучивается голосом браузера, поэтому отдельный MP3-файл для запуска работы не нужен.
