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
for
ofwhile
â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
/else
checks (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.