1.1Leeswijzer¶
Dit is een opdracht waar je één of twee maanden aan gaat werken. De opdracht bestaat uit basisstappen en uitbreidingen. Met de basisstappen maak je een eenvoudig spel waarin je één level kunt spelen. Daarna ga je verder met de uitbreidingen. Je kunt zelf kiezen welke uitbreidingen je gaat maken.

Voorbeeld van een spelletje.
Elke basisstap bestaat uit een opdracht, toelichting en tips. In de opdracht staat wat je code moet doen. Lees dit aandachtig door, voordat je begint te coderen. De toelichting geeft aan hoe je de opdracht kunt maken. Een ervaren programmeur kan vaak zonder toelichting de opdracht maken. De tips kun je bekijken als je er niet uitkomt. Bekijk de tips één voor één van boven naar beneden en probeer na elke tip of je verder met de opdracht komt. Bij sommige stappen zijn de laatste tips bedoeld om je meer aan het denken te zetten over wat je gemaakt hebt.
Bij de uitbreidingen heb je meer vrijheid. Ze zijn minder ver uitgewerkt. Daardoor zijn die moeilijker dan de basisstappen. Je leert zelfstandig kleine of grotere uitbreidingen toe te voegen aan bestaande code. Hoe beter je daarin wordt, hoe meer functies uit je eigen fantasie jij kunt maken!
1.2Geschiedenis¶
Arcadekasten¶

Plaatje van https://
In de jaren 80 van de vorige eeuw waren Arcadekasten erg populair. Arcadekasten vond je in uitgaansgelegenheden, soms stonde ze in grote aantallen bij elkaar in een arcadehal. Elke kast had zijn eigen spelletje. Als je geld in de kast stopte, dan kon je een spelletje spelen. Toen er steeds betere spelcomputers bij mensen thuis kwamen, verloor de arcadekast zijn populariteit.
Arkanoid¶

Schermafdruk van https://
Een voorbeeld van een spel dat je kon spelen is Arkanoid. Arkanoid is een game waarbij je blokjes moet wegstoten met een bal. De bal kaatst tegen een plank. De speler beweegt de plank. Als de bal langs de plank schiet, dan ben je af.
1.3Voorkennis en naslagmateriaal¶
Voor deze opdracht heb je basiskennis nodig van programmeren in Python. Je hebt basiskennis als je geoefend hebt met variabelen, selectie (if-jes), iteratie (for-loop), functies en lijsten.

Deze opdracht maakt gebruik van Pygame. Pygame is een package voor Python waarmee je gemakkelijker grafische spelletjes kunt programmeren. Je hoeft niet eerder met Pygame geoefend te hebben om deze opdracht te kunnen maken.
1.4Tools¶
Voordat je kunt programmeren moet je bekend zijn met het gereedschap (de tools) die je voor deze opdracht gaat gebruiken.
Je kunt deze opdracht maken in GitHub Codespaces. Dit is een professionele online omgeving die door veel programmeurs gebruikt wordt. GitHub CodeSpaces werkt ook op Chromebooks. Een account op GitHub is gratis en daarmee kun je 60 uur per maand gebruik maken van Codespaces.
Je docent geeft misschien aan dat je een andere programmeeromgeving moet gebruiken voor deze opdracht. Er zijn veel andere programmeeromgevingen die geschikt zijn om deze opdracht op te maken. Bijvoorbeeld op een computer waar Python en het Pygame package lokaal zijn geïnstalleerd. Op Replit kan deze opdracht niet gemaakt worden. De gratis versie van Replit biedt niet voldoende CPU-capaciteit om een aktiespel dat in Python en Pygame gemaakt is soepel te spelen.
1.5Werkwijze¶
- Je maakt deze opdracht in een team van twee personen. Je docent geeft aan hoe de teams gemaakt worden.
- Je gebruikt de startcode die je voor deze opdracht krijgt van je docent.
- Je volgt het stappenplan in de opdracht. Elke stap of uitbreiding sla je op in GitHub; je maakt per stap minimaal één commit. Uit je commit-message blijkt bij welke stap of uitbreiding de commit hoort.
- Jullie verdelen het werk eerlijk over de teamleden. Elk teamlid codeert evenveel. Als je samen achter één computer zit, dan wissel je elke stap wie er typt. Elke leerling typt op zijn eigen GitHub-account.
- Problemen binnen het team meld je zo snel mogelijk bij je docent.
1.6Inleveren¶
- De deadline staat in de lesplanner.
- De versie van de main branche van je opdracht die op het moment van de deadline in GitHub staat wordt gebruikt voor de beoordeling. Zorg dat je ruim op tijd klaar bent.
- Uit de commit-historie van de main branche in GitHub blijkt wie wanneer wat gedaan heeft.
- Je kunt vragen stellen tot de laatste les voor de deadline.
1.7Beoordeling¶
Je krijgt één cijfer per team, maar je docent kan hiervan afwijken als teamleden geen gelijkwaardige bijdrage hebben geleverd.
Er gelden minimale eisen waaraan je opdracht moet voldoen:
- Je hebt je gehouden aan de voorgeschreven werkwijze.
- Je opdracht is fatsoenlijk, dus vrij van beledigende of illegale elementen.
- Je hebt de opdracht helemaal zelf gemaakt, als richtlijn kun je aanhouden dat je maximaal vijf regels code overneemt van anderen of van een tutorial. Opdrachten die niet voldoen aan de minimale eisen krijgen het cijfer 1,0.
Een netjes uitgevoerde opdracht met alle basisstappen zal in de meeste gevallen beoordeeld worden met een voldoende. Om een hoog cijfer te halen moet je creatieve en complexe uitbreidingen toevoegen.
Een concept beoordelingsmodel staat hieronder. Je docent kan tijdens het nakijken aanpassingen doen aan het beoordelingsmodel of de berekening van het cijfer.
Onderdeel | Punten havo | Punten vwo | Toelichting |
---|---|---|---|
Code | |||
Stijl | 5 | 5 | - Netjes uitgelijnd, - helder commentaar, - logische naamgeving van variabelen, - logische volgorde van opdrachten, - consistente code. |
Basiscode | 20 | 15 | - If-opdrachten goed toegepast, vergelijkingsoperatoren </>/== gebruikt, logische operatoren and/or gebruikt, - lijsten toegepast, - for (of while)-opdrachten toegepast, - code kan omgaan met verschillende lengtes van lijsten (len goed gebruikt), - code wijzigt aantal elementen in lijst tijdens het runnen. |
Uitbreidingen (maantjes) | 15 | 20 | - Uitbreidingen gemaakt met technieken die in de opdracht behandeld zijn, zoals meer loops, meer lijsten, meer functies (1 maantje) - uitbreidingen gemaakt met technieken die niet in de opdracht behandeld zijn en je je zelfstandig hebt eigen gemaakt, zoals dicts, geneste loop, lijst in lijst (2 maantjes). |
Functionaliteit | |||
Speelbaarheid | 5 | 5 | - geen glitches - soepele bediening |
Basisfunctionaliteit | 20 | 15 | - Bal stuitert tegen randen, - plank beweegt en stopt aan de rand van het scherm en laat bal stuiteren, - 1 blok waartegen bal stuitert, - meer dan 10 blokken waartegen bal stuitert, - blokken verdwijnen, je kunt af gaan en winnen. |
Uitbreidingen (zonnetjes) | 15 | 20 | Uitbreidingen in het spel die zorgen voor diversiteit en hoe beter je wordt hoe leuker of moeilijker het wordt, - voorbeelden van kleine uitbreidingen (1 zonnetje) zijn steeds snellere bal, verschillende kleuren blokken, - voorbeelden van grotere uitbreidingen (2 zonnetjes) zijn meer levels, ingewikkelde powerups zoals blokken wegschieten, veel ballen. |
Proces | |||
Planning | 5 | 5 | Uit de commits en/of tijdens de les blijkt dat het stappenplan gevolgd is en dat er regelmatig is gewerkt. |
Samenwerking | 5 | 5 | Uit de commits en/of tijdens de les blijkt dat het werk gelijk verdeeld is onder teamleden. Als één teamlid beduidend minder doet, dan is dat een gezamenlijke verantwoordelijkheid van het team om dat op te lossen of te melden bij de docent. Maak vanaf het begin afspraken en spreek elkaar daarop aan. Als je er niet uitkomt, dan meld je dat zo snel mogelijk bij je docent. |
Cijfer = 1 + 9 * behaalde punten / maximale punten