ctrl-alt-Development
Your hotkey to alternative software development
Dec '06
01

Het is een regenachtige donderdagochtend veel te vroeg in November. Ik haast me naar het GameSyndicate op de Blaak (Rotterdam) met in mijn binnenzak de CD die de dag zal maken of breken - de CD met daarop de software en opgaven van Masters of Java 2006.
Terwijl ik kort overleg met Laurence, de technische man van het GameSyndicate , arriveren ook Robert, Klaasjan en Sebastiaan, de mensen die het organisatorisch allemaal in goede banen moeten leiden. Klaasjan praat de boel aan elkaar, Robert en Sebastiaan delen de opgaven uit en beantwoorden vragen van deelnemers, terwijl ik er voor zorg dat alles technisch werkt en blijft werken.
Maar voorlopig is het pas iets na achtten en ik installeer in koortsachtig tempo de Jetty Webcontainer met daarin de start pagina voor Masters of Java (MoJ). Laurens zorgt er dan voor dat alle PCs deze pagina als startpagina hebben zodat Robert en Sebastiaan dan snel overal Java en de MoJ Client kunnen installeren.
Als dat eenmaal blijkt te werken sluit ik de luidsprekers (voor de Gong) en de beamer aan. Het lijkt nog even mis te gaan als de juiste kabel niet beschikbaar is, maar even later wordt er toch iets gevonden dat past en het scherm met de grote klok is een feit.
Geen moment te vroeg overigens want de eerste deelnemers beginnen binnen te druppelen. Het is een bizar drukke spits door het slechte weer, dus niet iedereen zal op tijd zijn. Gelukkig hebben we daarvoor de oefenopgave die ik start zodat mensen al kunnen inloggen.
Het is ondertussen 09:30 geworden en Klaasjan begroet de aanwezige mensen en nodigt ze uit tot het spelen van de proefronde. De proefronde is de FloodFill case, een opgave eigenlijk bedoeld voor de wedstrijd, maar aangezien Sogeti tijdens hun interne competitie iets soortgelijks had gemaakt heb ik deze maar van de lijst geschrapt en gedegradeerd tot oefenopgave.
Ondertussen komen ook de mensen binnen die verstrikt waren geraakt in de files rond Rotterdam. We delen ze hun inlog code uit en met de laatste instructies zijn ze klaar voor..
De eerste ronde.
In de eerste ronde wordt de 'Head on Collision' opgave gespeeld. Een melig intro verhaal vertelt over een computer spelletjes fabrikant die eindelijk eens een nieuw spelconcept (een kruising tussen Pong en Breakout) wil introduceren maar daarvoor is goede botsing detectie nodig. En raad eens wie dat mag implementeren :-)
Deze opgave is een echte API kennisopgave in combinatie met een vleugje middelbare school wiskunde. De vraag die beantwoord moet worden is of 2 cirkels overlappen of niet. Die vraag kun je beantwoorden door de afstand tussen de twee middelpunten te kennen. Als die groter is dan de som van de stralen dan overlappen de cirkels niet en is er geen botsing. Alleen hoe bereken je de afstand tussen 2 punten ? Dat hoef je niet te weten als je je API goed kent want in de java.awt.geom.Point2D klasse zit de methode distance die dat voor je uitrekent. Slechts een deel van de deelnemers weet dat en dus is de meest voorkomende implementatie iets in de trant van Math.sqrt(dx*dx+dy*dy). Inderdaad pythagoras!
Een zeer behoorlijk aantal teams weet deze opgave succesvol op te lossen en dat is maar goed ook aangezien we makkelijk beginnen.