# CubeTest

Dit programma is geschreven naar aanleiding van een wedsrijd van Linux Magazine. De wedstrijd is uitgeschreven omdat er niet genoeg educatieve software voor de basisschool is. Het programma CubeTest is dan ook bedoeld voor leerlingen van de basisschool. Met het programma kun je je ruimtelijk inzicht vergroten.

Bijna iedereen kent het soort vragen wel: je ziet een kubus met daarbij nog vier kubussen. De vraag is dan: welke van deze vier kubussen is hetzelfde als de voorbeeldkubus? De kubussen waaruit je kunt kiezen zijn vaak anders gedraaid dan de voorbeeldkubus en om te weten welke kubussen hetzelfde zijn, moet je in je hoofd de kubussen draaien om het antwoord te vinden.

Deze vragen zijn een erg goede manier om je ruimtelijk inzicht te vergroten. En dat is iets dat heel erg nuttig is voor veel technische vakken. Bovendien zijn deze vragen erg leuk. En hoe vaak je ze ook doet, ze worden nooit echt eenvoudig.

## Waarom een computerprogramma?

Dat is een goede vraag! Als je iets goed kunt leren zonder computer, maar bijvoorbeeld met een boek, moet je dat zeker zonder computer doen. Computers kunnen namelijk veel problemen opleveren en de leerling te veel afleiden. Gebruik daarom alleen een computer voor leerdoeleinden als die echt voordelen biedt.

Waarom zou je deze vragen dan met een computer stellen? De reden daarvoor is dat dit programma je helpt met het draaien van de kubussen. Niet iedereen kan zomaar denkbeeldig kubussen in zijn hoofd draaien.

Het programma CubeTest stelt de leerling van deze vragen. Maar in tegenstelling tot kubussen op papier, kun je de kubussen op de computer ronddraaien met je muis in plaats van met je hersenen. En als de leerling antwoordt wordt meteen vertelt wat het juiste antwoord is en draaien de kubussen zodat ze net zo afgebeeld zijn als de voorbeeldkubus en je snel kunt zien wat je fout deed.

Welke van deze kubussen is dezelfde als die hierboven?

## Hoe werkt het?

CubeTest gebruikt de overbekende Qt bibliotheek van Trolltech. Het grote vrije software project KDE is ook hiermee gemaakt de bibliotheek is op veel GNU/Linux systemen beschikbaar. Behalve deze bibliotheek zijn er geen bibiliotheken nodig. Ook voor het weergeven van de 3D objecten is geen OpenGL bibliotheek nodig. De Qt bibliotheek bestaat ook voor Windows en Apple Macintosh machines en het programma kan dus ook voor deze machines gecompileerd worden.

Voor het weergeven van 3D objecten in een Qt programma heb ik een aantal classes geschreven. Een vierkant wordt in een 3D ruimte zonder perspectief altijd als als een trapezoide weergeven. In Qt kun je een vlak shearen voordat je er iets op tekent. De classes die ik heb geschreven maken gebruik van dit principe. Je kunt er redelijk eenvoudig 3D objecten mee maken en deze als widgets gebruiken. Het is bijvoorbeeld niet moeilijk om een kubus te maken met drukknoppen op alle zijdes als vervanging voor saaie 2D knoppen.

De classes die hiervoor nodig zijn, zijn Object en Side. Een Object bestaat uit een willekeurig aantal Sides. Een Object is een gewoon widget voor Qt en kan gemanipuleerd worden met de muis. In de directory fun kun je een lollig programmaatje vinden dat wat meer features van Side en Object demonstreert.

## De toekomst

CubeTest kan op een paar punten nog verbeterd worden. Voor de wedstrijd was een uiterste inzenddatum, maar het programma wordt ook hierna verder ontwikkeld. De onderstaande verbeteringen hebben de hoogste prioriteit.

### Meer vragen

Op dit moment bevat het programma slechts zeven vragen. Het automatisch genereren van vragen van verschillende moeilijkheidsgraden is de belangrijkste eigenschap van het programma die nog mist en die niet zo moeilijk te programmeren is.

### Leertraject

Verschillende moeilijkheidsgraden inbouwen is ook belangrijk. De versie die opgestuurd is naar Linux Magazine stelt gemakkelijke vragen: je kunt alle kubussen draaien en de zijdes die op de kubus zitten zijn al gegeven. Als je al veel vragen hebt beantwoord, zou je de kubussen kunnen vastzetten om het moeilijker te maken. Ook zou je de voorbeeldzijdes weg kunnen laten. Eventueel kun je ook nog meerdere goede antwoorden laten.

### Animatie

Als een vraag is beantwoord draaien de kubussen zodat je beter kunt zien welke kubus de goede is. Dat draaien kan mooier en daarom wil ik nog een algoritme toevoegen dat het draaien van objecten (in dit geval kubussen) mooier maakt.

### De rest van de wereld

Het programma kan worden vertaald naar het engels en andere talen, zodat andere wereldburgers er ook wat aan hebben. Eventueel kan ik het programma omschrijven als een KDE programma en opsturen naar edu.kde.org.