<?xml version='1.0'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:atom="http://www.w3.org/2005/Atom" >
<channel>
	<title><![CDATA[Catatan Harian: Muh.Taqiuddin.S's blogs}]]></title>
	<link>https://sharka.site/3blog/blog/owner/admin</link>
	<atom:link href="https://sharka.site/3blog/blog/owner/admin" rel="self" type="application/rss+xml" />
	<description><![CDATA[}]]></description>
		<item>
	<guid isPermaLink="true">https://sharka.site/3blog/blog/view/102/membuat-rpp-dengan-bantuan-gemini-ai</guid>
	<pubDate>Sat, 20 Dec 2025 10:06:13 +0800</pubDate>
	<link>https://sharka.site/3blog/blog/view/102/membuat-rpp-dengan-bantuan-gemini-ai</link>
	<title><![CDATA[Membuat RPP dengan bantuan Gemini AI]]></title>
	<description><![CDATA[<p>Buatkan RENCANA PELAKSANAAN PEMBELAJARAN (RPP)</p><p>Ketentuan sangat penting:</p><p>Fitur Utama RPP Ini:Format HTML &amp; LaTeX: Semua rumus matematika menggunakan simbol $...$ yang siap dirender oleh MathJax (misalnya $a^2 + b^2 = c^2$).Identitas Sesuai Data: Menggunakan nama sekolah, guru, dan kepala sekolah yang Anda berikan.Prinsip Pembelajaran: Bagian Memahami (Berkesadaran), Mengaplikasi (Bermakna), dan Merefleksi (Menggembirakan) sudah ditandai dengan warna hijau sesuai instruksi.Aktivitas Kontekstual: Siswa diarahkan untuk mengukur objek nyata di lingkungan sekolah menggunakan model penemuan terbimbing.Copy-Paste Gambar: Area "Memahami", "Mengaplikasi", dan lainnya sudah mendukung fitur paste gambar langsung dan dapat diubah ukurannya (resizable) saat dibuka di browser.<br />================================<br />Ketentuan Pembelajaran:</p><p>1. Gunakan prinsip Berkesadaran, Bermakna, Menggembirakan, ketiganya &nbsp;yang disisipkan pada kegiatan inti<br />2. Tandai aktivitas tersebut yang memuat prinsip dengan &lt;span style="color:green"&gt;<br />3. Kegiatan inti dipilah jelas: Memahami – Mengaplikasi – Merefleksi sesuai sintaks model pembelajaran<br />4. Tambahkan Ice Breaking yang relevan dengan materi<br />5. Tambahkan LKPD dengan langkah kerja dan tabel<br />6. Asesmen formatif 10 soal uraian C2–C4, lengkap dengan kunci &amp; rubrik<br />7. Berikan judul yang relevan dengan aktivitas materi<br />====================<br />Data yang digunakan:<br />Nama Sekolah &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: [SMPN 1 Anggeraja]<br />Nama Guru Mata Pelajaran : [Muh. Taqiuddin,S.S.Pd]<br />NIP Guru Mata Pelajaran &nbsp;: 198807042020121007]<br />Nama Kepala Sekolah &nbsp;&nbsp;&nbsp;&nbsp;: [Risma]<br />NIP Kepala sekolah : [123456789]</p><p>Mata Pelajaran &nbsp; &nbsp; &nbsp; : [Matematika]<br />Fase / Kelas &nbsp; &nbsp; &nbsp; &nbsp; : [D / Kelas 9]<br />Semester &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; : [Genap]<br />Materi / Topik &nbsp; &nbsp; &nbsp; : [Kesebangunan]<br />Alokasi Waktu &nbsp; &nbsp; &nbsp; &nbsp;: [2 kali pertemuan (5 x 40 menit]<br />Model Pembelajaran &nbsp; : [Penemuan terbimbing]<br />Tujuan Pembelajaran &nbsp;: [Memahami konsep kesebangunan]<br />Aktivitas Utama &nbsp;&nbsp;&nbsp;&nbsp; : [Siswa beraktivitas di sekitar sekolah untuk mengamati benda sekitar yang masih dapat diukur untuk digambar di kertas ]</p><p><br />=========================================================================<br />dengan struktur HTML PERSIS seperti template yang diberikan berikut ini,jangan hilangkan fitur fiturnya seperti</p><p>&lt;!DOCTYPE html&gt;<br />&lt;html lang="id"&gt;<br />&lt;head&gt;<br />&nbsp;&lt;meta charset="UTF-8" /&gt;<br />&nbsp;&lt;meta name="viewport" content="width=device-width, initial-scale=1.0" /&gt;<br />&nbsp;&lt;title&gt;Judul Rpp&lt;/title&gt;</p><p>&nbsp;&lt;script&gt;<br />&nbsp; &nbsp;window.MathJax = {<br />&nbsp; &nbsp; &nbsp;tex: {<br />&nbsp; &nbsp; &nbsp; &nbsp;inlineMath: [['$', '$'], ['\\(', '\\)']],<br />&nbsp; &nbsp; &nbsp; &nbsp;displayMath: [['$$', '$$'], ['\\[', '\\]']]<br />&nbsp; &nbsp; &nbsp;}<br />&nbsp; &nbsp;};<br />&nbsp;&lt;/script&gt;<br />&nbsp;&lt;script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"&gt;&lt;/script&gt;</p><p>&nbsp;&lt;style&gt;<br />&nbsp; &nbsp;body {font-family:'Segoe UI',Tahoma,Geneva,Verdana,sans-serif;background:#f0f2f5;margin:0;padding:20px;line-height:1.6;color:#333}<br />&nbsp; &nbsp;.container {max-width:1000px;margin:auto;background:#fff;padding:40px;border-radius:15px;box-shadow:0 10px 25px rgba(0,0,0,.1);border-top:10px solid #0d6efd}<br />&nbsp; &nbsp;h1 {text-align:center;color:#0d6efd;text-transform:uppercase;letter-spacing:2px;margin-bottom:30px;border-bottom:2px solid #eee;padding-bottom:20px}<br />&nbsp; &nbsp;h2 {margin-top:40px;background:#eef3f7;padding:15px;border-left:8px solid #0d6efd;color:#0056b3;font-size:1.4em}<br />&nbsp; &nbsp;h3 {margin-top:25px;color:#0d6efd;border-bottom:1px solid #dee2e6;padding-bottom:5px}<br />&nbsp; &nbsp;label {font-weight:bold;display:block;margin-top:20px}<br />&nbsp; &nbsp;input[type=text] {width:100%;padding:12px;margin-top:8px;border:1px solid #ced4da;border-radius:6px;font-size:1em; outline: none;}<br />&nbsp; &nbsp;input[type=text]:focus {border-color: #0d6efd;}<br />&nbsp; &nbsp;<br />&nbsp; &nbsp;.edit-area {<br />&nbsp; &nbsp; &nbsp;min-height: 20px;<br />&nbsp; &nbsp; &nbsp;padding: 10px;<br />&nbsp; &nbsp; &nbsp;border: 1px dashed #eee;<br />&nbsp; &nbsp; &nbsp;border-radius: 6px;<br />&nbsp; &nbsp; &nbsp;text-align: justify;<br />&nbsp; &nbsp; &nbsp;outline: none;<br />&nbsp; &nbsp; &nbsp;white-space: pre-wrap;<br />&nbsp; &nbsp;}<br />&nbsp; &nbsp;.edit-area:focus {border: 1px solid #0d6efd; background: #fafafa;}</p><p>&nbsp; &nbsp;p, li {margin-top:10px;text-align:justify}<br />&nbsp; &nbsp;ul, ol {margin-left:20px}<br />&nbsp; &nbsp;table {width:100%;border-collapse:collapse;margin-top:20px}<br />&nbsp; &nbsp;table, td, th {border:1px solid #dee2e6}<br />&nbsp; &nbsp;td, th {padding:12px}<br />&nbsp; &nbsp;.bbm {color:green;font-weight:bold}</p><p>&nbsp; &nbsp;@media print {<br />&nbsp; &nbsp; &nbsp;body {background: white; padding: 0;}<br />&nbsp; &nbsp; &nbsp;.container {box-shadow: none; border: none; width: 100%; max-width: 100%; padding: 0;}<br />&nbsp; &nbsp; &nbsp;.edit-area {border: none; padding: 0;}<br />&nbsp; &nbsp; &nbsp;input {border: none !important;}<br />&nbsp; &nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp; &nbsp;.resizable-img-container {<br />&nbsp; &nbsp; &nbsp;display: inline-block;<br />&nbsp; &nbsp; &nbsp;line-height: 0;<br />&nbsp; &nbsp; &nbsp;position: relative;<br />&nbsp; &nbsp; &nbsp;vertical-align: top;<br />&nbsp; &nbsp; &nbsp;margin: 5px;<br />&nbsp; &nbsp; &nbsp;border: 1px dashed transparent;<br />&nbsp; &nbsp; &nbsp;padding: 2px;<br />&nbsp; &nbsp; &nbsp;resize: both;&nbsp;<br />&nbsp; &nbsp; &nbsp;overflow: hidden;<br />&nbsp; &nbsp;}</p><p>&nbsp; &nbsp;.resizable-img-container:hover {<br />&nbsp; &nbsp; &nbsp;border-color: #0d6efd;<br />&nbsp; &nbsp;}</p><p>&nbsp; &nbsp;.resizable-img-container img {<br />&nbsp; &nbsp; &nbsp;width: 100%;<br />&nbsp; &nbsp; &nbsp;height: 100%;<br />&nbsp; &nbsp; &nbsp;object-fit: contain;<br />&nbsp; &nbsp; &nbsp;pointer-events: none;&nbsp;<br />&nbsp; &nbsp;}<br />&nbsp;&lt;/style&gt;<br />&lt;/head&gt;</p><p>&lt;body&gt;<br />&lt;div class="container" id="printable-rpp"&gt;</p><p>&lt;h1&gt;RENCANA PELAKSANAAN PEMBELAJARAN (RPP)&lt;/h1&gt;</p><p>&lt;h2&gt;Judul&lt;/h2&gt;<br />&lt;input type="text" value="Petualangan Geometri: Menemukan Jejak Phytagoras di Lingkungan Sekolah"&gt;</p><p>&lt;h2&gt;Identitas&lt;/h2&gt;</p><p>&lt;label&gt;Nama Sekolah&lt;/label&gt;<br />&lt;input type="text" value="SMPN 1 Anggeraja"&gt;</p><p>&lt;label&gt;Mata Pelajaran&lt;/label&gt;<br />&lt;input type="text" value="Matematika"&gt;</p><p>&lt;label&gt;Nama Guru Mata Pelajaran&lt;/label&gt;<br />&lt;input type="text" value="Muh. Taqiuddin, S.Pd"&gt;</p><p>&lt;label&gt;Fase / Kelas / Semester&lt;/label&gt;<br />&lt;input type="text" value="D / IX / Genap"&gt;</p><p>&lt;label&gt;Tema / Topik Pembelajaran&lt;/label&gt;<br />&lt;input type="text" value="Teorema Phytagoras"&gt;</p><p>&lt;label&gt;Alokasi Waktu&lt;/label&gt;<br />&lt;input type="text" value="2 Pertemuan (5 x 40 Menit)"&gt;</p><p>&lt;label&gt;Tahun Pelajaran&lt;/label&gt;<br />&lt;input type="text" value="2024/2025"&gt;</p><p>&lt;h2&gt;Identifikasi Murid&lt;/h2&gt;</p><p>&lt;h3&gt;Pengetahuan Awal&lt;/h3&gt;<br />&lt;div class="edit-area" contenteditable="true"&gt;#Tuliskan kemampuan awal murid.&lt;/div&gt;</p><p>&lt;h3&gt;Minat Belajar&lt;/h3&gt;<br />&lt;div class="edit-area" contenteditable="true"&gt;Peserta didik menunjukkan minat belajar melalui diskusi, pengamatan langsung, dan aktivitas berbasis konteks nyata di luar kelas.&lt;/div&gt;</p><p>&lt;h3&gt;Kebutuhan Belajar&lt;/h3&gt;<br />&lt;div class="edit-area" contenteditable="true"&gt;Peserta didik membutuhkan penguatan visual melalui media konkret, contoh nyata di sekitar sekolah, serta latihan bertahap yang menghubungkan teori dengan realitas fisik.&lt;/div&gt;</p><p>&lt;h2&gt;Analisis Mata Pelajaran&lt;/h2&gt;<br />&lt;div class="edit-area" contenteditable="true"&gt;Pembelajaran matematika pada topik ini menekankan kemampuan penalaran logis untuk menemukan hubungan antar sisi segitiga siku-siku serta penerapan rumus dalam pemecahan masalah konstruksi sederhana.&lt;/div&gt;</p><p>&lt;h2&gt;Dimensi Profil Lulusan&lt;/h2&gt;<br />&lt;div class="edit-area" contenteditable="true"&gt;#Pilih salah satu dimensi ini<br />&lt;ul&gt;<br />&nbsp;&lt;li&gt;Keimanan dan ketakwaan terhadap Tuhan YME&lt;/li&gt;<br />&nbsp;&lt;li&gt;Kreativitas&lt;/li&gt;<br />&nbsp;&lt;li&gt;Kesehatan&lt;/li&gt;<br />&nbsp;&lt;li&gt;Kewargaan&lt;/li&gt;<br />&nbsp;&lt;li&gt;Penalaran Kritis&lt;/li&gt;<br />&nbsp;&lt;li&gt;Kolaborasi&lt;/li&gt;<br />&nbsp;&lt;li&gt;Kemandirian&lt;/li&gt;<br />&nbsp;&lt;li&gt;Komunikasi&lt;/li&gt;<br />&lt;/ul&gt;<br />&lt;/div&gt;</p><p>&lt;h2&gt;Desain Pembelajaran&lt;/h2&gt;</p><p>&lt;h3&gt;Materi&lt;/h3&gt;<br />&lt;div class="edit-area" contenteditable="true"&gt;<br />#Tuliskan materi disini<br />&lt;/div&gt;</p><p>&lt;h3&gt;Capaian Pembelajaran&lt;/h3&gt;<br />&lt;div class="edit-area" contenteditable="true"&gt;#Tuliskan capaian pembelajaran disini&lt;/div&gt;</p><p>&lt;h3&gt;Lintas Disiplin Ilmu&lt;/h3&gt;<br />&lt;div class="edit-area" contenteditable="true"&gt;#Mapel yang berkaitan&lt;/div&gt;</p><p>&lt;h3&gt;Tujuan Pembelajaran&lt;/h3&gt;<br />&lt;div class="edit-area" contenteditable="true"&gt;<br />#Tujuan Pembelajaran<br />&lt;/div&gt;</p><p>&lt;h2&gt;Kerangka Pembelajaran&lt;/h2&gt;<br />&lt;h3&gt;Lingkungan Pembelajaran&lt;/h3&gt;<br />&lt;div class="edit-area" contenteditable="true"&gt;Area terbuka sekolah (lapangan, tangga, dan taman) untuk kegiatan observasi langsung.&lt;/div&gt;</p><p>&lt;h3&gt;Praktik Paedagogis&lt;/h3&gt;<br />&lt;div class="edit-area" contenteditable="true"&gt;#Model Pembelajaran&lt;/div&gt;</p><p>&lt;h3&gt;Pemanfaatan Digital&lt;/h3&gt;<br />&lt;div class="edit-area" contenteditable="true"&gt;#Penggunaan Alat digital&lt;/div&gt;</p><p>&lt;h3&gt;Ice Breaking (Relevan Materi)&lt;/h3&gt;<br />&lt;div class="edit-area" contenteditable="true"&gt;&lt;strong&gt;#Ice Breaking&lt;/div&gt;</p><p>&lt;h3&gt;Kegiatan Pembelajaran&lt;/h3&gt;</p><p>&lt;h4&gt;Memahami&lt;/h4&gt;<br />&lt;div class="edit-area" contenteditable="true"&gt;<br />#Guru memulai dengan mengajak siswa berdiri di lapangan. &lt;span class="bbm"&gt;(Berkesadaran, Bermakna atau Menggembirakan (pilih salah satu atau bisa lebih dari 1): Siswa diajak melakukan teknik STOP sejenak untuk merasakan kehadiran penuh sebelum mulai belajar)&lt;/span&gt;. Guru memberikan stimulus berupa pertanyaan: "Bagaimana cara tukang bangunan memastikan sudut ruangan sekolah kita benar-benar siku-siku tanpa busur derajat besar?". Siswa diminta mengamati pojok lapangan yang berbentuk segitiga.<br />&lt;/div&gt;</p><p>&lt;h4&gt;Mengaplikasi&lt;/h4&gt;<br />&lt;div class="edit-area" contenteditable="true"&gt;<br />#Peserta didik bekerja berkelompok membawa meteran ke sekitar sekolah. &lt;span class="bbm"&gt;(Berkesadaran, Bermakna atau Menggembirakan (pilih salah satu atau bisa lebih dari 1): Siswa mengukur benda nyata seperti bayangan tiang bendera atau kemiringan tangga, bukan sekadar angka di buku)&lt;/span&gt;. Siswa mengerjakan LKPD dengan membandingkan hasil pengukuran langsung sisi miring dengan hasil perhitungan rumus $c^2 = a^2 + b^2$.<br />&lt;/div&gt;</p><p>&lt;h4&gt;Merefleksi&lt;/h4&gt;<br />&lt;div class="edit-area" contenteditable="true"&gt;<br />#Peserta didik berkumpul kembali untuk mempresentasikan temuan mereka. &lt;span class="bbm"&gt;(Berkesadaran, Bermakna atau Menggembirakan (pilih salah satu atau bisa lebih dari 1): Guru memberikan apresiasi "High-Five" atau tepuk salut bagi kelompok yang berhasil menemukan objek dengan akurasi perhitungan tertinggi)&lt;/span&gt;. Siswa menuliskan satu hal baru yang mereka temukan tentang manfaat matematika di kehidupan nyata.<br />&lt;/div&gt;</p><p>&lt;h2&gt;Lembar Kerja Peserta Didik (LKPD)&lt;/h2&gt;</p><p>&lt;h3&gt;Identitas Peserta Didik&lt;/h3&gt;<br />&lt;table&gt;<br />&lt;tr&gt;&lt;td&gt;Nama Peserta Didik&lt;/td&gt;&lt;td&gt;:&lt;/td&gt;&lt;td&gt;....................................................&lt;/td&gt;&lt;/tr&gt;<br />&lt;tr&gt;&lt;td&gt;Kelas&lt;/td&gt;&lt;td&gt;:&lt;/td&gt;&lt;td&gt;....................................................&lt;/td&gt;&lt;/tr&gt;<br />&lt;tr&gt;&lt;td&gt;Kelompok&lt;/td&gt;&lt;td&gt;:&lt;/td&gt;&lt;td&gt;....................................................&lt;/td&gt;&lt;/tr&gt;<br />&lt;tr&gt;&lt;td&gt;Tanggal&lt;/td&gt;&lt;td&gt;:&lt;/td&gt;&lt;td&gt;....................................................&lt;/td&gt;&lt;/tr&gt;<br />&lt;/table&gt;</p><p>&lt;h3&gt;Petunjuk Kerja&lt;/h3&gt;<br />&lt;div class="edit-area" contenteditable="true"&gt;1. Siapkan meteran dan alat tulis. 2. Carilah 3 objek di sekolah yang membentuk bidang segitiga siku-siku. 3. Ukur dua sisi tegaknya, lalu hitung sisi miringnya menggunakan rumus sebelum mengukur sisi miring aslinya.&lt;/div&gt;</p><p>&lt;h3&gt;Tabel Hasil Kegiatan&lt;/h3&gt;<br />&lt;table&gt;<br />&lt;tr&gt;&lt;th&gt;No&lt;/th&gt;&lt;th&gt;Objek yang Diukur&lt;/th&gt;&lt;th&gt;Sisi $a$ (cm)&lt;/th&gt;&lt;th&gt;Sisi $b$ (cm)&lt;/th&gt;&lt;th&gt;Hitung $c = \sqrt{a^2+b^2}$&lt;/th&gt;&lt;th&gt;Ukur Langsung $c$ (cm)&lt;/th&gt;&lt;/tr&gt;<br />&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;Siku-siku Lapangan&lt;/td&gt;&lt;td&gt;...&lt;/td&gt;&lt;td&gt;...&lt;/td&gt;&lt;td&gt;...&lt;/td&gt;&lt;td&gt;...&lt;/td&gt;&lt;/tr&gt;<br />&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;Kemiringan Tangga&lt;/td&gt;&lt;td&gt;...&lt;/td&gt;&lt;td&gt;...&lt;/td&gt;&lt;td&gt;...&lt;/td&gt;&lt;td&gt;...&lt;/td&gt;&lt;/tr&gt;<br />&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;Pojok Pintu&lt;/td&gt;&lt;td&gt;...&lt;/td&gt;&lt;td&gt;...&lt;/td&gt;&lt;td&gt;...&lt;/td&gt;&lt;td&gt;...&lt;/td&gt;&lt;/tr&gt;<br />&lt;/table&gt;</p><p>&lt;h2&gt;Asesmen Formatif&lt;/h2&gt;<br />&lt;div class="edit-area" contenteditable="true"&gt;<br />#Soal<br />&lt;/div&gt;</p><p>&lt;h3&gt;Kunci Jawaban&lt;/h3&gt;<br />&lt;div class="edit-area" contenteditable="true"&gt;<br />#Kunci Jawaban<br />&lt;/div&gt;</p><p>&lt;h3&gt;Rubrik Penilaian&lt;/h3&gt;<br />&lt;table&gt;<br />&lt;tr&gt;&lt;th&gt;Kriteria&lt;/th&gt;&lt;th&gt;Skor&lt;/th&gt;&lt;/tr&gt;<br />&lt;tr&gt;&lt;td&gt;Jawaban benar, langkah perhitungan tepat, dan sistematis&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;/tr&gt;<br />&lt;tr&gt;&lt;td&gt;Jawaban benar, namun langkah perhitungan kurang lengkap&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;/tr&gt;<br />&lt;tr&gt;&lt;td&gt;Jawaban salah, namun rumus yang digunakan benar&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;<br />&lt;tr&gt;&lt;td&gt;Tidak menjawab atau jawaban tidak relevan&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;<br />&lt;/table&gt;</p><p><br />&lt;table style="border:none; width: 100%; border-collapse: collapse;"&gt;<br />&nbsp;&lt;tr style="border:none;"&gt;<br />&nbsp; &nbsp;&lt;td style="text-align:center; border:none; width: 50%; vertical-align: top;"&gt;<br />&nbsp; &nbsp; &nbsp;Memeriksa dan Menyetujui,&lt;br&gt;<br />&nbsp; &nbsp; &nbsp;&lt;strong&gt;Kepala Sekolah&lt;/strong&gt;<br />&nbsp; &nbsp; &nbsp;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;<br />&nbsp; &nbsp; &nbsp;&lt;strong&gt;&lt;u&gt;........................................&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;<br />&nbsp; &nbsp; &nbsp;NIP. ........................................<br />&nbsp; &nbsp;&lt;/td&gt;</p><p>&nbsp; &nbsp;&lt;td style="text-align:center; border:none; width: 50%; vertical-align: top;"&gt;<br />&nbsp; &nbsp; &nbsp;Anggeraja, 20 Desember 2024&lt;br&gt;<br />&nbsp; &nbsp; &nbsp;&lt;strong&gt;Guru Mata Pelajaran&lt;/strong&gt;<br />&nbsp; &nbsp; &nbsp;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;<br />&nbsp; &nbsp; &nbsp;&lt;strong&gt;&lt;u&gt;........................................&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;<br />&nbsp; &nbsp; &nbsp;NIP. ........................................<br />&nbsp; &nbsp;&lt;/td&gt;<br />&nbsp;&lt;/tr&gt;<br />&lt;/table&gt;</p><p>&nbsp;</p><p>&lt;/div&gt;</p><p>&lt;script&gt;<br />&nbsp;document.querySelectorAll('.edit-area').forEach(el =&gt; {<br />&nbsp; &nbsp;el.addEventListener('blur', () =&gt; {<br />&nbsp; &nbsp; &nbsp;MathJax.typesetPromise([el]);<br />&nbsp; &nbsp;});<br />&nbsp;});</p><p>&nbsp;document.querySelectorAll('.edit-area').forEach(area =&gt; {<br />&nbsp; &nbsp;area.addEventListener('paste', function (e) {<br />&nbsp; &nbsp; &nbsp;const items = (e.clipboardData || e.originalEvent.clipboardData).items;<br />&nbsp; &nbsp; &nbsp;for (let index in items) {<br />&nbsp; &nbsp; &nbsp; &nbsp;const item = items[index];<br />&nbsp; &nbsp; &nbsp; &nbsp;if (item.kind === 'file' &amp;&amp; item.type.indexOf('image') !== -1) {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const blob = item.getAsFile();<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const reader = new FileReader();<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;reader.onload = function (event) {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const container = document.createElement('div');<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;container.className = 'resizable-img-container';<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;container.style.width = '200px';&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;container.style.height = 'auto';<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const img = document.createElement('img');<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;img.src = event.target.result;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;container.appendChild(img);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const selection = window.getSelection();<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (selection.rangeCount &gt; 0) {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const range = selection.getRangeAt(0);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;range.deleteContents();<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;range.insertNode(container);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;range.setStartAfter(container);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;range.collapse(true);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;selection.removeAllRanges();<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;selection.addRange(range);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;};<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;reader.readAsDataURL(blob);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;e.preventDefault();<br />&nbsp; &nbsp; &nbsp; &nbsp;}<br />&nbsp; &nbsp; &nbsp;}<br />&nbsp; &nbsp;});<br />&nbsp;});<br />&lt;/script&gt;</p><p>&lt;/body&gt;<br />&lt;/html&gt;<br />===========</p><p>&nbsp;</p>]]></description>
	<dc:creator>Muh.Taqiuddin.S</dc:creator>		</item>
<item>
	<guid isPermaLink="true">https://sharka.site/3blog/blog/view/101/membangun-jembatan-dengan-cost-dan-bahan-yang-digunakan</guid>
	<pubDate>Thu, 13 Nov 2025 17:44:38 +0800</pubDate>
	<link>https://sharka.site/3blog/blog/view/101/membangun-jembatan-dengan-cost-dan-bahan-yang-digunakan</link>
	<title><![CDATA[Membangun jembatan dengan cost dan bahan yang digunakan]]></title>
	<description><![CDATA[<p>&lt;!doctype html&gt;<br />&lt;html lang="id" class="h-full"&gt;<br />&lt;head&gt;<br />&nbsp;&lt;meta charset="UTF-8"&gt;<br />&nbsp;&lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;<br />&nbsp;&lt;title&gt;Simulasi Membangun Jembatan&lt;/title&gt;<br />&nbsp;&lt;script src="/_sdk/element_sdk.js"&gt;&lt;/script&gt;<br />&nbsp;&lt;script src="https://cdn.tailwindcss.com"&gt;&lt;/script&gt;<br />&nbsp;&lt;style&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp;body {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;box-sizing: border-box;<br />&nbsp; &nbsp; &nbsp; &nbsp;}<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp;.bridge-canvas {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;background: linear-gradient(to bottom, #87CEEB 0%, #87CEEB 60%, #8FBC8F 60%, #228B22 100%);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;position: relative;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;overflow: hidden;<br />&nbsp; &nbsp; &nbsp; &nbsp;}<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp;.water {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;position: absolute;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bottom: 0;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;left: 0;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;right: 0;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;height: 40%;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;background: linear-gradient(to bottom, #4682B4, #1E90FF);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;animation: wave 3s ease-in-out infinite;<br />&nbsp; &nbsp; &nbsp; &nbsp;}<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp;@keyframes wave {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0%, 100% { transform: translateY(0px); }<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;50% { transform: translateY(-5px); }<br />&nbsp; &nbsp; &nbsp; &nbsp;}<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp;.bridge-part {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;position: absolute;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cursor: pointer;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;transition: all 0.3s ease;<br />&nbsp; &nbsp; &nbsp; &nbsp;}<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp;.bridge-part:hover {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;transform: scale(1.05);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;filter: brightness(1.1);<br />&nbsp; &nbsp; &nbsp; &nbsp;}<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp;.material-card {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;transition: all 0.3s ease;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cursor: pointer;<br />&nbsp; &nbsp; &nbsp; &nbsp;}<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp;.material-card:hover {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;transform: translateY(-2px);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;box-shadow: 0 8px 25px rgba(0,0,0,0.15);<br />&nbsp; &nbsp; &nbsp; &nbsp;}<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp;.material-card.selected {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;border: 3px solid #3B82F6;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;background: #EBF8FF;<br />&nbsp; &nbsp; &nbsp; &nbsp;}<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp;.test-animation {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;animation: testBridge 2s ease-in-out;<br />&nbsp; &nbsp; &nbsp; &nbsp;}<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp;@keyframes testBridge {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0% { transform: translateY(0); }<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;25% { transform: translateY(-10px); }<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;50% { transform: translateY(5px); }<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;75% { transform: translateY(-5px); }<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;100% { transform: translateY(0); }<br />&nbsp; &nbsp; &nbsp; &nbsp;}<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp;.success-glow {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;animation: successGlow 1s ease-in-out;<br />&nbsp; &nbsp; &nbsp; &nbsp;}<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp;@keyframes successGlow {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0%, 100% { box-shadow: 0 0 0 rgba(34, 197, 94, 0.4); }<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;50% { box-shadow: 0 0 30px rgba(34, 197, 94, 0.8); }<br />&nbsp; &nbsp; &nbsp; &nbsp;}<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp;.failure-shake {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;animation: failureShake 0.5s ease-in-out;<br />&nbsp; &nbsp; &nbsp; &nbsp;}<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp;@keyframes failureShake {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0%, 100% { transform: translateX(0); }<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;25% { transform: translateX(-10px); }<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;75% { transform: translateX(10px); }<br />&nbsp; &nbsp; &nbsp; &nbsp;}<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp;.collapse-animation {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;animation: bridgeCollapse 2s ease-in forwards;<br />&nbsp; &nbsp; &nbsp; &nbsp;}<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp;@keyframes bridgeCollapse {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0% { transform: translateY(0) rotate(0deg); opacity: 1; }<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;30% { transform: translateY(10px) rotate(-2deg); }<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;60% { transform: translateY(30px) rotate(5deg); }<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;100% { transform: translateY(100px) rotate(-10deg); opacity: 0.3; }<br />&nbsp; &nbsp; &nbsp; &nbsp;}<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp;.crack-effect {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;position: relative;<br />&nbsp; &nbsp; &nbsp; &nbsp;}<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp;.crack-effect::after {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;content: '';<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;position: absolute;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;top: 0;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;left: 0;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;right: 0;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bottom: 0;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;background: linear-gradient(45deg, transparent 40%, #ff0000 50%, transparent 60%);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;opacity: 0;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;animation: crackAppear 1s ease-in-out forwards;<br />&nbsp; &nbsp; &nbsp; &nbsp;}<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp;@keyframes crackAppear {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0% { opacity: 0; }<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;100% { opacity: 0.8; }<br />&nbsp; &nbsp; &nbsp; &nbsp;}<br />&nbsp; &nbsp;&lt;/style&gt;<br />&nbsp;&lt;style&gt;@view-transition { navigation: auto; }&lt;/style&gt;<br />&nbsp;&lt;script src="/_sdk/data_sdk.js" type="text/javascript"&gt;&lt;/script&gt;<br />&lt;/head&gt;<br />&lt;body class="h-full bg-gradient-to-br from-blue-50 to-green-50 font-sans"&gt;<br />&nbsp;&lt;div class="h-full flex flex-col"&gt;&lt;!-- Header --&gt;<br />&nbsp; &lt;header class="bg-white shadow-lg p-4"&gt;<br />&nbsp; &nbsp;&lt;div class="max-w-6xl mx-auto flex justify-between items-center"&gt;<br />&nbsp; &nbsp; &lt;h1 id="gameTitle" class="text-3xl font-bold text-blue-800"&gt;🌉 Simulasi Membangun Jembatan&lt;/h1&gt;<br />&nbsp; &nbsp; &lt;div class="flex items-center space-x-6"&gt;<br />&nbsp; &nbsp; &nbsp;&lt;div class="text-right"&gt;<br />&nbsp; &nbsp; &nbsp; &lt;p id="budgetLabel" class="text-sm text-gray-600"&gt;Anggaran Tersedia&lt;/p&gt;<br />&nbsp; &nbsp; &nbsp; &lt;p id="budget" class="text-2xl font-bold text-green-600"&gt;Rp 500.000&lt;/p&gt;<br />&nbsp; &nbsp; &nbsp;&lt;/div&gt;<br />&nbsp; &nbsp; &nbsp;&lt;div class="text-right"&gt;<br />&nbsp; &nbsp; &nbsp; &lt;p class="text-sm text-gray-600"&gt;Biaya Terpakai&lt;/p&gt;<br />&nbsp; &nbsp; &nbsp; &lt;p id="usedBudget" class="text-2xl font-bold text-red-600"&gt;Rp 0&lt;/p&gt;<br />&nbsp; &nbsp; &nbsp;&lt;/div&gt;<br />&nbsp; &nbsp; &lt;/div&gt;<br />&nbsp; &nbsp;&lt;/div&gt;<br />&nbsp; &lt;/header&gt;<br />&nbsp; &lt;main class="flex-1 flex"&gt;&lt;!-- Material Selection Panel --&gt;<br />&nbsp; &nbsp;&lt;aside class="w-80 bg-white shadow-lg p-6 overflow-y-auto"&gt;<br />&nbsp; &nbsp; &lt;h2 id="materialsHeader" class="text-xl font-bold text-gray-800 mb-4"&gt;🔧 Pilih Material&lt;/h2&gt;<br />&nbsp; &nbsp; &lt;div class="space-y-4"&gt;<br />&nbsp; &nbsp; &nbsp;&lt;div class="material-card bg-yellow-50 border-2 border-yellow-200 rounded-lg p-4" data-material="kayu"&gt;<br />&nbsp; &nbsp; &nbsp; &lt;div class="flex items-center justify-between mb-2"&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp;&lt;h3 class="font-bold text-yellow-800"&gt;🪵 Kayu&lt;/h3&gt;&lt;span class="text-yellow-700 font-bold"&gt;Rp 50.000&lt;/span&gt;<br />&nbsp; &nbsp; &nbsp; &lt;/div&gt;<br />&nbsp; &nbsp; &nbsp; &lt;div class="text-sm text-yellow-700"&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp;&lt;p&gt;Kekuatan: ⭐⭐⭐&lt;/p&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp;&lt;p&gt;Fleksibilitas: ⭐⭐⭐⭐&lt;/p&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp;&lt;p&gt;Tahan Air: ⭐⭐&lt;/p&gt;<br />&nbsp; &nbsp; &nbsp; &lt;/div&gt;<br />&nbsp; &nbsp; &nbsp;&lt;/div&gt;<br />&nbsp; &nbsp; &nbsp;&lt;div class="material-card bg-gray-50 border-2 border-gray-200 rounded-lg p-4" data-material="beton"&gt;<br />&nbsp; &nbsp; &nbsp; &lt;div class="flex items-center justify-between mb-2"&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp;&lt;h3 class="font-bold text-gray-800"&gt;🧱 Beton&lt;/h3&gt;&lt;span class="text-gray-700 font-bold"&gt;Rp 100.000&lt;/span&gt;<br />&nbsp; &nbsp; &nbsp; &lt;/div&gt;<br />&nbsp; &nbsp; &nbsp; &lt;div class="text-sm text-gray-700"&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp;&lt;p&gt;Kekuatan: ⭐⭐⭐⭐⭐&lt;/p&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp;&lt;p&gt;Fleksibilitas: ⭐⭐&lt;/p&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp;&lt;p&gt;Tahan Air: ⭐⭐⭐⭐⭐&lt;/p&gt;<br />&nbsp; &nbsp; &nbsp; &lt;/div&gt;<br />&nbsp; &nbsp; &nbsp;&lt;/div&gt;<br />&nbsp; &nbsp; &nbsp;&lt;div class="material-card bg-blue-50 border-2 border-blue-200 rounded-lg p-4" data-material="baja"&gt;<br />&nbsp; &nbsp; &nbsp; &lt;div class="flex items-center justify-between mb-2"&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp;&lt;h3 class="font-bold text-blue-800"&gt;🔩 Baja&lt;/h3&gt;&lt;span class="text-blue-700 font-bold"&gt;Rp 150.000&lt;/span&gt;<br />&nbsp; &nbsp; &nbsp; &lt;/div&gt;<br />&nbsp; &nbsp; &nbsp; &lt;div class="text-sm text-blue-700"&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp;&lt;p&gt;Kekuatan: ⭐⭐⭐⭐⭐&lt;/p&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp;&lt;p&gt;Fleksibilitas: ⭐⭐⭐⭐⭐&lt;/p&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp;&lt;p&gt;Tahan Air: ⭐⭐⭐&lt;/p&gt;<br />&nbsp; &nbsp; &nbsp; &lt;/div&gt;<br />&nbsp; &nbsp; &nbsp;&lt;/div&gt;<br />&nbsp; &nbsp; &nbsp;&lt;div class="material-card bg-green-50 border-2 border-green-200 rounded-lg p-4" data-material="bambu"&gt;<br />&nbsp; &nbsp; &nbsp; &lt;div class="flex items-center justify-between mb-2"&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp;&lt;h3 class="font-bold text-green-800"&gt;🎋 Bambu&lt;/h3&gt;&lt;span class="text-green-700 font-bold"&gt;Rp 30.000&lt;/span&gt;<br />&nbsp; &nbsp; &nbsp; &lt;/div&gt;<br />&nbsp; &nbsp; &nbsp; &lt;div class="text-sm text-green-700"&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp;&lt;p&gt;Kekuatan: ⭐⭐&lt;/p&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp;&lt;p&gt;Fleksibilitas: ⭐⭐⭐⭐⭐&lt;/p&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp;&lt;p&gt;Tahan Air: ⭐⭐&lt;/p&gt;<br />&nbsp; &nbsp; &nbsp; &lt;/div&gt;<br />&nbsp; &nbsp; &nbsp;&lt;/div&gt;<br />&nbsp; &nbsp; &lt;/div&gt;<br />&nbsp; &nbsp; &lt;div class="mt-6 space-y-3"&gt;&lt;button id="buildButton" class="w-full bg-blue-600 hover:bg-blue-700 text-white font-bold py-3 px-4 rounded-lg transition-colors"&gt; 🔨 Bangun Jembatan &lt;/button&gt;<br />&nbsp; &nbsp; &nbsp;&lt;div class="bg-orange-50 border border-orange-200 rounded-lg p-4 mb-3"&gt;<br />&nbsp; &nbsp; &nbsp; &lt;h3 class="font-bold text-orange-800 mb-2"&gt;⚖️ Beban Uji&lt;/h3&gt;<br />&nbsp; &nbsp; &nbsp; &lt;div class="flex items-center space-x-2 mb-2"&gt;&lt;label class="text-sm text-orange-700 font-medium"&gt;Berat:&lt;/label&gt; &lt;input type="range" id="loadSlider" min="1" max="10" value="3" class="flex-1"&gt; &lt;span id="loadValue" class="text-orange-800 font-bold min-w-[60px]"&gt;3 ton&lt;/span&gt;<br />&nbsp; &nbsp; &nbsp; &lt;/div&gt;<br />&nbsp; &nbsp; &nbsp; &lt;div class="text-xs text-orange-600"&gt;&lt;span id="loadDescription"&gt;Beban Ringan - Mobil kecil&lt;/span&gt;<br />&nbsp; &nbsp; &nbsp; &lt;/div&gt;<br />&nbsp; &nbsp; &nbsp;&lt;/div&gt;&lt;button id="testButton" class="w-full bg-green-600 hover:bg-green-700 text-white font-bold py-3 px-4 rounded-lg transition-colors" disabled&gt; 🚛 Uji Jembatan &lt;/button&gt; &lt;button id="resetButton" class="w-full bg-gray-600 hover:bg-gray-700 text-white font-bold py-3 px-4 rounded-lg transition-colors"&gt; 🔄 Reset &lt;/button&gt;<br />&nbsp; &nbsp; &lt;/div&gt;<br />&nbsp; &nbsp; &lt;div id="infoPanel" class="mt-6 p-4 bg-blue-50 border border-blue-200 rounded-lg"&gt;<br />&nbsp; &nbsp; &nbsp;&lt;h3 class="font-bold text-blue-800 mb-2"&gt;💡 Tips:&lt;/h3&gt;<br />&nbsp; &nbsp; &nbsp;&lt;p class="text-sm text-blue-700"&gt;Pilih material untuk setiap bagian jembatan. Pertimbangkan kekuatan, biaya, dan kondisi lingkungan!&lt;/p&gt;<br />&nbsp; &nbsp; &lt;/div&gt;<br />&nbsp; &nbsp;&lt;/aside&gt;&lt;!-- Bridge Building Area --&gt;<br />&nbsp; &nbsp;&lt;section class="flex-1 p-6"&gt;<br />&nbsp; &nbsp; &lt;div class="bridge-canvas h-full rounded-lg relative border-4 border-blue-300"&gt;<br />&nbsp; &nbsp; &nbsp;&lt;div class="water"&gt;&lt;/div&gt;&lt;!-- Bridge Foundation Left --&gt;<br />&nbsp; &nbsp; &nbsp;&lt;div id="foundation-left" class="bridge-part w-16 h-32 bg-gray-400 border-2 border-gray-600 rounded-t-lg" style="bottom: 40%; left: 10%; cursor: pointer;" data-part="foundation-left"&gt;<br />&nbsp; &nbsp; &nbsp; &lt;div class="text-xs text-center mt-1 font-bold"&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp;Pondasi Kiri<br />&nbsp; &nbsp; &nbsp; &lt;/div&gt;<br />&nbsp; &nbsp; &nbsp;&lt;/div&gt;&lt;!-- Bridge Foundation Right --&gt;<br />&nbsp; &nbsp; &nbsp;&lt;div id="foundation-right" class="bridge-part w-16 h-32 bg-gray-400 border-2 border-gray-600 rounded-t-lg" style="bottom: 40%; right: 10%; cursor: pointer;" data-part="foundation-right"&gt;<br />&nbsp; &nbsp; &nbsp; &lt;div class="text-xs text-center mt-1 font-bold"&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp;Pondasi Kanan<br />&nbsp; &nbsp; &nbsp; &lt;/div&gt;<br />&nbsp; &nbsp; &nbsp;&lt;/div&gt;&lt;!-- Bridge Deck --&gt;<br />&nbsp; &nbsp; &nbsp;&lt;div id="deck" class="bridge-part h-8 bg-gray-400 border-2 border-gray-600 rounded" style="bottom: 45%; left: 18%; right: 18%; cursor: pointer;" data-part="deck"&gt;<br />&nbsp; &nbsp; &nbsp; &lt;div class="text-xs text-center mt-1 font-bold"&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp;Lantai Jembatan<br />&nbsp; &nbsp; &nbsp; &lt;/div&gt;<br />&nbsp; &nbsp; &nbsp;&lt;/div&gt;&lt;!-- Bridge Support Cables --&gt;<br />&nbsp; &nbsp; &nbsp;&lt;div id="cables" class="bridge-part" style="bottom: 53%; left: 35%; right: 35%; height: 30px; cursor: pointer;" data-part="cables"&gt;<br />&nbsp; &nbsp; &nbsp; &lt;svg width="100%" height="100%" class="absolute"&gt;&lt;line x1="0%" y1="100%" x2="50%" y2="0%" stroke="#666" stroke-width="3" /&gt; &lt;line x1="100%" y1="100%" x2="50%" y2="0%" stroke="#666" stroke-width="3" /&gt; &lt;line x1="25%" y1="75%" x2="75%" y2="75%" stroke="#666" stroke-width="2" /&gt;<br />&nbsp; &nbsp; &nbsp; &lt;/svg&gt;<br />&nbsp; &nbsp; &nbsp; &lt;div class="text-xs text-center font-bold" style="margin-top: 25px;"&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp;Kabel Penyangga<br />&nbsp; &nbsp; &nbsp; &lt;/div&gt;<br />&nbsp; &nbsp; &nbsp;&lt;/div&gt;&lt;!-- Test Truck --&gt;<br />&nbsp; &nbsp; &nbsp;&lt;div id="testTruck" class="absolute hidden" style="bottom: 53%; left: -100px; transition: left 3s ease-in-out;"&gt;<br />&nbsp; &nbsp; &nbsp; &lt;div class="text-4xl"&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp;🚛<br />&nbsp; &nbsp; &nbsp; &lt;/div&gt;<br />&nbsp; &nbsp; &nbsp;&lt;/div&gt;&lt;!-- Results Display --&gt;<br />&nbsp; &nbsp; &nbsp;&lt;div id="resultDisplay" class="absolute top-4 left-4 right-4 text-center hidden"&gt;<br />&nbsp; &nbsp; &nbsp; &lt;div id="resultMessage" class="inline-block px-6 py-3 rounded-lg font-bold text-lg"&gt;&lt;/div&gt;<br />&nbsp; &nbsp; &nbsp;&lt;/div&gt;<br />&nbsp; &nbsp; &lt;/div&gt;<br />&nbsp; &nbsp;&lt;/section&gt;<br />&nbsp; &lt;/main&gt;<br />&nbsp;&lt;/div&gt;<br />&nbsp;&lt;script&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp;// Configuration object for editable features<br />&nbsp; &nbsp; &nbsp; &nbsp;const defaultConfig = {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;game_title: "🌉 Simulasi Membangun Jembatan",<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;budget_label: "Anggaran Tersedia",&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;materials_header: "🔧 Pilih Material",<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;build_button: "🔨 Bangun Jembatan",<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;test_button: "🚛 Uji Jembatan"<br />&nbsp; &nbsp; &nbsp; &nbsp;};</p><p>&nbsp; &nbsp; &nbsp; &nbsp;// Game state<br />&nbsp; &nbsp; &nbsp; &nbsp;let gameState = {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;budget: 500000,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;usedBudget: 0,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;selectedMaterial: null,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bridgeParts: {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'foundation-left': null,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'foundation-right': null,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'deck': null,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'cables': null<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;},<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;isBuilt: false,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;testLoad: 3,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;isCollapsed: false<br />&nbsp; &nbsp; &nbsp; &nbsp;};</p><p>&nbsp; &nbsp; &nbsp; &nbsp;// Material properties<br />&nbsp; &nbsp; &nbsp; &nbsp;const materials = {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;kayu: { name: 'Kayu', cost: 50000, strength: 3, flexibility: 4, waterResistance: 2, color: '#D2691E', emoji: '🪵' },<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;beton: { name: 'Beton', cost: 100000, strength: 5, flexibility: 2, waterResistance: 5, color: '#696969', emoji: '🧱' },<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;baja: { name: 'Baja', cost: 150000, strength: 5, flexibility: 5, waterResistance: 3, color: '#708090', emoji: '🔩' },<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bambu: { name: 'Bambu', cost: 30000, strength: 2, flexibility: 5, waterResistance: 2, color: '#228B22', emoji: '🎋' }<br />&nbsp; &nbsp; &nbsp; &nbsp;};</p><p>&nbsp; &nbsp; &nbsp; &nbsp;// Initialize the game<br />&nbsp; &nbsp; &nbsp; &nbsp;function initGame() {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;updateDisplay();<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;setupEventListeners();<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;updateLoadValue(); // Initialize load slider display<br />&nbsp; &nbsp; &nbsp; &nbsp;}</p><p>&nbsp; &nbsp; &nbsp; &nbsp;function updateDisplay() {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;document.getElementById('budget').textContent = `Rp ${gameState.budget.toLocaleString('id-ID')}`;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;document.getElementById('usedBudget').textContent = `Rp ${gameState.usedBudget.toLocaleString('id-ID')}`;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Update test button state<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const testButton = document.getElementById('testButton');<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const allPartsBuilt = Object.values(gameState.bridgeParts).every(part =&gt; part !== null);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;testButton.disabled = !allPartsBuilt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;testButton.classList.toggle('opacity-50', !allPartsBuilt);<br />&nbsp; &nbsp; &nbsp; &nbsp;}</p><p>&nbsp; &nbsp; &nbsp; &nbsp;function setupEventListeners() {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Material selection<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;document.querySelectorAll('.material-card').forEach(card =&gt; {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;card.addEventListener('click', () =&gt; selectMaterial(card.dataset.material));<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;});</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Bridge part selection<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;document.querySelectorAll('.bridge-part').forEach(part =&gt; {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;part.addEventListener('click', () =&gt; buildPart(part.dataset.part));<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;});</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Load slider<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;document.getElementById('loadSlider').addEventListener('input', updateLoadValue);</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Control buttons<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;document.getElementById('buildButton').addEventListener('click', buildBridge);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;document.getElementById('testButton').addEventListener('click', testBridge);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;document.getElementById('resetButton').addEventListener('click', resetGame);<br />&nbsp; &nbsp; &nbsp; &nbsp;}</p><p>&nbsp; &nbsp; &nbsp; &nbsp;function updateLoadValue() {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const slider = document.getElementById('loadSlider');<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const loadValue = document.getElementById('loadValue');<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const loadDescription = document.getElementById('loadDescription');<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;gameState.testLoad = parseInt(slider.value);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;loadValue.textContent = `${gameState.testLoad} ton`;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const descriptions = {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1: "Beban Sangat Ringan - Sepeda motor",<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2: "Beban Ringan - Mobil kecil",&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;3: "Beban Sedang - Mobil sedan",<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;4: "Beban Menengah - SUV",<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;5: "Beban Berat - Truk kecil",<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;6: "Beban Sangat Berat - Truk sedang",<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;7: "Beban Ekstrem - Truk besar",<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;8: "Beban Berbahaya - Truk trailer",<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;9: "Beban Kritis - Truk kontainer",<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;10: "Beban Maksimal - Truk gandeng"<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;};<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;loadDescription.textContent = descriptions[gameState.testLoad];<br />&nbsp; &nbsp; &nbsp; &nbsp;}</p><p>&nbsp; &nbsp; &nbsp; &nbsp;function selectMaterial(materialType) {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;gameState.selectedMaterial = materialType;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Update UI<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;document.querySelectorAll('.material-card').forEach(card =&gt; {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;card.classList.remove('selected');<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;});<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;document.querySelector(`[data-material="${materialType}"]`).classList.add('selected');<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;updateInfoPanel(`Material ${materials[materialType].name} dipilih! Klik bagian jembatan untuk membangunnya.`);<br />&nbsp; &nbsp; &nbsp; &nbsp;}</p><p>&nbsp; &nbsp; &nbsp; &nbsp;function buildPart(partName) {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!gameState.selectedMaterial) {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;updateInfoPanel('Pilih material terlebih dahulu!', 'warning');<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const material = materials[gameState.selectedMaterial];<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const cost = material.cost;</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (gameState.usedBudget + cost &gt; gameState.budget) {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;updateInfoPanel('Anggaran tidak cukup! Pilih material yang lebih murah.', 'error');<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Update game state<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;gameState.bridgeParts[partName] = gameState.selectedMaterial;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;gameState.usedBudget += cost;</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Update visual<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const partElement = document.getElementById(partName);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;partElement.style.backgroundColor = material.color;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;partElement.style.borderColor = material.color;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Add material emoji<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const existingEmoji = partElement.querySelector('.material-emoji');<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (existingEmoji) existingEmoji.remove();<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const emojiSpan = document.createElement('span');<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;emojiSpan.className = 'material-emoji absolute top-0 right-0 text-lg';<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;emojiSpan.textContent = material.emoji;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;partElement.appendChild(emojiSpan);</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;updateDisplay();<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;updateInfoPanel(`${material.name} dipasang pada ${getPartDisplayName(partName)}! Biaya: Rp ${cost.toLocaleString('id-ID')}`);<br />&nbsp; &nbsp; &nbsp; &nbsp;}</p><p>&nbsp; &nbsp; &nbsp; &nbsp;function buildBridge() {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const allPartsBuilt = Object.values(gameState.bridgeParts).every(part =&gt; part !== null);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!allPartsBuilt) {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;updateInfoPanel('Lengkapi semua bagian jembatan terlebih dahulu!', 'warning');<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;gameState.isBuilt = true;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;updateInfoPanel('Jembatan selesai dibangun! Sekarang Anda bisa mengujinya.', 'success');<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Enable test button<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;document.getElementById('testButton').disabled = false;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;document.getElementById('testButton').classList.remove('opacity-50');<br />&nbsp; &nbsp; &nbsp; &nbsp;}</p><p>&nbsp; &nbsp; &nbsp; &nbsp;function testBridge() {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!gameState.isBuilt || gameState.isCollapsed) return;</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Calculate bridge strength<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;let totalStrength = 0;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;let totalFlexibility = 0;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;let totalWaterResistance = 0;</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Object.values(gameState.bridgeParts).forEach(materialType =&gt; {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const material = materials[materialType];<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;totalStrength += material.strength;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;totalFlexibility += material.flexibility;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;totalWaterResistance += material.waterResistance;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;});</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const averageStrength = totalStrength / 4;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const averageFlexibility = totalFlexibility / 4;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const averageWaterResistance = totalWaterResistance / 4;</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Calculate load capacity vs test load<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const bridgeCapacity = averageStrength * 2; // Each strength point = 2 ton capacity<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const loadStress = gameState.testLoad / bridgeCapacity;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Animate truck crossing<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const truck = document.getElementById('testTruck');<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;truck.classList.remove('hidden');<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;truck.style.left = '-100px';<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Update truck size based on load<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const truckEmoji = truck.querySelector('div');<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (gameState.testLoad &lt;= 3) {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;truckEmoji.textContent = '🚗';<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} else if (gameState.testLoad &lt;= 6) {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;truckEmoji.textContent = '🚛';<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} else {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;truckEmoji.textContent = '🚚';<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;setTimeout(() =&gt; {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;truck.style.left = 'calc(100% + 50px)';<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}, 100);</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Add bridge animation based on load stress<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;document.querySelectorAll('.bridge-part').forEach(part =&gt; {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (loadStress &gt; 1.2) {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Overloaded - show cracks first<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;part.classList.add('crack-effect');<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} else {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;part.classList.add('test-animation');<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;});</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Determine test result<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;setTimeout(() =&gt; {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const success = loadStress &lt;= 1.0;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const catastrophicFailure = loadStress &gt; 1.5;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (catastrophicFailure) {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Bridge collapses<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;gameState.isCollapsed = true;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;document.querySelectorAll('.bridge-part').forEach(part =&gt; {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;part.classList.remove('test-animation', 'crack-effect');<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;part.classList.add('collapse-animation');<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;});<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;showTestResult(false, averageStrength, averageFlexibility, averageWaterResistance, true, loadStress);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} else {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;showTestResult(success, averageStrength, averageFlexibility, averageWaterResistance, false, loadStress);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Reset animations<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;document.querySelectorAll('.bridge-part').forEach(part =&gt; {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;part.classList.remove('test-animation', 'crack-effect');<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (success) {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;part.classList.add('success-glow');<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} else {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;part.classList.add('failure-shake');<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;});<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;setTimeout(() =&gt; {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;truck.classList.add('hidden');<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!gameState.isCollapsed) {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;document.querySelectorAll('.bridge-part').forEach(part =&gt; {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;part.classList.remove('success-glow', 'failure-shake');<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;});<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}, 2000);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}, 3000);<br />&nbsp; &nbsp; &nbsp; &nbsp;}</p><p>&nbsp; &nbsp; &nbsp; &nbsp;function showTestResult(success, strength, flexibility, waterResistance, collapsed, loadStress) {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const resultDisplay = document.getElementById('resultDisplay');<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const resultMessage = document.getElementById('resultMessage');<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const capacity = strength * 2;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (collapsed) {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;resultMessage.className = 'inline-block px-6 py-3 rounded-lg font-bold text-lg bg-red-100 text-red-800 border border-red-300';<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;resultMessage.innerHTML = `<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;💥 JEMBATAN RUNTUH! 💥&lt;br&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;span class="text-sm"&gt;Beban ${gameState.testLoad} ton terlalu berat untuk kapasitas ${capacity.toFixed(1)} ton!&lt;br&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Stress: ${(loadStress * 100).toFixed(0)}% | Kekuatan: ${strength.toFixed(1)} | Fleksibilitas: ${flexibility.toFixed(1)}&lt;/span&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;`;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} else if (success) {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;resultMessage.className = 'inline-block px-6 py-3 rounded-lg font-bold text-lg bg-green-100 text-green-800 border border-green-300';<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;resultMessage.innerHTML = `<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;🎉 JEMBATAN AMAN! 🎉&lt;br&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;span class="text-sm"&gt;Beban ${gameState.testLoad} ton berhasil dilalui!&lt;br&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Kapasitas: ${capacity.toFixed(1)} ton | Stress: ${(loadStress * 100).toFixed(0)}% | Kekuatan: ${strength.toFixed(1)}&lt;/span&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;`;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} else {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;resultMessage.className = 'inline-block px-6 py-3 rounded-lg font-bold text-lg bg-yellow-100 text-yellow-800 border border-yellow-300';<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;resultMessage.innerHTML = `<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;⚠️ JEMBATAN RETAK! ⚠️&lt;br&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;span class="text-sm"&gt;Beban ${gameState.testLoad} ton menyebabkan kerusakan!&lt;br&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Kapasitas: ${capacity.toFixed(1)} ton | Stress: ${(loadStress * 100).toFixed(0)}% | Berbahaya!&lt;/span&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;`;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;resultDisplay.classList.remove('hidden');<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;setTimeout(() =&gt; {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;resultDisplay.classList.add('hidden');<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}, 5000);<br />&nbsp; &nbsp; &nbsp; &nbsp;}</p><p>&nbsp; &nbsp; &nbsp; &nbsp;function resetGame() {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;gameState = {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;budget: 500000,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;usedBudget: 0,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;selectedMaterial: null,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bridgeParts: {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'foundation-left': null,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'foundation-right': null,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'deck': null,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'cables': null<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;},<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;isBuilt: false,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;testLoad: 3,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;isCollapsed: false<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;};</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Reset visual elements<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;document.querySelectorAll('.bridge-part').forEach(part =&gt; {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;part.style.backgroundColor = '#9CA3AF';<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;part.style.borderColor = '#6B7280';<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;part.style.transform = '';<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;part.style.opacity = '';<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;part.classList.remove('collapse-animation', 'crack-effect', 'success-glow', 'failure-shake', 'test-animation');<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const emoji = part.querySelector('.material-emoji');<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (emoji) emoji.remove();<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;});</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;document.querySelectorAll('.material-card').forEach(card =&gt; {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;card.classList.remove('selected');<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;});</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Reset load slider<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;document.getElementById('loadSlider').value = 3;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;updateLoadValue();</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;updateDisplay();<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;updateInfoPanel('Game direset! Mulai membangun jembatan baru.');<br />&nbsp; &nbsp; &nbsp; &nbsp;}</p><p>&nbsp; &nbsp; &nbsp; &nbsp;function updateInfoPanel(message, type = 'info') {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const infoPanel = document.getElementById('infoPanel');<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const colors = {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;info: 'bg-blue-50 border-blue-200 text-blue-700',<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;success: 'bg-green-50 border-green-200 text-green-700',<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;warning: 'bg-yellow-50 border-yellow-200 text-yellow-700',<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;error: 'bg-red-50 border-red-200 text-red-700'<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;};<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;infoPanel.className = `mt-6 p-4 border rounded-lg ${colors[type]}`;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;infoPanel.innerHTML = `&lt;h3 class="font-bold mb-2"&gt;💡 Info:&lt;/h3&gt;&lt;p class="text-sm"&gt;${message}&lt;/p&gt;`;<br />&nbsp; &nbsp; &nbsp; &nbsp;}</p><p>&nbsp; &nbsp; &nbsp; &nbsp;function getPartDisplayName(partName) {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const names = {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'foundation-left': 'Pondasi Kiri',<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'foundation-right': 'Pondasi Kanan',<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'deck': 'Lantai Jembatan',<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'cables': 'Kabel Penyangga'<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;};<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return names[partName] || partName;<br />&nbsp; &nbsp; &nbsp; &nbsp;}</p><p>&nbsp; &nbsp; &nbsp; &nbsp;// Element SDK implementation<br />&nbsp; &nbsp; &nbsp; &nbsp;async function onConfigChange(config) {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;document.getElementById('gameTitle').textContent = config.game_title || defaultConfig.game_title;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;document.getElementById('budgetLabel').textContent = config.budget_label || defaultConfig.budget_label;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;document.getElementById('materialsHeader').textContent = config.materials_header || defaultConfig.materials_header;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;document.getElementById('buildButton').innerHTML = `${config.build_button || defaultConfig.build_button}`;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;document.getElementById('testButton').innerHTML = `${config.test_button || defaultConfig.test_button}`;<br />&nbsp; &nbsp; &nbsp; &nbsp;}</p><p>&nbsp; &nbsp; &nbsp; &nbsp;function mapToCapabilities(config) {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;recolorables: [],<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;borderables: [],<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fontEditable: undefined,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fontSizeable: undefined<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;};<br />&nbsp; &nbsp; &nbsp; &nbsp;}</p><p>&nbsp; &nbsp; &nbsp; &nbsp;function mapToEditPanelValues(config) {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return new Map([<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;["game_title", config.game_title || defaultConfig.game_title],<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;["budget_label", config.budget_label || defaultConfig.budget_label],<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;["materials_header", config.materials_header || defaultConfig.materials_header],<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;["build_button", config.build_button || defaultConfig.build_button],<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;["test_button", config.test_button || defaultConfig.test_button]<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;]);<br />&nbsp; &nbsp; &nbsp; &nbsp;}</p><p>&nbsp; &nbsp; &nbsp; &nbsp;// Initialize Element SDK<br />&nbsp; &nbsp; &nbsp; &nbsp;if (window.elementSdk) {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;window.elementSdk.init({<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;defaultConfig,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;onConfigChange,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;mapToCapabilities,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;mapToEditPanelValues<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;});<br />&nbsp; &nbsp; &nbsp; &nbsp;}</p><p>&nbsp; &nbsp; &nbsp; &nbsp;// Start the game<br />&nbsp; &nbsp; &nbsp; &nbsp;initGame();<br />&nbsp; &nbsp;&lt;/script&gt;<br />&lt;script&gt;(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'99dd500fa600229b',t:'MTc2MzAyNjg4MC4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&amp;&amp;(document.onreadystatechange=e,c())}}}})();&lt;/script&gt;&lt;/body&gt;<br />&lt;/html&gt;</p>]]></description>
	<dc:creator>Muh.Taqiuddin.S</dc:creator>		</item>
<item>
	<guid isPermaLink="true">https://sharka.site/3blog/blog/view/100/kasus-menumbuhkan-keberanian-bertanya</guid>
	<pubDate>Thu, 13 Nov 2025 10:40:36 +0800</pubDate>
	<link>https://sharka.site/3blog/blog/view/100/kasus-menumbuhkan-keberanian-bertanya</link>
	<title><![CDATA[Kasus : Menumbuhkan keberanian bertanya]]></title>
	<description><![CDATA[<div style="background-color:#e6faff;border-radius:10px;box-shadow:0 0 5px rgba(0,0,0,0.2);font-family:Arial, sans-serif;padding:20px;"><h2 style="color:#006666;text-align:center;">📘 Lembar Analisis Kasus Pembelajaran</h2><h3 style="color:#004d4d;">Petunjuk Umum:</h3><ol style="line-height:1.6;"><li><p style="margin-left:20px;">Bacalah setiap kasus dengan cermat.</p></li><li><p style="margin-left:20px;">Analisis situasi yang terjadi, kemudian tuliskan:</p><ol style="list-style-type:lower-latin;" type="a"><li><p style="margin-left:20px;">Identifikasi masalah pembelajaran.</p></li><li><p style="margin-left:20px;">Solusi atau langkah-langkah yang dapat diterapkan guru.</p></li><li><p style="margin-left:20px;">Strategi pembelajaran aktif dan penguatan berpikir kritis yang relevan.</p></li><li><p style="margin-left:20px;">Nilai karakter yang dapat dikembangkan.</p></li></ol></li><li><p style="margin-left:20px;">Gunakan pengalaman Anda di sekolah untuk mendukung jawaban.</p></li></ol><hr><figure class="table" style="width:100%;"><table style="border-collapse:collapse;border-spacing:0px;font-size:14px;" border="1" cellpadding="10"><thead style="background-color:#ccf2f2;"><tr><th style="text-align:center;width:5%;">No</th><th style="text-align:center;width:30%;">Komponen Analisis</th><th style="text-align:center;">Uraian Jawaban</th></tr></thead><tbody><tr><td style="text-align:center;">1</td><td><strong>Identifikasi Masalah Pembelajaran</strong></td><td>Siswa kurang aktif dalam berdiskusi dan cenderung pasif karena metode pembelajaran yang digunakan guru masih bersifat ceramah satu arah. Siswa kesulitan untuk menyusun kalimat untuk bertanya. Siswa tidak memahami materi sehingga tidak ada yang mau ditanyakan.</td></tr><tr><td style="text-align:center;">2</td><td><strong>Solusi / Langkah yang Dapat Diterapkan Guru</strong></td><td><p>Guru dapat membuat ice breaking diawal pembelajaran, berupa guru meletakkan 3 lokasi jawaban pertanyaan (Benar, Salah, Ragu - Ragu) lalu guru memberikan pertanyaan dan mengarahkan siswa untuk berkelompok ke lokasi benar, ragu - ragu dan salah, dan Guru dapat melakukan improvisasi dengan berpura - pura menjawab salah soal dan menyampaikan ke murid bahwa itu adalah jawaban yang benar.&nbsp;</p><p>Menerapkan pembelajaran berbasis masalah (PBL), membagi siswa ke dalam kelompok kecil, dan memberikan tugas kolaboratif yang menuntut partisipasi setiap anggota.</p></td></tr><tr><td style="text-align:center;">3</td><td><strong>Strategi Pembelajaran Aktif dan Penguatan Berpikir Kritis</strong></td><td>Strategi yang digunakan adalah <strong>Problem Based Learning (PBL)</strong> di mana siswa menganalisis masalah nyata, mendiskusikan solusi, dan mempresentasikan hasilnya. Kegiatan ini menumbuhkan kemampuan berpikir kritis melalui analisis, evaluasi, dan argumentasi logis.</td></tr><tr><td style="text-align:center;">4</td><td><strong>Nilai Karakter yang Dapat Dikembangkan</strong></td><td>Kerja sama, tanggung jawab, rasa ingin tahu, dan percaya diri.</td></tr><tr><td style="text-align:center;">5</td><td><strong>Pengalaman di Sekolah (Refleksi Pribadi)</strong></td><td>Saat saya menerapkan ice breaking diatas serta model PBL pada materi “Operasi Bilangan Bulat”, siswa menjadi lebih aktif bertanya dan saling membantu dalam memahami konsep. Hasilnya, keterlibatan dan hasil belajar meningkat signifikan.</td></tr></tbody></table></figure><p style="color:#004d4d;margin-top:20px;"><i>💡 <strong>Catatan:</strong> Isilah bagian jawaban berdasarkan kasus nyata atau pengalaman Anda sendiri di sekolah.</i></p></div>]]></description>
	<dc:creator>Muh.Taqiuddin.S</dc:creator>		</item>
<item>
	<guid isPermaLink="true">https://sharka.site/3blog/blog/view/99/tutorial-menggunakan-sketchup</guid>
	<pubDate>Wed, 12 Nov 2025 07:48:54 +0800</pubDate>
	<link>https://sharka.site/3blog/blog/view/99/tutorial-menggunakan-sketchup</link>
	<title><![CDATA[Tutorial menggunakan sketchUp]]></title>
	<description><![CDATA[<h3 style="color:#2e7d32;">🧱 Tutorial Membuat Kolam 4 x 6 Meter dengan SketchUp</h3><p><strong>Tujuan:</strong> Peserta didik mampu membuat desain kolam penampungan air ukuran <i>4 meter x 6 meter</i> menggunakan SketchUp secara mandiri.</p><h4><strong>Langkah-langkah:</strong></h4><ol><li><p><strong>Buka SketchUp</strong> dan pilih satuan dalam <i>meter</i>.</p><figure class="image image_resized" style="width:537px;"><img style="aspect-ratio:616/415;" src="https://sharka.site/3blog/serve-file/e0/l1763045804/di/c0/3COtQn5hoirO4qX_woyDSXNgywFSkiBsZ5gZNsAT8UA/editor_images/1/46/6915f1acd299d.jpg" width="616" height="415" alt=""></figure></li><li><p>Pilih <strong>Tools Rectangle</strong> di toolbar.</p><figure class="image"><img style="aspect-ratio:674/496;" src="https://sharka.site/3blog/serve-file/e0/l1763046082/di/c0/R3zPOuxqGP4LEg1glV4xjupmqiSfVIGene4eM7ylfiY/editor_images/1/46/6915f2c2260e9.jpg" width="674" height="496" alt=""></figure></li><li>Klik di area kerja, lalu ketik <code>6,4</code> pada keyboard dan tekan <strong>Enter</strong> untuk membuat dasar kolam berukuran 6 m x 4 m.</li><li>Pilih <strong>Push/Pull Tool</strong> (ikon balok naik-turun), arahkan ke bidang persegi panjang tadi, lalu tarik ke atas untuk membuat ketinggian kolam (misalnya 2 meter).</li><li>Setelah dinding kolam terbentuk, pilih <strong>Offset Tool</strong>, klik sisi atas kolam, lalu geser ke arah luar sejauh <code>0.5</code> meter untuk membentuk ketebalan dinding kolam.</li><li>Gunakan kembali <strong>Push/Pull Tool</strong> pada bidang tengah (bagian dalam) dan dorong ke bawah hingga mencapai dasar kolam, sehingga ruang kolam menjadi tampak kosong di dalam.</li><li>Hapus permukaan bagian atas kolam (cover) agar bagian dalam kolam terlihat jelas.</li><li>Pilih <strong>Paint Bucket Tool</strong> untuk memberikan pewarnaan. Gunakan warna biru muda atau tekstur air pada bagian dalam kolam yang akan dilapisi terpal.</li></ol><p><strong>Catatan:</strong> Pastikan tampilan orbit digunakan (tekan tombol tengah mouse dan geser) agar dapat melihat seluruh sisi kolam secara tiga dimensi.</p><p><strong>Hasil Akhir:</strong> Model 3D kolam ukuran 4 x 6 meter dengan dinding setebal 0,5 meter dan warna bagian dalam menyerupai kolam berlapis terpal.</p>]]></description>
	<dc:creator>Muh.Taqiuddin.S</dc:creator>		</item>
<item>
	<guid isPermaLink="true">https://sharka.site/3blog/blog/view/94/ai</guid>
	<pubDate>Sun, 02 Nov 2025 06:27:35 +0800</pubDate>
	<link>https://sharka.site/3blog/blog/view/94/ai</link>
	<title><![CDATA[AI]]></title>
	<description><![CDATA[<p>Video : <a href="https://aistudio.google.com">https://aistudio.google.com</a></p><p>workflow video : <a href="https://wan.video">https://wan.video</a></p><p>phet simulation</p><p>Polypad untuk bermain math</p><p><a href="https://www.ginifab.com/feeds/angle_measurement/">https://www.ginifab.com/feeds/angle_measurement/</a> (busur online)</p><p>https://sketchfab.com/ . Untuk IPa</p><p>Text : gemini</p><p>&nbsp;</p>]]></description>
	<dc:creator>Muh.Taqiuddin.S</dc:creator>		</item>
<item>
	<guid isPermaLink="true">https://sharka.site/3blog/blog/view/75/prompt-ai-untuk-materi-ck-editor</guid>
	<pubDate>Wed, 22 Oct 2025 23:23:46 +0800</pubDate>
	<link>https://sharka.site/3blog/blog/view/75/prompt-ai-untuk-materi-ck-editor</link>
	<title><![CDATA[Prompt AI untuk Materi CK Editor]]></title>
	<description><![CDATA[<p>Buatkan saya materi pembelajaran gaya e-book digital interaktif untuk CKEditor. Gunakan HTML dengan semua style secara inline agar tampil bagus di Android layar kecil. Pastikan tampilannya responsif, warna lembut (#e3f2fd, #fff3e0, #e8f5e9), font 'Poppins', sans-serif, teks rata kiri-kanan, tabel bisa digeser, dan gunakan unicode emoji 📘💡🎯 untuk mempercantik. Sertakan bagian Materi, Contoh Soal, Latihan Soal (ada tombol jika diklik maka muncul kunci jawaban atau langkah langkah penyelesaian) dan LKPD. Struktur HTML rapi seperti modul digital, bisa langsung dipaste ke CKEditor tanpa CSS eksternal.<br />&nbsp;</p>]]></description>
	<dc:creator>Muh.Taqiuddin.S</dc:creator>		</item>
<item>
	<guid isPermaLink="true">https://sharka.site/3blog/blog/view/55/alur-kerja-layout-view-pada-codeigniter-4-penjelasan-extend-section-endsection-include-dan-rend</guid>
	<pubDate>Wed, 22 Oct 2025 16:41:26 +0800</pubDate>
	<link>https://sharka.site/3blog/blog/view/55/alur-kerja-layout-view-pada-codeigniter-4-penjelasan-extend-section-endsection-include-dan-rend</link>
	<title><![CDATA[Alur Kerja Layout View pada CodeIgniter 4: Penjelasan Extend, Section, EndSection, Include, dan RenderSection]]></title>
	<description><![CDATA[<pre style="background-color:#f8f9fa;border-radius:8px;border:1px solid #ccc;font-family:Consolas, monospace;font-size:14px;padding:12px;">+-------------------------------------------+
|          LAYOUT UTAMA (main.php)          |
|-------------------------------------------|
| &lt;!DOCTYPE html&gt;                           |
| &lt;html&gt;                                    |
| &lt;head&gt;                                    |
|   &lt;title&gt;Game Peluang&lt;/title&gt;             |
| &lt;/head&gt;                                   |
| &lt;body&gt;                                    |
|                                           |
|   &lt;?= $this-&gt;include('layout/navbar_game') ?&gt;   &lt;-- Include komponen kecil
|                                           |
|   &lt;!-- Tempat isi halaman muncul --&gt;      |
|   &lt;?= $this-&gt;renderSection('content') ?&gt;  &lt;-- Menampilkan isi section
|                                           |
|   &lt;?= $this-&gt;include('layout/footer') ?&gt;  &lt;-- Include footer
|                                           |
| &lt;/body&gt;                                   |
| &lt;/html&gt;                                   |
+-------------------------------------------+
                 ▲
                 |
                 |  (extend)
                 |
+-------------------------------------------+
|      HALAMAN ANAK (materi.php)            |
|-------------------------------------------|
| &lt;?= $this-&gt;extend('layout/main') ?&gt;       |  &lt;-- Pakai layout utama
|                                           |
| &lt;?= $this-&gt;section('content') ?&gt;          |  &lt;-- Mulai bagian isi
|   &lt;h1&gt;Materi Game&lt;/h1&gt;                    |
|   &lt;p&gt;Belajar peluang dengan menyenangkan&lt;/p&gt; |
| &lt;?= $this-&gt;endSection() ?&gt;                |  &lt;-- Akhiri bagian isi
+-------------------------------------------+
</pre>]]></description>
	<dc:creator>Muh.Taqiuddin.S</dc:creator>		</item>
<item>
	<guid isPermaLink="true">https://sharka.site/3blog/blog/view/54/7-metode-pembelajaran-yang-efektif</guid>
	<pubDate>Wed, 22 Oct 2025 16:39:55 +0800</pubDate>
	<link>https://sharka.site/3blog/blog/view/54/7-metode-pembelajaran-yang-efektif</link>
	<title><![CDATA[7 Metode Pembelajaran yang Efektif]]></title>
	<description><![CDATA[<p>Metode pembelajaran adalah <strong>cara atau prosedur sistematis yang digunakan guru untuk menyampaikan materi pelajaran kepada siswa agar tujuan pembelajaran tercapai secara efektif dan efisien.</strong></p><p>Ini merupakan rencana komprehensif yang mencakup langkah-langkah, teknik, dan alat yang dipilih berdasarkan sifat materi, kondisi siswa, dan sasaran yang ingin dicapai.</p><hr><h2>Komponen Utama Metode Pembelajaran</h2><p>Setiap metode pembelajaran melibatkan tiga komponen utama:</p><ol start="1"><li><strong>Pendekatan (</strong><i><strong>Approach</strong></i><strong>):</strong> Sudut pandang atau filosofi umum tentang bagaimana proses belajar-mengajar harus dilakukan (misalnya, pendekatan <i>student-centered</i> atau <i>teacher-centered</i>).</li><li><strong>Strategi (</strong><i><strong>Strategy</strong></i><strong>):</strong> Kerangka rencana kegiatan untuk mencapai tujuan (misalnya, Strategi Pembelajaran Ekspositori, Strategi Pembelajaran Kooperatif).</li><li><strong>Teknik/Taktik (</strong><i><strong>Technique/Tactic</strong></i><strong>):</strong> Cara spesifik dan paling operasional yang digunakan saat mengimplementasikan suatu metode (misalnya, menggunakan <i>ice breaking</i>, tanya jawab cepat, atau <i>mind mapping</i>).</li></ol><hr><h2>Klasifikasi Umum Metode Pembelajaran</h2><p>Metode pembelajaran umumnya diklasifikasikan berdasarkan fokusnya:</p><h3>1. Metode Berpusat pada Guru (<i>Teacher-centered</i>)</h3><p>Guru berperan aktif sebagai sumber informasi utama, sedangkan siswa cenderung pasif menerima.</p><ul><li><strong>Contoh:</strong> Ceramah, Demonstrasi, Tanya Jawab.</li></ul><h3>2. Metode Berpusat pada Siswa (<i>Student-centered</i>)</h3><p>Siswa terlibat aktif dalam proses belajar, eksplorasi, dan penemuan. Guru berfungsi sebagai fasilitator.</p><ul><li><strong>Contoh:</strong> Diskusi Kelompok, Studi Kasus, <i>Role Play</i>, Pembelajaran Berbasis Proyek (<i>Project-Based Learning</i>).</li></ul><h3>3. Metode Berpusat pada Materi (<i>Content-centered</i>)</h3><p>Fokus utamanya adalah pada penguasaan materi atau subjek. Metode ini sering menggunakan media atau sumber belajar tertentu.</p><ul><li><strong>Contoh:</strong> Studi Pustaka, Penggunaan Modul.</li></ul><hr><h2>Fungsi Penting Metode Pembelajaran</h2><p>Pemilihan metode yang tepat memiliki fungsi krusial:</p><ul><li><strong>Penyampaian Materi:</strong> Membantu guru menyajikan informasi dengan cara yang mudah dipahami.</li><li><strong>Motivasi:</strong> Meningkatkan minat dan partisipasi aktif siswa dalam proses belajar.</li><li><strong>Interaksi:</strong> Menciptakan komunikasi dua arah yang efektif antara guru dan siswa.</li><li><strong>Efisiensi:</strong> Menghemat waktu dan tenaga dalam mencapai target kurikulum.</li><li><strong>Pengembangan Keterampilan:</strong> Melatih keterampilan khusus pada siswa, seperti berpikir kritis, kolaborasi, dan pemecahan masalah</li></ul><hr><h2>7 Metode Pembelajaran Efektif&nbsp;</h2><p><strong>1. Metode Ceramah (Lecture)</strong> Metode ini berfokus pada <strong>guru</strong> (<i>Teacher-centered</i>), di mana materi disampaikan secara lisan untuk tujuan transfer informasi. <strong>Kelebihan</strong> utamanya adalah efisiensi waktu dan kemampuan menjangkau banyak siswa sekaligus. Namun, <strong>Kelemahan</strong> terbesarnya adalah siswa cenderung pasif dan tingkat retensi informasinya rendah.</p><p><strong>2. Metode Diskusi Kelompok</strong> Metode ini bersifat <strong>berpusat pada siswa</strong> (<i>Student-centered</i>), melibatkan pertukaran pikiran dalam kelompok untuk memecahkan masalah. <strong>Kelebihannya</strong> adalah siswa menjadi aktif, terjadi interaksi dua arah, dan melatih keterampilan kolaborasi dan <i>problem solving</i>. <strong>Kelemahannya</strong>, diskusi bisa melebar dari topik jika tidak dikendalikan dengan baik, dan ada potensi dominasi oleh siswa tertentu.</p><p><strong>3. Metode Tanya Jawab Interaktif</strong> Tanya jawab adalah metode <strong>berpusat pada guru</strong> (<i>Teacher-centered</i>) yang melibatkan guru dan siswa saling bertanya dan menjawab. Tujuan utamanya adalah mengecek pemahaman dan partisipasi seketika. <strong>Kelebihan</strong> utamanya adalah meningkatkan partisipasi langsung dan memberikan umpan balik cepat. <strong>Kelemahannya</strong>, hanya sebagian siswa yang aktif berpartisipasi, dan jawabannya mungkin masih dangkal.</p><p><strong>4. Metode Demonstrasi (Peragaan)</strong> Metode <strong>berpusat pada guru</strong> (<i>Teacher-centered</i>) ini mengharuskan guru memperagakan suatu proses atau prosedur secara langkah demi langkah, yang kemudian ditiru oleh siswa. Metode ini sangat baik untuk materi keterampilan karena <strong>jelas, konkret, dan mudah ditiru</strong>. Namun, <strong>Kelemahannya</strong> adalah membutuhkan alat dan peraga yang lengkap dan biasanya lebih efektif untuk kelompok siswa yang lebih kecil.</p><p><strong>5. Metode Studi Kasus</strong> Ini adalah metode <strong>berpusat pada siswa</strong> (<i>Student-centered</i>) di mana siswa menganalisis skenario atau kasus nyata yang kompleks. <strong>Kelebihannya</strong> adalah dapat menghubungkan teori dengan realita, melatih penalaran tingkat tinggi, dan kemampuan pengambilan keputusan. <strong>Kelemahannya</strong> adalah membutuhkan alokasi waktu yang panjang dan kasus yang disajikan harus sangat relevan dengan materi.</p><p><strong>6. Simulasi / Role Play</strong> Metode <strong>berpusat pada siswa</strong> (<i>Student-centered</i>) ini melibatkan siswa memerankan situasi tertentu (misalnya, wawancara atau negosiasi). Sifatnya sangat <strong>menarik dan interaktif</strong>, efektif melatih keterampilan sosial, komunikasi, dan empati. <strong>Kelemahannya</strong>, siswa bisa merasa malu atau tidak serius, sehingga memerlukan skenario dan panduan yang sangat jelas dari guru.</p><p><strong>7. Penugasan / Tugas Proyek</strong> Metode <strong>berpusat pada siswa</strong> (<i>Student-centered</i>) ini melibatkan pemberian tugas individu atau kelompok yang mengarah pada penelitian kecil atau penciptaan karya. Metode ini sangat baik untuk melatih <strong>tanggung jawab, kreativitas, dan keterampilan belajar mandiri</strong>. <strong>Kelemahannya</strong> yang umum terjadi adalah adanya siswa yang bergantung pada teman kelompoknya, atau potensi hasil yang tidak orisinal.</p>]]></description>
	<dc:creator>Muh.Taqiuddin.S</dc:creator>		</item>
<item>
	<guid isPermaLink="true">https://sharka.site/3blog/blog/view/53/rujukan-kemdikbud-oktober-2025</guid>
	<pubDate>Wed, 22 Oct 2025 16:38:37 +0800</pubDate>
	<link>https://sharka.site/3blog/blog/view/53/rujukan-kemdikbud-oktober-2025</link>
	<title><![CDATA[Rujukan Kemdikbud Oktober 2025]]></title>
	<description><![CDATA[<p>Rujukan https://kurikulum.kemdikbud.go.id/rujukan</p><p>1. regulasi-standar-nasional-pendidikan <a href="https://kurikulum.kemdikbud.go.id/rujukan/regulasi-standar-nasional-pendidikan">Rujukan | Sistem Informasi Kurikulum Nasional</a></p><p>2. regulasi-kurikulum <a href="https://kurikulum.kemdikbud.go.id/rujukan/regulasi-kurikulum">Rujukan | Sistem Informasi Kurikulum Nasional</a></p><p>3. panduan-panduan-kurikulum <a href="https://kurikulum.kemdikbud.go.id/rujukan/panduan-panduan-kurikulum">Rujukan | Sistem Informasi Kurikulum Nasional</a></p><p>4. kajian-naskah-akademik <a href="https://kurikulum.kemdikbud.go.id/rujukan/kajian-naskah-akademik">Rujukan | Sistem Informasi Kurikulum Nasional</a></p><p>5. surat-edaran <a href="https://kurikulum.kemdikbud.go.id/rujukan/surat-edaran">Rujukan | Sistem Informasi Kurikulum Nasional</a></p><p>6. paparan <a href="https://kurikulum.kemdikbud.go.id/rujukan/paparan">Rujukan | Sistem Informasi Kurikulum Nasional</a></p>]]></description>
	<dc:creator>Muh.Taqiuddin.S</dc:creator>		</item>
</channel>
</rss>
