Kamis, 24 September 2026
Senin, 21 September 2026
7.2
|
My House and My School
Rumahku dan Sekolahku
|
||
|
Part A My Comfortable House Rumahku yang Nyaman P. 25
|
||
|
|
||
|
Rina : |
Hello, Dinda. Can you tell me about your house?
|
|
|
Dinda: |
Sure. My house is not very big, Tentu. Rumah saya tidak terlalu besar, - but it is comfortable and clean.
|
|
|
Rina: |
How many rooms are there in your house?
|
|
|
Dinda: |
There are two bedrooms, one living room, one kitchen, and one bathroom.
|
|
|
Rina: |
Which room do you like the most?
|
|
|
Dinda: |
I like my bedroom the most Saya paling menyukai kamar tidur saya - because it is cozy and quiet. karena kamar itu nyaman dan tenang. - I usually study and read books there.
|
|
|
Rina: |
Do you have a garden?
|
|
|
Dinda: |
Yes, I do. There are many flowers Ya, saya punya. Ada banyak bunga - and small plants in front of my house.
|
|
|
Rina: |
That sounds beautiful.
|
|
|
Dinda: |
Thank you. Terima kasih. - I love my house very much because my family Saya sangat menyukai rumah saya karena keluarga saya and I feel happy there.
|
|
|
Question and Answer
Rina sedang berbicara dengan siapa? Rina is talking to Dinda. Rina sedang berbicara dengan Dinda.
Siapa yang sangat menyukai rumah itu? Dinda likes the house very much. Dinda sangat menyukai rumah itu.
Rina bertanya kepada Dinda tentang apa? Rina asks Dinda about her house. Rina bertanya kepada Dinda tentang rumahnya.
Ruangan apa saja yang ada di rumah Dinda? There are two bedrooms, one living room, one kitchen, and one bathroom. Ada dua kamar tidur, satu ruang keluarga, satu dapur, dan satu kamar mandi.
Kapan Dinda biasanya belajar? Dinda usually studies in her bedroom. Dinda biasanya belajar di kamar tidurnya.
Kapan Dinda membaca buku? Dinda usually reads books in her bedroom. Dinda biasanya membaca buku di kamar tidurnya.
Di mana Dinda biasanya belajar? She usually studies in her bedroom. Dia biasanya belajar di kamar tidurnya.
Di mana bunga-bunga dan tanaman kecil itu berada? They are in front of Dinda's house. Bunga-bunga dan tanaman kecil itu berada di depan rumah Dinda.
Rina berbicara dengan siapa? Rina talks to Dinda. Rina berbicara dengan Dinda.
Dinda bercerita tentang rumahnya kepada siapa? Dinda tells Rina about her house. Dinda bercerita kepada Rina tentang rumahnya.
Ruangan mana yang paling disukai Dinda? She likes her bedroom the most. Dia paling menyukai kamar tidurnya.
Ruangan apa saja yang disebutkan dalam teks? The rooms mentioned are bedrooms, a living room, a kitchen, and a bathroom. Ruangan yang disebutkan adalah kamar tidur, ruang keluarga, dapur, dan kamar mandi.
Bagaimana keadaan rumah Dinda? Her house is not very big, but it is comfortable and clean. Rumahnya tidak terlalu besar, tetapi nyaman dan bersih.
Ada berapa kamar tidur di rumah Dinda? There are two bedrooms. Ada dua kamar tidur.
Ada berapa kamar mandi? There is one bathroom. Ada satu kamar mandi.
Bagaimana perasaan Dinda di rumahnya? She feels happy there. Dia merasa bahagia di sana.
Mengapa Dinda paling menyukai kamar tidurnya? Because it is cozy and quiet. Karena kamar itu nyaman dan tenang.
Mengapa Dinda sangat menyayangi rumahnya? Because her family and she feel happy there. Karena Dinda dan keluarganya merasa bahagia di sana.
|
||
|
|
|
|
|
|
||
|
|
||
|
Part B My School Sekolahku P. 33
Paragraph 1
Paragraph 2
Paragraph 3
Paragraph 4
Paragraph 5
tetapi juga tempat di mana saya dapat mempelajari hal-hal baru
|
||
|
Questions and Aswers
Siapa yang bersekolah di Sunshine Junior High School? The writer studies at Sunshine Junior High School. Penulis bersekolah di Sunshine Junior High School.
Siapa yang ramah di sekolah tersebut? The students and teachers are friendly. Para siswa dan guru bersikap ramah.
Apa nama sekolah penulis? The name of the school is Sunshine Junior High School. Nama sekolah tersebut adalah Sunshine Junior High School.
Fasilitas apa saja yang ada di sekolah tersebut? There are classrooms, a library, a science laboratory, a computer room, a teachers' room, a canteen, and a school yard. Ada ruang kelas, perpustakaan, laboratorium IPA, ruang komputer, ruang guru, kantin, dan halaman sekolah.
Apa tempat favorit penulis? The writer's favourite place is the library. Tempat favorit penulis adalah perpustakaan.
Apa yang biasanya dilakukan siswa di laboratorium IPA? Students usually do science experiments there. Para siswa biasanya melakukan percobaan IPA di sana.
Kapan banyak siswa membeli makanan ringan, makanan, dan minuman? They buy them during break time. Mereka membelinya saat jam istirahat.
Kapan siswa biasanya membeli makanan dan minuman? They usually buy food and drinks during break time. Mereka biasanya membeli makanan dan minuman saat jam istirahat.
Di mana Sunshine Junior High School berada? It is located in the center of the writer's town. Sekolah tersebut berada di pusat kota tempat tinggal penulis.
Di mana ruang kelas penulis? The writer's classroom is on the second floor. Ruang kelas penulis berada di lantai dua.
Di mana perpustakaan berada? The library is next to the computer room. Perpustakaan berada di sebelah ruang komputer.
Di mana laboratorium IPA berada? The science laboratory is at the end of the corridor on the first floor. Laboratorium IPA berada di ujung koridor di lantai satu.
Di mana kantin berada? The canteen is behind the main building and beside the garden. Kantin berada di belakang gedung utama dan di sebelah taman.
Dengan siapa penulis belajar? The writer studies with their friends. Penulis belajar bersama teman-temannya.
Dengan siapa siswa bertemu di ruang guru? Students meet the teachers at the teachers' room. Siswa bertemu dengan para guru di ruang guru.
Tempat mana yang paling disukai penulis? The writer likes the library the most. Penulis paling menyukai perpustakaan.
Ruangan mana yang berada di sebelah perpustakaan? The computer room is next to the library. Ruang komputer berada di sebelah perpustakaan.
Bagaimana keadaan sekolah penulis? The school is large, clean, and beautiful. Sekolah tersebut besar, bersih, dan indah.
Bagaimana siswa pergi ke perpustakaan dari ruang kelas? They go straight along the corridor and turn left. Mereka berjalan lurus menyusuri koridor lalu berbelok ke kiri.
Bagaimana siswa pergi ke laboratorium IPA dari perpustakaan? They go back to the stairs, go downstairs, turn right, and walk past the teachers' room. Mereka kembali ke tangga, turun ke lantai bawah, berbelok ke kanan, lalu berjalan melewati ruang guru.
Mengapa penulis menyukai perpustakaan? Because the writer enjoys reading books. Karena penulis senang membaca buku.
Mengapa penulis menyukai sekolah tersebut? Because it has complete facilities and a pleasant atmosphere. Karena sekolah tersebut memiliki fasilitas yang lengkap dan suasana yang menyenangkan.
Mengapa sekolah penulis merupakan tempat yang baik untuk belajar? Because the school is clean and the learning environment is comfortable. Karena sekolah tersebut bersih dan lingkungan belajarnya nyaman.
Bagaimana setiap orang membantu di sekolah? Everyone helps keep the school tidy. Semua orang membantu menjaga sekolah tetap rapi.
|
||
|
|
||
|
Part C My Junior High School Sekolah Menengah Pertama Saya P.38
Paragraph 1
Paragraph 2
Paragraph 3
Paragraph 4
Paragraph 5
|
||
|
Questions and Answers
Siapa yang biasanya naik sepeda ke sekolah? The writer usually rides a bike to school. Penulis biasanya naik sepeda ke sekolah.
Siapa yang menjaga keamanan sekolah? Two security guards keep the school safe. Dua orang satpam menjaga keamanan sekolah.
Siapa yang memiliki ruang kantor di gedung utama? The teachers, the principal, and other staff have offices in the main building. Para guru, kepala sekolah, dan staf lainnya memiliki ruang kantor di gedung utama.
Apa yang biasanya digunakan penulis untuk pergi ke sekolah? The writer usually rides a bike to school. Penulis biasanya naik sepeda ke sekolah.
Fasilitas apa saja yang ada di sekolah tersebut? There are classrooms, a teacher's room, the principal's office, bathrooms, an auditorium, a library, science labs, computer labs, sports fields, a mosque, a health clinic, canteens, and a parking lot. Ada ruang kelas, ruang guru, ruang kepala sekolah, kamar mandi, auditorium, perpustakaan, laboratorium IPA, laboratorium komputer, lapangan olahraga, masjid, UKS, kantin, dan tempat parkir.
Apa tempat favorit penulis? The writer's favorite place is the fish pond. Tempat favorit penulis adalah kolam ikan.
Untuk apa siswa menggunakan lapangan? They use the field for sports and school ceremonies. Mereka menggunakan lapangan untuk olahraga dan upacara sekolah.
Kapan penulis suka duduk di dekat kolam ikan? The writer likes sitting by the fish pond during breaks. Penulis suka duduk di dekat kolam ikan saat jam istirahat.
Kapan siswa terkadang belajar di taman bunga? Students sometimes study there when they hang out in the gardens. Siswa terkadang belajar di sana ketika mereka bersantai di taman.
Di mana sekolah menengah pertama penulis berada? It is close to the writer's house. Sekolah tersebut dekat dengan rumah penulis.
Di mana kolam ikan berada? The fishpond is next to the security post. Kolam ikan berada di sebelah pos keamanan.
Di mana kantin-kantin berada? The canteens are behind the auditorium. Kantin-kantin berada di belakang auditorium.
Di mana ruang kelas kelas 7 berada? They are on the right side of the classroom buildings. Ruang kelas tersebut berada di sisi kanan gedung-gedung kelas.
Di mana ruang kelas kelas 8 berada? They are on the left side of the classroom buildings. Ruang kelas tersebut berada di sisi kiri gedung-gedung kelas.
Tempat parkir itu diperuntukkan bagi siapa? The parking lot is for teachers, students, and visitors. Tempat parkir tersebut diperuntukkan bagi guru, siswa, dan pengunjung.
Siapa yang dilihat penulis di gedung utama? The writer sees teachers, the principal, and other staff in the main building. Penulis melihat para guru, kepala sekolah, dan staf lainnya di gedung utama.
Tempat mana yang menjadi favorit penulis? The fish pond is the writer's favorite place. Kolam ikan adalah tempat favorit penulis.
Ruang kelas mana yang berada di sisi kanan? The 7th-grade and 9th-grade classrooms are on the right side. Ruang kelas kelas 7 dan kelas 9 berada di sisi kanan.
Ruang kelas mana yang berada di sisi kiri? The 8th-grade classrooms are on the left side. Ruang kelas kelas 8 berada di sisi kiri.
Berapa lama waktu yang dibutuhkan penulis untuk sampai ke sekolah? It takes the writer about 10–15 minutes. Penulis membutuhkan waktu sekitar 10–15 menit.
Bagaimana penulis pergi ke sekolah? The writer gets to school by bike. Penulis pergi ke sekolah dengan sepeda.
Berapa hektare luas sekolah tersebut? The school covers about 4 hectares. Sekolah tersebut memiliki luas sekitar 4 hektare.
Ada berapa ruang kelas di sekolah tersebut? There are 21 classrooms. Ada 21 ruang kelas.
Ada berapa satpam yang selalu berada di pos keamanan? There are two security guards. Ada dua orang satpam.
Mengapa penulis menyukai kolam ikan? Because the writer enjoys sitting by the pond and watching the fish swim. Karena penulis senang duduk di dekat kolam dan melihat ikan-ikan berenang.
Mengapa penulis duduk di dekat kolam saat jam istirahat? Because it helps the writer relax and get inspired. Karena hal itu membantu penulis bersantai dan mendapatkan inspirasi.
Mengapa sekolah tersebut memiliki banyak pohon besar? The big trees make the air feel fresh and clean around the school. Pohon-pohon besar tersebut membuat udara di sekitar sekolah terasa segar dan bersih.
Mengapa siswa menyukai taman-taman bunga kecil? Because they can hang out and sometimes study there. Karena mereka dapat bersantai dan terkadang belajar di sana.
|
||
|
|
||
|
Part D My house Rumahku Page 38
Paragraph 1
Paragraph 2
Paragraph 3
Paragraph 4
|
||
|
The writer and their family live happily in the house.
The writer's mother cooks delicious meals in the kitchen.
The writer's family usually watches television in the living room.
The writer's house is small but comfortable.
There are a living room, two bedrooms, a kitchen, and a bathroom.
She cooks delicious meals every day.
There are a bed, a desk, and a bookshelf.
She cooks delicious meals every day.
The writer usually studies in the bedroom. The text does not mention a specific time.
It is located in a quiet neighborhood near a park.
They usually watch television in the living room.
The kitchen is next to the bathroom.
The small garden is in front of the house.
The writer lives with their family.
The writer spends time with their family in the living room.
The bedroom is the writer's favourite room.
The kitchen is next to the bathroom.
A park is near the writer's house.
There are five rooms.
There are two bedrooms.
The living room is clean and bright.
It makes the house look fresh and beautiful.
Because it is comfortable, clean, and full of happy memories.
Because the house is comfortable, clean, and full of happy memories.
|
||
|
|
||
|
Part E Submitting an english assignment Mengumpulkan Tugas Bahasa Inggris P. 40
|
||
|
Maya |
Hi Rafa! Have you finished the English assignment? 8.01AM
|
|
|
Rafa |
Hi Maya. Yes, I have. 9.02 AM
|
|
|
Rafa |
Do we submit it in the classroom? 9.02 AM
|
|
|
Maya |
No, we submit it in the teachers' room. 9.03 AM
|
|
|
Rafa |
Oh, where is the teachers room? 9.03 AM Oh, where is the teachers' room?
|
|
|
Maya |
It is on the first floor, across from the administration office. 9.04 AM
|
|
|
Rafa |
Should we go there during break time? 9.05 AM
|
|
|
Maya |
Yes, that's better. 9.05 AM
|
|
|
Maya |
We can go together at break time. 9.06 AM
|
|
|
Rafa |
Okay. Should we knock before entering? 9.06 AM
|
|
|
Maya |
Yes, knock first and greet the teacher politely. 9.06 AM
|
|
|
Rafa |
Alright. I will bring my assignment. 9.07 AM
|
|
|
Maya |
Great! See you later. 9.07 AM
|
|
|
Rafa |
See you. 9.08 AM
|
|
|
|
Type a message Ketik pesan
|
|
|
|
|
|
|
Rafa has finished the English assignment.
Maya asks Rafa about the English assignment.
Rafa will bring the assignment.
They have finished the English assignment.
They should knock first and greet the teacher politely.
Rafa will bring his assignment.
They plan to go there during break time.
She says they can go together at break time.
They submit it in the teachers' room.
It is on the first floor, across from the administration office.
He thinks they should submit it in the classroom.
They should greet the teacher politely.
Rafa asks Maya about the location of the teachers' room.
They need to go to the teachers' room.
The administration office is across from the teachers' room.
They should greet the teacher politely.
They can go together at break time.
Because they need to submit their English assignment.
Because they should show politeness when entering the teachers' room.
|
||
|
|
||
|
Part F
My School Sekolahku P 41
Paragraph 1
Paragraph 2
Paragraph 3
Paragraph 4
Paragraph 5
Paragraph 6
|
||
|
Questions and Answers
Alya is a seventh-grade student at Nusantara Junior High School.
Alya and her friends go to the library during break time.
Many students buy food and drinks at the canteen.
The name of Alya's school is Nusantara Junior High School.
Alya is in the seventh grade.
It has a library, a science laboratory, a computer room, a canteen, and a small garden.
It says, “Respect others and do your best.”
They can read books, borrow novels, and do homework there.
They go to the library during break time.
The canteen is usually crowded during break time.
Alya's classroom is on the second floor.
The library is near Alya's classroom.
The canteen is behind the main building.
The small garden is behind the main building, near the canteen.
Alya goes to the library with her friends.
Some students talk with their friends in the garden.
The poster that says “Respect others and do your best” is Alya's favourite.
The science laboratory is used for science experiments.
The computer room is used for learning technology and practicing typing.
There are thirty-two students in Alya's class.
Her school is clean, friendly, and comfortable for learning.
They keep it clean by throwing rubbish into the bins.
They help students learn, work together, and enjoy their school life.
Because it is clean, friendly, and comfortable for learning.
Because it reminds students to be kind and responsible.
Because the lessons feel more interesting and practical.
Because many students buy food and drinks there.
Because the garden is her favourite place to relax.
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
Alamat kami :
Gadjah Mada English School ( GMES)
Jl. Kadipaten Kulon No. 27 B, Kraton , Yogyakarta
Phone/WA : 0812 274 7050
Website : gmesenglish.blogspot.com
Bantuan Transportasi :
Google Map : tulis “gmes english” Gojek : tulis “ gmes english” Grab : tulis “gmes english”
----
Belajar Bahasa Inggris bisa juga dengan jarak jauh /on line / internet menggunakan aplikasi “ Zoom Meeting ” dan “ Google Meet “
Kls 7
Bab 1 ( hal 4 sd 22 ) Test Kosa kata 1 ( hal 4-10 ) Test Kosa kata 2 ( hal 11-18 ) Ulangan Materi 1 ( dari website Pak Joko)
Bab 2 ( hal 23 sd 41 ) Test Kosa kata 1 ( hal 23 -30) Test Kosa kata 2 ( hal 31– 37 ) Ulangan Materi 2 ( dari website Pak Joko)
Bab 3 ( hal 42 sd 68 ) Test Kosa kata 1 ( hal 42 - 53) Test Kosa kata 2 ( hal 54 - 64 ) Ulangan Materi 3 ( dari website Pak Joko)
|
||
Buat bentuk penguman pemilihan Ketua RW
Dasar selesainya masa tugas Pengurus RW lama
- Dimulai pendaftaran secara sukarela mulai tgl 1 sd 7 Oktober bila tidak ada pendaftar maka diperpanjang 8 sd 14 November 2026
- Bila ternyata sampai perpanjangan ada 1 calon maka calon tersebut dimintakan persetujuan warga dengan pilihan setuju atau tidak setuju Rw Terpilih bila memenuhi 50 %+ 1 warga setuju
- Bila sampai thl 14 november tidak ada yang mendaftar maka demi terselenggaranya urusan Rw untuk wearga maka akan diadakan penjaringan lewat edaran yang ditujukan warga RW untuk menhagjukan 3 nama calon ketua RW selanjutnya dari 3 nama suara terbanyak akan digunakan bakal calon untuk dipilih warga
- Karena pemilihan bukan karena pendaftaran secara suka rela maka apabila pemenang 1 menolok hasil pemilihan maka posisinya bisa digantikan ke pemenang kedua lalu ketiga dengan terlebih dahulu dirayu oleh 10 sesepuh RW untuk meminta kesedian Ketua RW terpilih mlekasanakan kewajibannya
- Untuk Independensi dan tertib acara maka Panitia Pememilihan RW tidak bisa dicalonkan sebagai Calon Ketua RW
https://chatgpt.com/uc/6ab376b9-d92c-83ea-a7e0-b41d4989716f
Pemilu RW
Kode gs susun kata sentence order
function doGet() {
return HtmlService.createHtmlOutputFromFile('index')
.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL)
.setTitle('Game Susun Kata')
.addMetaTag('viewport', 'width=device-width, initial-scale=1');
}
function getQuestions() {
const sheet = SpreadsheetApp
.openById("1OEPppb6Prrf7u3rwqBUBT6pelF1flbLf81sW09P3ZF4")
.getSheetByName("soal");
const data = sheet.getDataRange().getValues();
let questions = [];
for (let i = 1; i < data.length; i++) {
let row = data[i];
if (!row[0]) continue;
let indonesianText = row[0];
let englishCorrect = row[1].trim();
let wordsArray = row[2].split(',').map(item => item.trim());
wordsArray = shuffle(wordsArray);
questions.push({
id: i,
indonesian: indonesianText,
englishCorrect: englishCorrect,
words: wordsArray
});
}
return shuffle(questions);
}
// Menyimpan identitas awal siswa ke Google Sheets (6 Kolom)
function simpanDataSiswa(nama, kelas, presensi) {
const sheet = SpreadsheetApp
.openById("16xNlQTa4IjHNqOS9mKpvJ34Xg7s5LEbJc4ZN_uwHjck")
.getSheetByName("Log_Siswa");
// Kolom A: Waktu, B: Nama, C: Kelas, D: No Presensi, E: Skor(0), F: Nilai(0)
sheet.appendRow([new Date(), nama, kelas, presensi, 0, 0]);
return sheet.getLastRow();
}
// Memperbarui data Skor (Jumlah Benar) di Kolom E dan Nilai (Skala 0-100) di Kolom F
function updateSkorSiswa(rowId, skorAkhir, nilaiAkhir) {
const sheet = SpreadsheetApp
.openById("16xNlQTa4IjHNqOS9mKpvJ34Xg7s5LEbJc4ZN_uwHjck")
.getSheetByName("Log_Siswa");
sheet.getRange(rowId, 5).setValue(skorAkhir); // Kolom E (Skor)
sheet.getRange(rowId, 6).setValue(nilaiAkhir); // Kolom F (Nilai)
}
function shuffle(arr) {
for (let i = arr.length - 1; i > 0; i--) {
let j = Math.floor(Math.random() * (i + 1));
[arr[i], arr[j]] = [arr[j], arr[i]];
}
return arr;
}
Kode index
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-select=no">
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;600;700&display=swap" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/canvas-confetti@1.6.0/dist/confetti.browser.min.js"></script>
<style>
* { box-sizing: border-box; font-family: 'Poppins', sans-serif; margin: 0; padding: 0; }
body {
background-color: #0b224e;
color: #2c3e50;
display: flex;
flex-direction: column;
align-items: center;
justify-content: flex-start;
min-height: 100vh;
padding: 15px;
overflow-y: auto;
overflow-x: hidden;
}
@media (min-width: 768px) {
body {
justify-content: center;
padding: 30px 20px;
}
}
.login-container {
width: 100%;
max-width: 500px;
text-align: center;
padding: 10px 5px;
margin-top: auto;
margin-bottom: auto;
}
.login-title {
font-size: clamp(1.4rem, 5vw, 2rem);
font-weight: 700;
color: #ffd700;
margin-bottom: 25px;
text-transform: uppercase;
letter-spacing: 1px;
text-shadow: 0 0 10px rgba(255, 215, 0, 0.3);
animation: kedipLembut 2s infinite alternate;
}
@keyframes kedipLembut {
0% {
opacity: 1;
text-shadow: 0 0 15px rgba(255, 215, 0, 0.6), 0 0 25px #ffaa00;
}
100% {
opacity: 0.4;
text-shadow: 0 0 2px rgba(255, 215, 0, 0.1);
}
}
.input-group {
width: 100%;
margin-bottom: 15px;
}
.input-group input {
width: 100%;
padding: clamp(14px, 3vw, 18px) 20px;
font-size: 16px;
border-radius: 14px;
border: 2px solid #fef3c7;
background-color: #ffffff;
color: #333333;
outline: none;
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
-webkit-appearance: none;
}
.btn-mulai {
width: 100%;
padding: 15px;
font-size: clamp(18px, 4vw, 22px);
font-weight: 700;
background-color: #2ba375;
border: none;
border-radius: 35px;
cursor: pointer;
box-shadow: 0 6px 12px rgba(0,0,0,0.2);
transition: background 0.2s, transform 0.1s;
margin-top: 10px;
}
.btn-mulai:hover { background-color: #218c61; }
/* Pengaturan teks gradasi yang berkedip */
.text-kedip-gradient {
background: linear-gradient(45deg, #ffd700, #ff6a00);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
display: inline-block;
animation: kedipTulisanGradient 1.2s infinite alternate;
}
@keyframes kedipTulisanGradient {
0% {
opacity: 1;
filter: drop-shadow(0 0 2px rgba(255, 106, 0, 0.6));
}
100% {
opacity: 0.25;
filter: drop-shadow(0 0 0px transparent);
}
}
.footer-text { color: rgba(255,255,255,0.6); font-size: 12px; margin-top: 30px; text-align: center; }
.game-container {
display: none;
width: 100%;
max-width: 900px;
background: #ffffff;
padding: clamp(15px, 4vw, 30px);
border-radius: 16px;
box-shadow: 0 10px 25px rgba(0, 0, 0, 0.2);
border: 1px solid #e1e8ed;
text-align: center;
margin-top: 10px;
margin-bottom: 20px;
}
.progress {
color: #d97706;
font-size: 13px;
font-weight: bold;
margin-bottom: 15px;
background: #fef3c7;
padding: 6px 18px;
border-radius: 20px;
display: inline-block;
}
.instruction-box {
background: #f8fafc;
color: #1e293b;
padding: clamp(12px, 3vw, 20px);
border-radius: 12px;
font-size: clamp(15px, 3.5vw, 19px);
font-weight: 600;
margin-bottom: 20px;
border-left: 5px solid #3b82f6;
text-align: left;
}
.word-pool, .answer-zone {
display: flex;
flex-wrap: wrap;
gap: 10px;
justify-content: center;
align-content: center;
padding: clamp(10px, 3vw, 20px);
border-radius: 12px;
width: 100%;
}
.word-pool {
min-height: 90px;
background: #f1f5f9;
margin-bottom: 20px;
}
.answer-zone {
min-height: 110px;
background: #fafafa;
border: 2.5px dashed #cbd5e1;
margin-bottom: 25px;
}
.word-card {
padding: 12px 20px;
border-radius: 10px;
font-weight: 600;
font-size: clamp(14px, 3.2vw, 18px);
color: white;
cursor: pointer;
transition: transform 0.1s;
user-select: none;
box-shadow: 0 4px 6px rgba(0,0,0,0.08);
display: flex;
align-items: center;
justify-content: center;
touch-action: manipulation;
}
.word-card:active { transform: scale(0.95); }
.c-0 { background: #84cc16; }
.c-1 { background: #8b5cf6; }
.c-2 { background: #f97316; }
.c-3 { background: #0ea5e9; }
.c-4 { background: #475569; }
.btn-group { display: flex; justify-content: flex-end; gap: 10px; }
button.action-btn {
flex: 1;
max-width: 150px;
padding: 12px 20px;
font-size: 15px;
font-weight: bold;
border: none;
border-radius: 10px;
cursor: pointer;
}
@media (min-width: 768px) {
button.action-btn { flex: none; width: 130px; }
}
.btn-reset { background: #94a3b8; color: white; }
.btn-submit { background: #10b981; color: white; }
.score-window {
display: none;
width: 100%;
max-width: 450px;
text-align: center;
margin-top: auto;
margin-bottom: auto;
}
.score-title {
font-size: clamp(24px, 6vw, 32px);
font-weight: 700;
color: #ffffff;
margin-bottom: 20px;
letter-spacing: 1px;
text-transform: uppercase;
}
.score-card {
background-color: rgba(255, 255, 255, 0.1);
border: 1px solid rgba(255, 255, 255, 0.15);
border-radius: 24px;
padding: clamp(20px, 6vw, 35px) 20px;
width: 100%;
box-shadow: 0 15px 35px rgba(0, 0, 0, 0.3);
margin-bottom: 20px;
}
.info-line { font-size: clamp(18px, 4.5vw, 22px); color: #ffffff; margin-bottom: 10px; }
.info-line strong { color: #ffd700; font-weight: 700; }
.score-line { font-size: clamp(15px, 3.8vw, 18px); color: #ffffff; margin-bottom: 20px; font-weight: 600; }
.divider { height: 1px; background-color: rgba(255, 255, 255, 0.25); width: 90%; margin: 0 auto 20px auto; }
.label-nilai { font-size: 14px; color: #ffffff; letter-spacing: 2px; margin-bottom: 5px; text-transform: uppercase; }
.huge-grade { font-size: clamp(55px, 15vw, 80px); font-weight: 700; color: #00ffcc; line-height: 1; margin-bottom: 10px; }
.btn-keluar {
width: 100%;
padding: 15px;
font-size: 20px;
font-weight: 700;
background-color: #2ba375;
border: none;
border-radius: 35px;
cursor: pointer;
box-shadow: 0 6px 12px rgba(0,0,0,0.2);
text-transform: uppercase;
}
</style>
</head>
<body>
<div class="login-container" id="loginWindow">
<h1 class="login-title">🎯 TAKE CARE OF OUR PLANET 🎯</h1>
<div class="input-group">
<input type="text" id="studentName" placeholder="Nama Lengkap..." autocomplete="off">
</div>
<div class="input-group">
<input type="text" id="studentClass" placeholder="Kelas..." autocomplete="off">
</div>
<div class="input-group">
<input type="text" id="studentAttendance" placeholder="No Presensi..." autocomplete="off">
</div>
<div class="input-group">
<input type="text" id="quizToken" placeholder="Token..." autocomplete="off">
</div>
<button class="btn-mulai" onclick="startQuiz()">
<span class="text-kedip-gradient">MULAI</span>
</button>
<p class="footer-text">Created by Joko W © GMES English Jogja</p>
</div>
<div class="game-container" id="gameWindow">
<div class="progress" id="questionNum">Loading...</div>
<div class="instruction-box" id="instruction">Memuat pertanyaan game...</div>
<div class="word-pool" id="wordPool"></div>
<hr style="opacity: 0.2; margin-bottom: 20px; border: 0; border-top: 1px solid #cbd5e1;">
<div class="answer-zone" id="answerZone"></div>
<div class="btn-group">
<button class="action-btn btn-reset" onclick="resetCurrentQuestion()">Reset</button>
<button class="action-btn btn-submit" onclick="checkAnswer()">Submit</button>
</div>
</div>
<div class="score-window" id="scoreWindow">
<h1 class="score-title">HASIL AKHIR</h1>
<div class="score-card">
<div class="info-line">Nama: <strong id="displayStudentName">Siswa</strong></div>
<div class="score-line">Skor: <span id="displayScoreCount">0</span></div>
<div class="divider"></div>
<div class="label-nilai">NILAI</div>
<div class="huge-grade" id="displayFinalGrade">0</div>
</div>
<button class="btn-keluar" onclick="exitQuiz()">
<span class="text-kedip-gradient">MAIN LAGI</span>
</button>
<p class="footer-text">Created by Joko W © GMES English Jogja</p>
</div>
<script>
let questions = [];
let currentIndex = 0;
let score = 0;
let studentRowId = null;
let globalStudentName = "";
const CORRECT_TOKEN = "170419";
window.onload = function() {
google.script.run.withSuccessHandler(function(data) {
questions = data;
shuffleArray(questions);
}).getQuestions();
};
function shuffleArray(array) {
if (!array || array.length === 0) return;
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]];
}
}
function playSound(type){
let audio = new Audio();
if(type==="correct") audio.src="https://actions.google.com/sounds/v1/cartoon/wood_plank_flicks.ogg";
if(type==="wrong") audio.src="https://actions.google.com/sounds/v1/alarms/beep_short.ogg";
if(type==="win") audio.src="https://actions.google.com/sounds/v1/cartoon/slide_whistle_to_drum.ogg";
audio.play().catch(function(e) { console.log("Audio play diblokir browser"); });
}
function startQuiz() {
let name = document.getElementById('studentName').value.trim();
let sClass = document.getElementById('studentClass').value.trim();
let attendance = document.getElementById('studentAttendance').value.trim();
let token = document.getElementById('quizToken').value.trim();
if(!name || !sClass || !attendance || !token) {
alert("Harap lengkapi semua data formulir terlebih dahulu!");
return;
}
if(token.toUpperCase() !== CORRECT_TOKEN) {
alert("Token yang Anda masukkan salah!");
return;
}
if(questions.length === 0) {
alert("Soal sedang dimuat, silakan klik tombol MULAI kembali.");
return;
}
globalStudentName = name;
google.script.run.withSuccessHandler(function(rowId) {
studentRowId = rowId;
document.getElementById('loginWindow').style.display = 'none';
document.getElementById('gameWindow').style.display = 'block';
loadQuestion();
}).simpanDataSiswa(name, sClass, attendance);
}
function loadQuestion() {
let q = questions[currentIndex];
document.getElementById('questionNum').innerText = `${currentIndex + 1} / ${questions.length}`;
document.getElementById('instruction').innerText = q.indonesian;
let pool = document.getElementById('wordPool');
let zone = document.getElementById('answerZone');
pool.innerHTML = '';
zone.innerHTML = '';
q.words.forEach((word, idx) => {
let card = document.createElement('div');
card.className = `word-card c-${idx % 5}`;
card.innerText = word;
card.setAttribute('data-word', word);
card.onclick = function() { toggleCard(this); };
pool.appendChild(card);
});
}
function toggleCard(card) {
let pool = document.getElementById('wordPool');
let zone = document.getElementById('answerZone');
if (card.parentElement.id === 'wordPool') {
zone.appendChild(card);
} else {
pool.appendChild(card);
}
}
function resetCurrentQuestion() {
loadQuestion();
}
function checkAnswer() {
let zone = document.getElementById('answerZone');
let cards = zone.getElementsByClassName('word-card');
let userWords = [];
for(let i = 0; i < cards.length; i++) {
userWords.push(cards[i].getAttribute('data-word'));
}
let userAnswer = userWords.join(' ');
let correctAnswer = questions[currentIndex].englishCorrect;
if(userAnswer === correctAnswer) {
playSound("correct");
alert("Benar sekali! 👍");
score++;
} else {
playSound("wrong");
alert(`Kurang tepat! ❌\nJawaban benar:\n"${correctAnswer}"`);
}
currentIndex++;
if(currentIndex < questions.length) {
loadQuestion();
} else {
let finalGrade = Math.round((score / questions.length) * 100);
google.script.run.withSuccessHandler(function() {
document.getElementById('gameWindow').style.display = 'none';
document.getElementById('displayStudentName').innerText = globalStudentName;
document.getElementById('displayScoreCount').innerText = score;
document.getElementById('displayFinalGrade').innerText = finalGrade;
document.getElementById('scoreWindow').style.display = 'block';
playSound("win");
launchCelebrationConfetti();
}).updateSkorSiswa(studentRowId, score, finalGrade);
}
}
function launchCelebrationConfetti() {
let duration = 3 * 1000;
let end = Date.now() + duration;
(function frame() {
confetti({
particleCount: 3,
angle: 60,
spread: 55,
origin: { x: 0, y: 0.8 }
});
confetti({
particleCount: 3,
angle: 120,
spread: 55,
origin: { x: 1, y: 0.8 }
});
if (Date.now() < end) {
requestAnimationFrame(frame);
}
}());
}
function exitQuiz() {
location.reload();
}
</script>
</body>
</html>