Programming 101 Project – p5.js (Beginner)¶
Opdracht¶
Maak een visueel aantrekkelijke interactieve animatie met JavaScript en p5.js.
Je levert een werkende demo + leesbare code op in GitLab.
Vereisten¶
Techniek¶
- Je gebruikt p5.js (CDN of lokaal). Canvas ≥ 640×480.
- Interactie via muis of toetsenbord (minimaal 2 verschillende acties, bv. bewegen + resetten).
- Animatie loopt in
draw()(geennoLoop()-projecten).
Programmeervaardigheden¶
- Variabelen: ≥ 5 betekenisvolle variabelen (incl. minstens 1
const). - Loops: ≥ 1
forofwhile‑loop die iets tekent of update (geen lege loops). - Functions: ≥ 2 eigen functies met parameters (bv.
spawnParticle(x, y)). - Arrays: ≥ 1 array met ≥ 20 items of dynamisch groeiend met
push(). - Conditionele logica: ≥ 3
if/elsechecks (bv. schermranden, collisions, states).
Structuur & kwaliteit¶
- Bestanden:
index.html,src/sketch.js(extra modules toegestaan), optioneelassets/. - Naamgeving in het Engels, geen magische getallen → gebruik constants.
- Leesbaarheid: korte functies, commentaar beschrijft intentie, geen dode code.
- Voldoet aan de HBO‑ICT Code Conventies (JS).
Versiebeheer & peer‑review¶
- Repo in HvA GitLab, publiek of intern met toegang voor docent.
- ≥ 6 commits verspreid over de sprint, met betekenisvolle messages.
- Peer‑review door medestudent (vink de checklist onderaan af in je README).
Oplevering¶
- README.md met: korte beschrijving, controls, hoe runnen, credits/bronvermelding.
- (Aanbevolen) Live demo via GitLab Pages.
Peer‑review checklist (door één of meerdere medestudenten)¶
- Start de demo: werkt het zonder console‑errors?
- Interactie: doen beide acties wat ze moeten doen?
- Variabelen/loops/functions/arrays/if’s aanwezig en functioneel?
- Code leesbaar: namen duidelijk, geen duplicatie, geen dode code.
- Performance: geen zware berekeningen in
draw()zonder noodzaak. - README compleet; credits voor externe assets staan erbij.
Voorbeelden¶
Kies er één en breid eventueel uit. Alle voorbeelden passen in 1–2 JS‑bestanden. Je mag ook zelf een animatie bedenken.
- Avoider Je bestuurt een cirkel met pijltjestoetsen en ontwijkt vallende blokken. Score = overleefde tijd.
- Collect & Timer Munten (cirkels) spawnen willekeurig; pak er zoveel mogelijk in 30 seconden.
- One‑Button Runner Druk op spatie om te springen over simpele rechthoek‑hindernissen.
- Paddle, Ball and Bricks (Breakout) Houd de bal in het spel met één paddle. Bricks zijn te vernietigen met de bal.
- Particle Trail bij muis Bij muisbeweging verschijnen kleine deeltjes die wegdrijven en langzaam vervagen.
- Simpel Vuurwerk Klik = lanceer een vuurpijl vanuit de muis locatie die uit elkaar spat in 30–60 deeltjes met zwaartekracht.
- Regen & Plassen Dwarrelende regendruppels (array) en golvende cirkels als ze ‘de grond’ raken. Pijltjes passen de windsnelheid aan.
- Randen‑bounce 25–50 bollen bewegen en stuiteren tegen de canvasranden; pijltjes aanpassen snelheid.
- Basic Tile‑grid Teken een 10×10 raster van vierkantjes; muisklik togglet een tegel (aan/uit) en kleur.
Minimale projectstructuur¶
index.html (template)
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>p5.js – beginner project</title>
<script src="https://cdn.jsdelivr.net/npm/p5@1/lib/p5.min.js"></script>
</head>
<body>
<main></main>
<script src="./src/sketch.js"></script>
</body>
</html>
src/sketch.js (skelet)
Tips
- Begin klein → werkend skelet → uitbreiden.
- Gebruik constants voor snelheden/kleuren.
- Profiteer van arrays voor meerdere objecten.
- Test vaak; commit klein en vaak.
- Vraag tijdig peer‑feedback.