Peristiwa

Game

IB Digital Society: Concept Defender | Teacher Fara https://cdn.tailwindcss.com @import url(‘https://fonts.googleapis.com/css2?family=Orbitron:wght@400;600;800;900&family=Inter:wght@300;400;500;600;700&display=swap’); body { font-family: ‘Inter’, sans-serif; background-color: #0b0f19; color: #f3f4f6; overflow-x: hidden; user-select: none; } .font-orbitron { font-family: ‘Orbitron’, sans-serif; } /* Space background canvas container */ #game-container { position: relative; width: 100%; height: calc(100vh – 80px); max-height: 850px; background: radial-gradient(circle at center, #111827 0%, #030712 100%); overflow: hidden; border-radius: 1rem; box-shadow: 0 20px 50px rgba(0, 0, 0, 0.7); } /* Starfield animation */ .star { position: absolute; background-color: #ffffff; border-radius: 50%; opacity: 0.8; animation: twinkle infinite alternate ease-in-out; } @keyframes twinkle { 0% { opacity: 0.2; transform: scale(0.8); } 100% { opacity: 1; transform: scale(1.2); } } /* Uniform alien target styling – All answers look visually identical to eliminate subtopic/color hints */ .alien-target { position: absolute; cursor: pointer; transition: transform 0.15s ease-out; will-change: transform, left, top; display: flex; flex-direction: column; align-items: center; justify-content: center; width: 220px; padding: 12px; /* Uniform Cyan/Slate Theme for all answers */ background: rgba(15, 23, 42, 0.85); border: 2px solid #38bdf8; box-shadow: 0 0 15px rgba(56, 189, 248, 0.3), inset 0 0 10px rgba(56, 189, 248, 0.15); border-radius: 1rem; backdrop-filter: blur(8px); } .alien-target:hover { transform: scale(1.05); border-color: #7dd3fc; box-shadow: 0 0 25px rgba(56, 189, 248, 0.6); } .alien-target:active { transform: scale(0.95); } /* Uniform Alien SVG Icon styling */ .alien-svg { width: 44px; height: 44px; fill: #38bdf8; filter: drop-shadow(0 0 6px rgba(56, 189, 248, 0.8)); margin-bottom: 6px; } .alien-text { color: #f8fafc; font-size: 0.95rem; font-weight: 600; text-align: center; line-height: 1.25; pointer-events: none; } /* Laser beam crosshair effect */ .crosshair-cursor { cursor: crosshair; } /* Custom Scrollbar for review modal */ ::-webkit-scrollbar { width: 8px; } ::-webkit-scrollbar-track { background: #0f172a; } ::-webkit-scrollbar-thumb { background: #334155; border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: #475569; } /* HUD Glassmorphism */ .hud-panel { background: rgba(15, 23, 42, 0.8); backdrop-filter: blur(12px); border: 1px solid rgba(255, 255, 255, 0.1); }

IB DIGITAL SOCIETY

Topic 2.0 Concepts Defense • Author: Teacher Fara

Score: 0
Progress: 0 / 0
IB DP Digital Society • Assessment Prep

CONCEPT DEFENDER

Test your mastery of the 7 core Digital Society concepts: Change, Power, Space, Identity, Expression, Systems, Values and Ethics.

Mission Rules:
  • Read the prompt/scenario displayed at the top.
  • Aliens floating across space carry possible concept answers.
  • No color or subtopic hints! All answer pods are styled identically. You must analyze the question carefully.
  • Click/Tap the correct alien to shoot laser beams and claim points.
  • Complete all questions to unlock your full Revision Breakdown report.

Curated by Teacher Fara • IB Diploma Programme

FEEDBACK
IB Diploma Programme • Digital Society Topic 2.0 Concepts • Prepared by Teacher Fara
// Comprehensive Question Dataset covering all 7 Topic 2.0 Concepts const QUESTIONS_DATABASE = [ { id: 1, question: “An AI system used in hiring shows systemic prejudice against female candidates because it was trained on historical company data. Which core concept best captures this issue?”, options: [“Values and Ethics”, “Space”, “Change”, “Identity”], correct: “Values and Ethics”, explanation: “Values and ethics refer to moral principles and standards that guide human behavior and technological design. Algorithmic bias, fairness, and rights are central to this concept.” }, { id: 2, question: “A digital media corporation acquires smaller platforms, allowing it to control content distribution and influence public political discourse. Which concept is primarily illustrated here?”, options: [“Power”, “Expression”, “Systems”, “Space”], correct: “Power”, explanation: “Power relates to how influence, authority, and control are gained, exercised, or contested through digital technologies and platform monopolies.” }, { id: 3, question: “The transition from physical paper archives to cloud-based automated databases reshapes workforce roles and organizational structures. Which concept does this structural shift emphasize?”, options: [“Change”, “Identity”, “Values and Ethics”, “Space”], correct: “Change”, explanation: “Change highlights the causes, processes, and consequences of technological transformation over time in societies and institutions.” }, { id: 4, question: “A gamer creates a distinct virtual avatar and online persona that differs significantly from their real-life physical self. Which concept does this represent?”, options: [“Identity”, “Systems”, “Power”, “Change”], correct: “Identity”, explanation: “Identity focuses on how individuals and communities define themselves, present their personas, and are perceived through digital interactions.” }, { id: 5, question: “Citizens use encrypted messaging channels and social networks to publish independent news reports and voice dissent against government censorship. Which concept is highlighted?”, options: [“Expression”, “Space”, “Values and Ethics”, “Change”], correct: “Expression”, explanation: “Expression concerns the ways people communicate ideas, opinions, feelings, and creative works using digital platforms and tools.” }, { id: 6, question: “Smart city sensors, telecommunication towers, cloud data centers, and human operators function together as an interconnected infrastructure. Which concept describes this entity?”, options: [“Systems”, “Identity”, “Expression”, “Values and Ethics”], correct: “Systems”, explanation: “Systems involve complex networks of technical components, human actors, rules, and organizations working together as an integrated whole.” }, { id: 7, question: “Remote workers collaborate across physical national borders in a shared 3D virtual environment, blurring traditional boundaries. Which concept is most applicable?”, options: [“Space”, “Power”, “Change”, “Expression”], correct: “Space”, explanation: “Space explores the physical, virtual, and hybrid environments where digital interactions take place, reconfiguring distance and geography.” }, { id: 8, question: “Governments introduce legislation mandating that tech companies grant access to encrypted user messages for surveillance. This debate balances national security against user privacy rights. Which concept applies?”, options: [“Values and Ethics”, “Space”, “Systems”, “Identity”], correct: “Values and Ethics”, explanation: “This highlights fundamental ethical tensions between state security mandates and citizens’ human rights to privacy and digital confidentiality.” }, { id: 9, question: “The rapid adoption of generative AI tools in creative industries forces artists to adapt their skills while redefining copyright standards. Which concept best frames this ongoing evolution?”, options: [“Change”, “Power”, “Identity”, “Space”], correct: “Change”, explanation: “Technological disruption driven by generative AI leads to ongoing societal, economic, and cultural transformations (Change).” }, { id: 10, question: “Social media algorithms prioritize polarizing posts to maximize engagement, thereby altering how political candidates broadcast their messages. Which concept focuses on how ideas are conveyed?”, options: [“Expression”, “Identity”, “Systems”, “Values and Ethics”], correct: “Expression”, explanation: “Expression examines the mechanisms through which voice, opinions, artistic works, and news are generated and circulated in digital spaces.” }, { id: 11, question: “A multinational platform dictates strict terms of service that decide which user accounts can operate or be banned globally. Which concept reflects this centralized control?”, options: [“Power”, “Change”, “Space”, “Identity”], correct: “Power”, explanation: “Platform governance and the unilateral authority to enforce terms of service over millions of global users represent digital Power.” }, { id: 12, question: “A global financial network relies on interconnected server farms, fiber-optic cables, financial protocols, and banking compliance teams. Which concept covers this complex network?”, options: [“Systems”, “Expression”, “Space”, “Change”], correct: “Systems”, explanation: “Systems encompass the hardware, software, regulatory policies, and human protocols structured to achieve complex operational goals.” }, { id: 13, question: “Digital nomads live in rural towns while operating full-time in global digital markets via satellite internet. Which concept examines this breakdown of geographic distance?”, options: [“Space”, “Values and Ethics”, “Identity”, “Power”], correct: “Space”, explanation: “Digital technologies redefine physical distance, locality, and virtual territory, central to the concept of Space.” }, { id: 14, question: “Biometric identification data, such as facial recognition scans, become mandatory for accessing public healthcare services. Which concept relates to how individuals are defined and tracked?”, options: [“Identity”, “Expression”, “Space”, “Change”], correct: “Identity”, explanation: “Identity includes how individuals are categorized, recognized, or verified through biological and digital records.” } ]; // Web Audio API Sound Effects Synthesizer (No external audio file dependencies) class SoundFX { constructor() { this.ctx = null; this.muted = false; } init() { if (!this.ctx) { this.ctx = new (window.AudioContext || window.webkitAudioContext)(); } } playLaser() { if (this.muted || !this.ctx) return; try { const osc = this.ctx.createOscillator(); const gain = this.ctx.createGain(); osc.type = ‘sawtooth’; osc.frequency.setValueAtTime(800, this.ctx.currentTime); osc.frequency.exponentialRampToValueAtTime(100, this.ctx.currentTime + 0.15); gain.gain.setValueAtTime(0.2, this.ctx.currentTime); gain.gain.exponentialRampToValueAtTime(0.01, this.ctx.currentTime + 0.15); osc.connect(gain); gain.connect(this.ctx.destination); osc.start(); osc.stop(this.ctx.currentTime + 0.15); } catch(e) {} } playHit(isCorrect) { if (this.muted || !this.ctx) return; try { const osc = this.ctx.createOscillator(); const gain = this.ctx.createGain(); if (isCorrect) { // Success chime osc.type = ‘sine’; osc.frequency.setValueAtTime(523.25, this.ctx.currentTime); // C5 osc.frequency.setValueAtTime(659.25, this.ctx.currentTime + 0.08); // E5 osc.frequency.setValueAtTime(783.99, this.ctx.currentTime + 0.16); // G5 gain.gain.setValueAtTime(0.2, this.ctx.currentTime); gain.gain.exponentialRampToValueAtTime(0.01, this.ctx.currentTime + 0.3); osc.connect(gain); gain.connect(this.ctx.destination); osc.start(); osc.stop(this.ctx.currentTime + 0.3); } else { // Error buzz osc.type = ‘square’; osc.frequency.setValueAtTime(160, this.ctx.currentTime); osc.frequency.linearRampToValueAtTime(90, this.ctx.currentTime + 0.25); gain.gain.setValueAtTime(0.25, this.ctx.currentTime); gain.gain.exponentialRampToValueAtTime(0.01, this.ctx.currentTime + 0.25); osc.connect(gain); gain.connect(this.ctx.destination); osc.start(); osc.stop(this.ctx.currentTime + 0.25); } } catch(e) {} } } const sfx = new SoundFX(); // Game Engine Variables let currentQuestionIndex = 0; let score = 0; let userAnswers = []; // Records user choices for post-game review let activeAliens = []; let animationFrameId = null; let starfieldFrameId = null; // DOM Elements const startScreen = document.getElementById(‘start-screen’); const reviewScreen = document.getElementById(‘review-screen’); const startBtn = document.getElementById(‘start-btn’); const restartBtn = document.getElementById(‘restart-btn’); const questionPanel = document.getElementById(‘question-panel’); const questionText = document.getElementById(‘question-text’); const questionTracker = document.getElementById(‘question-tracker’); const shootingArena = document.getElementById(‘shooting-arena’); const scoreDisplay = document.getElementById(‘score-display’); const progressDisplay = document.getElementById(‘progress-display’); const feedbackBanner = document.getElementById(‘feedback-banner’); const reviewList = document.getElementById(‘review-list’); const audioToggleBtn = document.getElementById(‘audio-toggle’); // Starfield Canvas Background const starCanvas = document.getElementById(‘star-canvas’); const starCtx = starCanvas.getContext(‘2d’); let stars = []; function resizeStarCanvas() { const container = document.getElementById(‘game-container’); if (container) { starCanvas.width = container.clientWidth; starCanvas.height = container.clientHeight; initStars(); } } function initStars() { stars = []; const numStars = Math.floor((starCanvas.width * starCanvas.height) / 3000); for (let i = 0; i 1 || star.alpha = 0; i–) { const effect = laserEffects[i]; laserCtx.save(); laserCtx.globalAlpha = effect.life; laserCtx.strokeStyle = effect.color; laserCtx.lineWidth = 4 * effect.life; laserCtx.shadowColor = effect.color; laserCtx.shadowBlur = 15; // Draw beam laserCtx.beginPath(); laserCtx.moveTo(effect.startX, effect.startY); laserCtx.lineTo(effect.targetX, effect.targetY); laserCtx.stroke(); // Draw target blast ring laserCtx.beginPath(); laserCtx.arc(effect.targetX, effect.targetY, (1 – effect.life) * 35 + 10, 0, Math.PI * 2); laserCtx.stroke(); laserCtx.restore(); effect.life -= 0.05; if (effect.life <= 0) { laserEffects.splice(i, 1); } } } class AlienTarget { constructor(text, index, totalOptions) { this.text = text; this.element = document.createElement('div'); this.element.className = 'alien-target'; // Uniform SVG Alien Icon (Exact same style for all answers) this.element.innerHTML = `
${this.text}
`; const arenaWidth = shootingArena.clientWidth || 800; const arenaHeight = shootingArena.clientHeight || 400; // Position calculation for smooth distribution const padding = 30; const targetWidth = 220; const targetHeight = 100; // Segment arena horizontally or floating bounds this.width = targetWidth; this.height = targetHeight; this.x = Math.random() * (arenaWidth – targetWidth – padding * 2) + padding; this.y = Math.random() * (arenaHeight – targetHeight – padding * 2) + padding; // Velocity for floating bounce this.vx = (Math.random() – 0.5) * 1.8; this.vy = (Math.random() – 0.5) * 1.8; if (Math.abs(this.vx) < 0.5) this.vx = 0.8; if (Math.abs(this.vy) handleAlienClick(this, e)); shootingArena.appendChild(this.element); } update(arenaWidth, arenaHeight) { this.x += this.vx; this.y += this.vy; // Bounce off horizontal boundaries if (this.x = arenaWidth – 10) { this.vx *= -1; this.x = Math.max(10, Math.min(this.x, arenaWidth – this.width – 10)); } // Bounce off vertical boundaries if (this.y = arenaHeight – 10) { this.vy *= -1; this.y = Math.max(10, Math.min(this.y, arenaHeight – this.height – 10)); } this.element.style.left = `${this.x}px`; this.element.style.top = `${this.y}px`; } destroy() { if (this.element && this.element.parentNode) { this.element.parentNode.removeChild(this.element); } } } function loadQuestion() { clearAliens(); if (currentQuestionIndex >= QUESTIONS_DATABASE.length) { endGame(); return; } const currentQ = QUESTIONS_DATABASE[currentQuestionIndex]; // Update HUD questionTracker.innerText = `Question ${currentQuestionIndex + 1} of ${QUESTIONS_DATABASE.length}`; questionText.innerText = currentQ.question; progressDisplay.innerText = `${currentQuestionIndex + 1} / ${QUESTIONS_DATABASE.length}`; // Create Aliens for Options const arenaWidth = shootingArena.clientWidth; const arenaHeight = shootingArena.clientHeight; currentQ.options.forEach((opt, idx) => { const alien = new AlienTarget(opt, idx, currentQ.options.length); activeAliens.push(alien); }); } function clearAliens() { activeAliens.forEach(alien => alien.destroy()); activeAliens = []; } function handleAlienClick(alien, event) { sfx.init(); const rect = shootingArena.getBoundingClientRect(); const clickX = event.clientX – rect.left; const clickY = event.clientY – rect.top; // Cannon firing position (Bottom Center of Arena) const cannonX = rect.width / 2; const cannonY = rect.height; const currentQ = QUESTIONS_DATABASE[currentQuestionIndex]; const isCorrect = (alien.text === currentQ.correct); // Play Sound & Beam Animation sfx.playLaser(); drawLaserBeam(cannonX, cannonY, clickX, clickY, isCorrect); sfx.playHit(isCorrect); // Record Answer for Review userAnswers.push({ questionId: currentQ.id, questionText: currentQ.question, userChoice: alien.text, correctChoice: currentQ.correct, explanation: currentQ.explanation, isCorrect: isCorrect }); if (isCorrect) { score += 100; scoreDisplay.innerText = score; showFeedback(true, “CORRECT! CONCEPT MATCHED”); } else { showFeedback(false, `INCORRECT! Correct Answer: ${currentQ.correct}`); } // Lock interaction briefly then advance shootingArena.style.pointerEvents = ‘none’; setTimeout(() => { currentQuestionIndex++; shootingArena.style.pointerEvents = ‘auto’; loadQuestion(); }, 1200); } function showFeedback(isCorrect, message) { feedbackBanner.innerText = message; feedbackBanner.className = `absolute top-4 left-1/2 transform -translate-x-1/2 z-30 px-6 py-3 rounded-xl font-orbitron font-bold text-center text-sm transition-all duration-300 pointer-events-none shadow-2xl ${ isCorrect ? ‘bg-emerald-500/90 text-slate-950 border border-emerald-300 opacity-100 translate-y-2’ : ‘bg-rose-500/90 text-white border border-rose-300 opacity-100 translate-y-2’ }`; setTimeout(() => { feedbackBanner.classList.add(‘opacity-0’); feedbackBanner.classList.remove(‘translate-y-2’); }, 1000); } function gameLoop() { const arenaWidth = shootingArena.clientWidth; const arenaHeight = shootingArena.clientHeight; // Update Alien Positions activeAliens.forEach(alien => alien.update(arenaWidth, arenaHeight)); // Render Laser Beams renderLaserEffects(); animationFrameId = requestAnimationFrame(gameLoop); } function endGame() { cancelAnimationFrame(animationFrameId); questionPanel.classList.add(‘hidden’); clearAliens(); // Calculate Metrics const totalQuestions = QUESTIONS_DATABASE.length; const correctCount = userAnswers.filter(a => a.isCorrect).length; const accuracy = Math.round((correctCount / totalQuestions) * 100); // Calculate IB Grade (1 to 7 scale) let ibGrade = 1; if (accuracy >= 85) ibGrade = 7; else if (accuracy >= 72) ibGrade = 6; else if (accuracy >= 60) ibGrade = 5; else if (accuracy >= 48) ibGrade = 4; else if (accuracy >= 35) ibGrade = 3; else if (accuracy >= 20) ibGrade = 2; document.getElementById(‘final-score’).innerText = score; document.getElementById(‘final-accuracy’).innerText = `${accuracy}% (${correctCount}/${totalQuestions})`; document.getElementById(‘final-grade’).innerText = `Grade ${ibGrade}`; // Generate Detailed Review Breakdown Card List reviewList.innerHTML = ”; userAnswers.forEach((item, index) => { const card = document.createElement(‘div’); card.className = `p-4 md:p-5 rounded-xl border text-sm space-y-2 transition ${ item.isCorrect ? ‘bg-slate-900/90 border-emerald-500/40’ : ‘bg-slate-900/90 border-rose-500/40’ }`; card.innerHTML = `
Q${index + 1}. ${item.questionText} ${item.isCorrect ? ‘CORRECT’ : ‘INCORRECT’}
Your Selected Concept: ${item.userChoice}
Correct IB Concept: ${item.correctChoice}
Teacher Fara’s IB Analysis: ${item.explanation}
`; reviewList.appendChild(card); }); reviewScreen.classList.remove(‘hidden’); } function startMission() { sfx.init(); currentQuestionIndex = 0; score = 0; userAnswers = []; scoreDisplay.innerText = ‘0’; startScreen.classList.add(‘hidden’); reviewScreen.classList.add(‘hidden’); questionPanel.classList.remove(‘hidden’); resizeLaserCanvas(); loadQuestion(); gameLoop(); } startBtn.addEventListener(‘click’, startMission); restartBtn.addEventListener(‘click’, startMission); // Audio Mute Toggle Listener audioToggleBtn.addEventListener(‘click’, () => { sfx.muted = !sfx.muted; audioToggleBtn.classList.toggle(‘opacity-50’, sfx.muted); }); // Responsive Resize Handler window.addEventListener(‘resize’, () => { resizeStarCanvas(); resizeLaserCanvas(); }); // Initialize Starfield Canvas on page load window.onload = function() { resizeStarCanvas(); renderStars(); };

Tinggalkan komen