Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .Jules/palette.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,7 @@
## 2025-03-23 - Game Key Scrolling
**Learning:** Browsers natively scroll the page when users press Space or Arrow keys. When building a web-based game, this creates a frustrating UX where the game viewport jumps around while playing.
**Action:** Always call `e.preventDefault()` on keydown events for typical game controls ("Space", "ArrowUp", etc.) when the focus is on a game container or the body.

## 2025-07-01 - Aria-live and Static Text
**Learning:** Wrapping a container that includes static text (like a "Score: " label) alongside a dynamic value inside an `aria-live` region forces screen readers to redundantly announce the static text every time the dynamic value changes (e.g., "Score 1", "Score 2").
**Action:** Extract the static text into a separate sibling element (like a label) outside of the `aria-live` region, ensuring only the dynamic value itself is announced.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -43,3 +43,4 @@
# Python
__pycache__/
*.pyc
venv/
21 changes: 18 additions & 3 deletions src/views/mario-game.njk
Original file line number Diff line number Diff line change
Expand Up @@ -44,23 +44,38 @@
background: #2ecc71;
}

#score {
#score-container {
position: absolute;
top: 10px;
left: 10px;
color: white;
font-size: 20px;
font-family: Arial;
}

#instructions {
position: absolute;
bottom: 60px;
width: 100%;
text-align: center;
color: white;
font-size: 16px;
font-family: Arial;
pointer-events: none;
text-shadow: 1px 1px 2px rgba(0,0,0,0.5);
}
</style>
</head>

<body>

<div id="game">
<div id="score">Score: 0</div>
<div id="score-container">
<span id="score-label">Score: </span><span id="score" aria-live="polite" aria-atomic="true">0</span>
</div>
<div id="mario"></div>
<div class="ground"></div>
<div id="instructions">Press Space or Up Arrow to jump</div>
</div>

<script>
Expand Down Expand Up @@ -118,7 +133,7 @@
clearInterval(move);
goomba.remove();
score++;
scoreText.innerText = "Score: " + score;
scoreText.innerText = score;
} else {
position -= 6;
goomba.style.left = position + "px";
Expand Down
Loading