Creating games in Browser (scratchbook)

Game loop

The traditional way of generating a loop inside javascript would be to use window.setInterval with a callback function.  It seems best to use window.requestAnimationFrame(). This method seems to be running in a separate GUI thread for the browser.

Because this is called whenever the browser sees fit you need to keep track of time yourself to ensure you need to update at all

CSS sprites (source)

It is possible to create css sprites like so:

where x and y are css coordinates. For instance (imgZones points to a png file):

this.generateButton(“residential”,imgZones,”0″,”-16px”,this.node);

This is to create sprites on the Dom.

Canvas sprites (source):

Canvas sprites can be used like so :

context.drawImage(this.getSprite(),this.offsetX,this.offsetY,this.width,this.height,x,y,this.width,this.height);

getSprite() returns an image object ( var x = new image(); x.src = “somegraphic.png”);

the offset is the place where you want to start clipping. The image used contains several icons that start at a certain point.

Prevents lots of loops

When creating a game sooner or later you will end up writing multiple layers of graphics ( multiple canvases ). If you have a grid of lets say 640*480 pixels dividided by tiles of 16*16 you have a multi dim array of 40*30. In other words. 1200 * layercount places to check if something needs to be done.

Keep this in mind always. So that when you have a layer that only shows a single type of graphic for all 1200 tiles dont redraw that layer all the time but just once or when it is needed. Computer power is not very limited nowadays but just for the sake of it think about this.

Ecmascript 6 (scratchbook)

This page is mainly used for me to add notes on things I encounter while working with EcmaScript 6 in Chrome (48)

Classes:

When working with EcmaScript 6 you can use classes. Classes are defined like so:

Really straight forward

Inheritance

Inheritance can be done like so

 

This

EcmaScript 6 suffers from the same issue with the This keyword as previous versions. So when you have a class in which you add a eventlistener on a node the this in that eventHandler will be the caller (window) and not the class instance

Easy solution (source)

 

Sportief doel 2016

Iets meer dan een jaar geleden ben ik begonnen met wheelen  (hardlopen voor rolstoelers…). Dit beviel mij zo goed dat ik het steeds meer ben gaan doen en in 2015 zelfs mee heb gedaan me zowel de wings for life world run als ook de Rolstoelmeerdaagse Deurne waar ik respectievelijk 20,5 en 3×30 kilometer heb afgelegd.

Door een kleine blessure die ik vorig jaar heb opgelopen door te fanatiek willen handbiken ben ik dit jaar weer begonnen om langzaam weer in vorm te komen. Naast bovenstaande doelen ga ik dit jaar een extra doel proberen te halen. En dat is minimaal 15 keer de Kluizenaarsweg in Velp op. Waarom? Gewoon omdat het kan en niet omdat het moet. Daarnaast lijkt mij dit een leuk doel voor dit jaar. Of ik dat doel ga halen? Dat zullen we zien de komende tijd. Natuurlijk zal ik naast dit doel ook weer proberen of ik naar de Posbank kan rijden vanaf huis en weer terug ( ongeveer 35km).

Het is gelukt. Volgende stap: De eerste kamer

Eerder schreef ik dat het de dag zou worden dat het verdrag inzake de rechten van personen met een handicap zou worden geratificeerd. Echter het mocht die dag niet uit komen. Nu, 2 dagen later. Is alsnog de dag aangebroken die heel belangrijk is voor veel mensen met een beperking ( handicap, aandoening you name it).

Vandaag, om iets over drie deze middag, heeft de tweede kamer met een meerderheid amendementen aangenomen waarmee er een algemene verplichting komt om gebouwen en bedrijven toegankelijk te maken voor mensen met een handicap. De verplichting moet ingaan per 1 januari 2017.

bron: NOS

De volgende stap is dat de eerste kamer. Maar wat heeft dit nu voor gevolgen? Als je een beetje op internet rond zoekt dan krijg je het gevoel dat heel Nederland vanaf 1 januari 2017 ineens helemaal overhoop ligt. Gelukkig. Dat zal niet het geval zijn. Er zal alleen verwacht worden van de maatschappij (bedrijven, instellingen e.a.) dat deze geleidelijk toegankelijk moeten wordt gemaakt. Nu hoop ik zelf natuurlijk dat op 31 december 2017 alles is afgerond maar dat is natuurlijk ijdele hoop.

Mensen op dat zelfde internet beweren ook dat we vanaf 1 januari 2017 ons in de schulden moeten gaan steken omdat de gehandicapten zo nodig ook mee willen doen. Nou verrassing! Dat willen gehandicapten niet alleen dat MOETEN gehandicapten ook gelukkig. Alleen dan zul je daar wel wat voor moeten doen als maatschappij. Zoals ik eerder al schreef kun je niet een participatie maatschappij optuigen (op papier) en vervolgens verwachten dat alles magischerwijs veranderd.

Enfin, er zijn nog een aantal argumenten waar ik op wil reageren die op internet rond dwarrelen die mensen gebruiken om vooral dingen NIET aan te gaan passen

Winkels waar nu geen gehandicapte komt moeten zich nu in de schulden gaan steken

Het is nadrukkelijk niet de bedoeling dat een bedrijf diep in de schulden moet duiken om het een en ander gerealiseerd te krijgen. Simpelweg een plankje voor de drempel kan al genoeg zijn of misschien de gangpaden iets breder. De reden waarom dat er nu geen gehandicapten komen heeft waarschijnlijk alles te maken met de ontoegankelijkheid.

Weet je wat dat allemaal kost? En dat allemaal van mijn belastingcenten?

Dat is natuurlijk een kul argument eerste klas. Immers worden er altijd wel zaken van belastingcenten betaald waar een deel van de bevolking niet direct iets aan heeft. Kinderbijslag is zo’n leuke. Mensen zonder kinderen hebben er direct geen .. aan maar zijn toch maar wat blij dat er mensen zijn die de vergrijzing van ons land ook maar een beetje tegen gaan.

Gehandicapten moeten leren accepteren dat niet alles kan

Helaas zijn er gehandicapten die vinden dat alles maar moet kunnen. Gelukkig zijn er genoeg gehandicapten die een iets realistisch beeld van de wereld hebben en snappen dat bepaalde dingen echt niet kunnen.

Heel bot stellen dat gehandicapten maar moeten accepteren dat niet alles kan geeft alleen maar aan in welke wereld sommigen leven. We willen wel dat gehandicapten deel mogen uitmaken van onze maatschappij maar men wil er het liefste niets mee te maken hebben. Gehandicapten worden geconfronteerd met dat bepaalde zaken niet kunnen en is het alleen maar vervelender om te zien dat zaken die wél makkelijk geregeld kunnen worden. Simpelweg niet gedaan worden voordat er over gezeurd moet wordt.

Als laatste wil ik nog even mijn dank betuigen aan Otwin van Dijk, Wij staan op en andere mensen en organisaties die zich ingezet hebben om dit mogelijk te maken. Op naar de volgende fase!

Vandaag is de dag.

Vandaag is dan eindelijk de dag aangebroken dat het kabinet gaat stemmen over het VN verdrag inzake de rechten van personen met een handicap. Het kan voor heel veel mensen een vrolijke dag worden.

Dat het een maatschappelijk probleem is heeft iedereen dit weekend kunnen zien op social media. Twitter en Facebook stonden vol van de #jekomternietin berichten. Met deze hashtag werden situaties aangekaart die niet door de beugel kunnen.

Hopelijk komt daar vanavond verandering in en wordt Nederland voor meer dan 1 miljoen mensen met een handicap een iets mooiere plek.

Brief aan de leden van de vaste comissie voor VWS

Laatst heb ik een blog geschreven als antwoord op een stelling van de heer Frank G Bosman over het ratificeren van het VN verdrag voor de rechten van personen met een handicap. Veel goede reacties op gehad. Nu de stap gezet om deze tekst in iets aangepaste vorm ook te sturen naar 2e kamer. Bij deze de tekst:
Aan de leden van de Vaste commissie voor Volksgezondheid, Welzijn en Sport,
er is in de maatschappij de laatste paar weken wat rumoer ontstaan. Niet over AZC’s, niet over vluchtelingen en ook niet over Nederlanders die in Syrië  “rambo” gaan spelen. Voordat ik verder ga zal ik mij eerst even voorstellen. Mijn naam is Jeroen Somhorst en ben Software Developer van beroep in het zuiden van het land. Dit alles met een handicap. De participatie samenleving in de praktijk zullen we maar zeggen.
Een deel van de maatschappij is in rep en roer door een voorstel van de heer Otwin van Dijk waarmee hij wil bereiken dat de maatschappij toegankelijk(er) wordt voor gehandicapten. Nederland heeft het VN verdrag inzake de rechten van personen met een handicap in het verleden getekend maar niet zoals veel andere landen geraticifeerd. De discussies zijn op een gegeven moment opgepikt door de media en verschillende programma’s hebben er dan ook aandacht aan besteed. So far so good. Het is echter de houding van bepaalde Tweede Kamer fracties die mij, als rolstoelgebonden persoon, dwars zit. De regering heeft er voor gekozen om een zgn. participatie samenleving te willen opzetten. Dat gaat zoals het elke liberaal zint, vanuit het individu zelf. Immers gehandicapt zijn is in eerste instantie het probleem van de persoon zelf. Wat er nu echter gebeurt is dat men aan de ene kant een participatiesamenleving wil maar aan de andere kant daar niet naar handelt. Een samenleving veranderen gaat natuurlijk niet van zelf daarvoor moeten de neuzen allemaal dezelfde kant op staan. Nu is dat bij 16 miljoen mensen een beetje moeilijk. Bij een participatiesamenleving hoort niet alleen dat mensen met een beperking deelnemen aan het reguliere arbeidsproces maar dat begint veel eerder. Dat begint al vanaf de geboorte. Kinderen met een beperking moeten niet worden opgevoed met het idee dat ze anders / speciaal zijn. Kinderen met een beperking zouden in de pubertijd net als andere scholieren eens lekker moeten kunnen gaan stappen of de opleiding kunnen volgen die ze willen (en die natuurlijk ook gezien de handicap mogelijk is). Er zou geen beperking mogen zijn wat betreft toegankelijkheid tot de opleiding. Niet gehandicapte kinderen zouden de kinderen met een handicap niet als anders moeten hoeven aan zien.
De overheid heeft hier dan ook als taak deze omslag te faciliteren en het niet simpelweg aan de maatschappij over te laten. Als er in de maatschappij geen besef is waar het allemaal om draait en wat er allemaal anders moet, gebeurt er niets. Veel mensen hebben geen vrienden of kennissen die een handicap hebben en vinden dus ook al snel invalideparkeerplaatsen of andere voor de hand liggende aanpassingen genoeg. De afgelopen jaren hebben we gezien dat er steeds meer verbeterd. Zo zijn de meeste buslijnen in Nederland voorzien van de nodige aanpassingen (oprijplaten, lage stop knoppen etc.) en is de instaphulp van de NS sterk verbeterd. Helaas zijn de treinen in Nederland niet zelfstandig toegankelijk voor mensen met rollators of rolstoelen. Zelfs voor mensen met kinderwagens is het een uitdaging. De gehandicapte is nog steeds aangewezen op een systeem van het aanvragen van hulp. Een voorbeeld van mijzelf is een treinreis waarbij ik uitstaphulp had geregeld op station B maar ik kom, door een fout van de machinist, op station C terecht. Er waren gelukkig mensen die mij de trein uit hielpen maar het zou toch fijn zijn als ik zelf ook weer de trein in had gekund en niet een half uur had moet staan wachten zodat alle hulptroepen waren gemobiliseerd! Dit sluit niet aan bij de wens van een participatie samenleving. toch?
Om terug te komen op de puber die samen met vrienden iets wil gaan drinken. Als je als overheid van mening bent dat mensen met een handicap mee doen in de maatschappij dan betekend dit dat de lokale overheid hulp moet kunnen bieden aan ondernemers om de onderneming ook toegankelijk te maken. Vrienden willen je vast wel het café in tillen maar wat nu als je alleen maar vrienden in een rolstoel hebt? Een probleem bij horeca is toch vaak dat deze zijn gesitueerd in de wat oudere gebouwen dat betekend dat er daar niet veel aan veranderd omdat dat nu eenmaal niet hoeft of zelfs niet mag. En dat zie ik dan ook in het dagelijks leven. Zelfs in een stad als Arnhem zie je in het weekend niet heel veel gehandicapten in het straatbeeld. Het kip en het ei probleem in de praktijk. Aanpassingen hoeven overigens niet heel moeilijk te zijn. Een voor de hand liggend voorbeeld zijn invalide toiletten. Waarom zijn invalidetoiletten altijd apart van de andere type toiletten? Is gehandicapt zijn een ander geslacht?
Om een voorbeeld te geven hoe het ook anders kan: Een aantal jaar geleden ben ik voor mijn werk naar de Verenigde Staten afgereisd. In de hotels waar ik kwam waren alle invalide toiletten gesitueert in danwel het dames danwel het heren toilet. Geen extra ruimte voor een invalide toilet. We hebben gezien dat in de afgelopen 20 ~ 30 jaar erg veel is verbeterd maar er is nog een hoop werk te doen en het is nu tijd om daar als overheid iets aan te doen door aan de ene kant de wettelijke kaders te scheppen om de maatschappij daadwerkelijk toegankelijk te maken maar aan de andere kant daar ook de middelen voor vrij te maken om dat mogelijk te maken.
Door het stellen van wettelijke kaders door het ratificeren van het VN verdrag zijn niet alleen de gehandicapten in Nederland geholpen maar ook de ouderen die vroeg of laat ook tegen dit soort problemen aanlopen.
Daarom zou ik u willen vragen of u eens goed wilt nadenken over wat er in de tussentijd is bereikt en wat er allemaal te verbeteren valt en voor het amandement wilt stemmen van de heer Otwin van Dijk. Daar maakt u mij blijk mee, maar ook vooral de maatschappij een stuk toegankelijker en ook gezelliger van.
met vriendelijke groet,

Geachte heer Bosman. Een open brief aan cultuurtheoloog Frank G. Bosman

Geachte heer Bosman,

zoals bijna elke dag luister ik op de terugweg van mijn werk naar het programma “Dit is de dag”. U bent daar zo nu en dan te gast om een stelling voor te leggen waar dan even over wordt gediscussieerd.

Voordat ik met mijn betoog begin zal ik mij eerst even voorstellen. Mijn naam is Jeroen Somhorst. Van beroep ben ik Software Developer bij een bedrijf in Den Bosch en kom ik bij diverse bedrijven in het land over de vloer. En dit allemaal met een handicap die zorgt dat ik rolstoelgebonden ben. Over het algemeen ben ik het eens met uw stellingen echter vandaag schoot uw stelling mij in het verkeerde keelgat.

Uw stelling is als volgt:
‘Knuffel gehandicapte niet dood met aparte wetten’

Wat u daarmee bedoelt is, zoals ik het interpreteer, dat het ratificeren van het VN verdrag voor de rechten van de gehandicapte mens ook averechts kan werken. Er zit een kern van waarheid in. Dat als er te strikte wetten worden opgezet deze de zelfredzaamheid van de ‘gehandicapte medemens’ kunnen belemmeren. Om uw standpunt kracht bij te zetten neemt u als voorbeeld uw vader. Uw vader heeft op jonge leeftijd een been amputatie moeten ondergaan waardoor hij de rest van zijn leven veel dingen ‘anders’ moest doen dan anderen. Zijn vader, uw opa, heeft hem daar altijd op gewezen. Een harde opvoeding werd geconcludeerd.

Nu neemt u dit voorbeeld en gebruikt dit om een beeld te schetsen alsof gehandicapten door dit verdrag verwent zouden raken. Ik kan u vertellen dat dit niets met dit verdrag te maken hoeft te hebben. Dit heeft in de eerste plaats te maken met de opvoeding van de ouders. Als ouders alleen maar zicht hebben voor de problemen van het kind en het wijs maken dat het vooral anders is dan kweek je in feite ‘verwendicapten’, zoals dat in het jargon genoemd wordt. Oftewel gehandicapten die het handje ophouden en niets zelf doen.

Een andere factor die bepalend is, is het onderwijs. Toen ik nog op het voortgezet onderwijs zat (zo’n 18 jaar terug ) was er geen toekomstperspectief vanuit de school. Er werd niet altijd alles uitgehaald wat er in zat want je had een handicap. Althans dat is wat mij bij gebleven is. Gelukkig door mijn opvoeding is mij geleerd dat gehandicapt zijn vooral mijn eigen probleem is en dat ik er zelf alles van moet maken. Dat is niet een harde opvoeding dat is een opvoeding zoals het zou moeten. Immers, iedereen dient iets van zijn eigen leven te maken. Of je nu doof, blind, mank of bruin bent. Dit brengt mij op het volgende.

Dit kabinet is een aantal jaren geleden de weg ingeslagen van de zgn. participatie maatschappij. Daarmee wordt bedoeld dat men het liefste wil dat mensen met een ‘arbeidsbeperking’, deel moeten nemen aan de maatschappij. Dat begint echter niet bij het arbeidsproces maar veel eerder. Dat begint bij het naar de kinderdagopvang gaan, het naar school gaan en daar gewoon mee kunnen doen met de rest.

Daar hoort bij dat men in de pubertijd net als andere scholieren eens lekker kan gaan stappen. Daar hoort bij dat men wat dieper in het glaasje kan kijken en in een rolstoel tegen een lantaarnpaal in slaap valt.

De overheid heeft als taak als zij een participatie maatschappij wil dit ook te faciliteren en het niet simpelweg aan de maatschappij over te laten met de insteek van ‘zoek ‘t maar uit’. Als we kijken naar de afgelopen jaren dan zien we dat er steeds meer verbeterd maar dat het simpelweg niet snel genoeg gaat. Zo zijn de meeste buslijnen in Nederland voorzien van de nodige aanpassingen (oprijplaten, lage stop knoppen etc.) maar zijn de treinen in Nederland ( En nee, Nederland is niet alleen maar de randstad) nog steeds niet toegankelijk. De gehandicapte is nog steeds aangewezen op een systeem van het aanvragen van hulp en hopen dat men er maar uitgehaald wordt omdat men dit niet zelf kan. Een voorbeeld van mijzelf is een treinreis waarbij ik uitstaphulp had geregeld op station B maar ik kom, door een fout van de machinist, op station C terecht. Er waren gelukkig mensen die mij de trein uit hielpen maar het zou toch fijn zijn als ik zelf ook weer de trein in had gekund en niet een half uur had moet staan wachten zodat alle hulptroepen waren gemobiliseerd! Dit sluit niet aan bij de wens van een participatie samenleving.

Een ander punt is de toegankelijkheid van gebouwen zoals horeca. Als je wilt als overheid dat mensen met een handicap mee doen in de maatschappij dan betekend dat dat de lokale overheid hulp moet kunnen bieden aan ondernemers om de onderneming ook toegankelijk te maken. Vrienden willen je vast wel het café in tillen maar wat nu als je alleen maar vrienden in een rolstoel hebt? Moet ik mij dan maar aanpassen en in een café komen waar het alleen maar gaat over de poepluiers en hoe slecht de uitkeringen zijn in dit land? Is het echt nodig om twee groepen te creëren terwijl we allemaal één maatschappij zouden moeten zijn?

Zoals gezegd kan de lokale overheid genoeg doen om ondernemers bewust te maken van dit probleem. We hebben namelijk in de afgelopen 20~30 jaar gezien dat de maatschappij zelf er niet genoeg aan doet zelfs semi overheid niet.  Want zoals u zelf zei: “Onze sympathie ligt onmiddelijk bij de persoon die het stoepje niet op komt. Er moet iets aan trappen of wc’s gebeuren en willen we het meteen zelf regelen.” Nou meneer Bosman. Als dat ook daadwerkelijk gebeurde dan hadden we dit hele verdrag niet nodig gehad.

Als laatste punt wil ik nog even een vraag stellen. Waarom hebben we in Nederland eigenlijk speciale invalide toiletten? Waarom is dat niet simpelweg geïntegreerd in het heren of dames toilet zoals in andere landen om ons heen gemeengoed is?  Hoeven we er ook niet extra ruimte voor te creëren en hebben we toch aan onze plicht voldaan..

met vriendelijke groet,

Jeroen Somhorst

AngularJS : 1 Month later

Exactly one month go I posted a little message stating that I’m going to venture into the world of angularJS. This blogpost is for myself as a post-it note to keep the most important parts easy to find:

  1. the framework is awsome
  2. the framework is awsome
  3. the framework is awsome
  4. the framework is awsome

$scope

keeping track of scope variables can be a pain in the ###. Use $scope.$watch(‘<variable name>) to get notified about changes. first call is always some sort of initialization call!

use inline scopes in directives, this way the directive can be mean and clean.

$http

use $http for low level ajax calls. $http uses promises. Promises are a observer/observable like tech to call funtions when a specified asynchronous task completes. When multiple ‘objects’ use the same service add a addListener method like so

This way you can have multiple ‘listeners’ and don’t worry in your service on what is happening and break things by changing parsing the result.

Controllers

Don’t use anonymous functions!! Use a function defined at /App/controllers.js It makes your life easier

When defining a controller be aware of the DI properties. Always check the order of things 😉

Divide and conquer

Use the following app structure*

– /App

/App/libs : Contains all the javascript libraries needed to get it working such as moment.js or something similar

/App/pojo: Contains your ‘classes’ that are to be used. For instance in my runkeeper project I have a pojo for a workout, for a list of workouts and for heartrate data.

/App/app.js: Main module for the project.

/App/controller.js: Controller javascript. Contains all the controllers used throughout the application. no mather where they are used, in directives or just as a basic view controller.

/App/services.js: service object definitions module

/App/directives.js: main service definition module. Uses controller.js and service.js to get the work done. *be aware of this in <html><header>

/Templates: contains the main view templates

/Templates/partials: contains sub templates such as used by directives. 

* thinking about moving them into the /App directory

AngularJS a new world opens

In my spare time I’m currently looking into AngularJS. Before I started working on it I was skeptical. The main reason for it is that it’s  JavaScript framework and I’m not particularly fan of this language at all. Error handling is  mess and the fact that it’s weakly typed isn’t great either.

So why start using AngularJS? I think that the main reason can be described as ‘easy of use’. Because web apps are the way to go I have  to find a tool that can help me write those apps with the least effort. Together with the templating engine and the fact that there is already a lot of stuff in the framework I don’t need to write a whole bunch of code myself just to get a input field to change its value when someone presses a button. Another thing I like about angular is the structure.

Currently, working on my first real app, I have a main module ( the app ) which has dependencies with other modules. The main app is really straight forward and contains only the global things like a user object and so fort. The other modules are in fact directives that contain isolated business logic.

And next to that I have a service module. This module is only used for storing factory definitions. One for connecting to the login REST endpoint, another one for connecting to the data REST endpoint etc. etc. I’m planning on adding some blog posts regarding angular in the future. Don’t expect these to be tutorial like posts but they will be more like post it notes so I wont forget the things I already did in the past 😉

Android Development: Simple collision detection

For my App I need to know when a user drags a specified element on top of another element. For instance when they drag one of their attack cards to the deck of the oponnent. On top of that I also need to know if the current location will result in an attack movement or just in a drag in open space. In both situations the game should do something else. So how can we detect if the current location is resulting in an attack? Simple by using the Rect.intersects method like so

this class implements a few utility methods. They bassicaly to the same thing. They convert the given parameters into two Rect instances and call the intersect method of the first Rect.  With this little tip you can easily integrate some basic collision detection. with this knowledge we can easily find out if the current user is attacking the enemy and which card is being attacked with the following code:

In this example we loop over the enemyfrontline cards and for every card we check if it intersects. If that is the case we break out of the loop and use the found card to do the stuff we want to do with it ( in my case find out which card has ‘won’ and respond accordingly.