Blogs door "M.Beers" 14

ICTscripters maakt gebruik van cookies. Door het gebruiken en browsen naar onze site gaat je automatisch akkoord met het gebruik van cookies. Klik hier voor meer informatie

  • Veel programmeurs hebben wel eens van unit testing gehoord alleen haten het om tests te schrijven. Waarom haten programmeurs het schrijven van unit tests? Waarom haten ze het om eerst tests te schrijven alvorens ze beginnen met programmeren? In dit blog wil ik jullie overtuigen / een discussie aanboren waarom je juist wel moet testen.

    De meeste softwareontwikkelaars hebben nooit tests geschreven of het überhaupt geprobeerd om tests te schijven. Ze komen vaak met de excuses: "We hebben geen tijd om unit tests te schrijven" of "Unit testing maken je code niet beter / bullet-proof". Dit zijn excuses / argumenten die ontstaan uit een angst of een verandering die in jouw filosofie niet klopt.

    Toch wil ik hier enkele voordelen opschrijven die ik ervaar, voor iedereen die de sprong durft te maken om eens te kijken naar unit tests.

    1. Unit tests bewijzen dat jouw code echt werkt. - Dit betekent dat je minder bugs krijgt. Wat niet betekend dat unit tests jouw eigen systeem kunnen vervangen… [Lees meer]
  • OnePlus One is een Android-telefoon met een 5,5 inch scherm die zich op vrijwel alle vlakken kan meten met topmodellen van bedrijven als Samsung, HTC en Apple. Met een begin prijs van 299 euro is deze telefoon echter spot goedkoop.

    Wanneer de telefoon in de brievenbus beland en je het bruine pakketje opent zie je in een opslag dat er bij OnePlus veel aandacht is besteed aan de verpakking, hierdoor krijg je gelijk het gevoel dat je echt een product koopt. Een wit omhulsel met een uitschuifbare doos geheel in de huisstijl van OnePlus. Hierin zit de telefoon, een USB-kabel en een rubberen sleutelhanger met hierin een tool om de simkaart houder te openen. De stekker om de telefoon via het stopcontact op te laden wordt los meegeleverd. Om een goeie indruk te krijgen adviseer ik om een van de vele unboxing filmpjes te bekijken via Youtube, het gaat tenslotte om te telefoon ;).

    Dankzij het scherm van 5,5 inch is de OnePlus One een erg grote telefoon. Ondanks de grootte ligt de telefoon… [Lees meer]
  • We hebben allemaal onze slechte gewoontes. In dit artikel gaan we een lijst af met slechte gewoontes van programmeurs die wij vervolgens bestuderen, evalueren en corrigeren.

    Wie denk je dat je bent?

    Elke keer als ik een project open dat niet van mij is blijf ik me afvragen in wat voor "Temple of Doom" ik nou weer terecht kom. Code vol valkuilen, geheime namen en wanneer ik 1 regel code aanpas verandert dit de hele applicatie.


    Wanneer dit niet het geval is alles prima. Er zullen slechts enkele verschillen zijn in de denkwijze van elk individue een gevalletje "Hoe ik het gedaan zou hebben...". Een hele opluchting en je komt makkelijk een project door.

    Wanneer je wel een "Temple of Doom" hebt gecreëerd zal je al snel de reactie krijgen "Wie is deze gozer?". Terecht, want welke programmeur zou gebruik willen maken van jouw code als het een grote puinhoop is...

    Je eerste instinct bij dit probleem is de veronderstelling dat het project gemaakt is door een… [Lees meer]
  • Dit is een vervolg op: [TUT] Game development 09 - Entities, Mobs en Players framework

    Hallo ICTScripters,

    Inmiddels hebben we de 3 entity frameworks af en kunnen we deze gaan koppelen aan de game. Dat is wat wij gaan behandelen in deze tutorial en we gaan er voor zorgen dat een speler zich kan bewegen binnen het level.

    Allereerst gaan we beginnen met de movement van de Mob. Hiervoor zijn er 2 checks nodig namelijk welke directie gaat de mob op? en loopt de mob tegen een solide tile aan (bijv een muur)? Voor dat laatste hebben wij een handige methoden gereserveerd namelijk de collision() methoden. Ga daarom naar de Mob klasse en vervang de volgende code binnen de move() methoden:

    Source Code

    1. public void move(int xa, int ya) {
    2. if (xa > 0) {
    3. this.dir = 1;
    4. }
    5. if (xa < 0) {
    6. this.dir = 3;
    7. }
    [Lees meer]
  • Dit is een vervolg op: [TUT] Game development 08 - Het renderen van het level

    Hallo ICTScripters,

    Allereerst excuses dat deze tutorial iets langer heeft geduurd dan gedacht, ik ben momenteel erg druk met het afronden van mijn schooljaar. Hierdoor heb ik naast mijn game development project op ICTScripters voor school nog 9 projecten heb die afgerond moeten worden. Toch zal ik proberen zo snel mogelijk weer een aantal tutorials plaatsen alleen heb begrip hiervoor wanneer dit langer duurt! (in dit geval al 2 weken)

    Vandaag gaan we eerst beginnen met het repareren van de zwarte randen. Om dit te doen gaan we een kleine aanpassing in de Screen en Level klasse maken verander daarom de volgende methoden:

    Source Code

    1. public void renderTile(int xp, int yp, Tile tile) {
    2. xp -= xOffset;
    3. yp -= yOffset;
    4. for (int y = 0; y < tile.sprite.SIZE; y++) {
    [Lees meer]
  • Dit is een vervolg op: [TUT] Game development 07 - De empty en grass tile

    Hallo ICTScripters,

    We zijn dan eindelijk op het punt gekomen waar ik denk de trouwen volgers wel op hebben gewacht. In deze tutorial gaan we een random level maken en genereren op het scherm! Maar voor we beginnen gaan we snel inventariseren wat we hebben gemaakt in de vorige 7 tutorials:
    1. Een basis omgeving waarin de client wordt gestart, geupdate en gerenderd.
    2. Een klasse om het scherm te tonen.
    3. Het laden van Spritesheets en Sprites.
    4. Het laden van toetsenbord events en het gebruiken hiervan.
    5. Een primaire level en tile klasse met een grass en lege tile.
    Best veel al dus, daarom is het nu tijd om al deze componenten te gaan gebruiken en daadwerkelijk een level te genereren en renderen. Maak daarom in de package level een nieuwe klasse aan met RandomLevel en vul deze met de volgende code:

    Source Code

    1. public class RandomLevel extends Level {
    [Lees meer]
  • Dit is een vervolg op: [TUT] Game development 06 - Primaire Level en Tile objecten

    Hallo ICTScripters,

    Het is alweer tijd voor de 7e tutorial van de game development serie. In deze tutorial gaan we de empty tile en grass tile maken en de methoden om deze op het scherm te tonen.

    Om een lege tile te maken moeten we allereerst onze Sprite klasse aanpassen. Wij willen namelijk een sprite kunnen maken met een vaste kleur die gaat dienen voor een lege tile. Open daarom als eerst de Sprite klasse en voeg de volgende code toe, dit is een nieuwe constructor met een simpele methoden die elke pixel voorziet van de opgegeven kleur:

    Source Code

    1. public Sprite(int size, int color) {
    2. this.SIZE = size;
    3. this.pixels = new int[SIZE * SIZE];
    4. setColor(color);
    5. }
    6. private void setColor(int color) {
    [Lees meer]
  • Dit is een vervolg op: [TUT] Game development 05 - Keyboard events

    Hallo ICTScripters,

    In dit blogbericht de 6e tutorial van de serie game development. In deze serie gaan we de primaire Level en Tile klasse maken. Later in de serie gaan we deze klasse gebruiken om Levels te genereren. Ik waarschuw daarom alvast dat er in de komende tutorials weinig tot niets wijzigt binnen de game, maar op de achtergrond natuurlijk wel. Maargoed nu verder met de tutorial...

    Omdat we nu gaan beginnen met het maken van onderdelen die daadwerkelijk gebruikt gaan worden in de client is het eerst belangrijk om GOED te bedenken welke onderdelen we nodig hebben. Natuurlijk ga ik jullie dit denkwerk besparen en maak ik hier alvast een lijstje met onderdelen die sowieso in een level voor gaan komen:
    • De grootte van de map (breedte en hoogte).
    • Losse tiles.
    • Een update methoden om de logica van het level te calculeren (denk aan bewegende NPC's).
    • Een methoden om een tijd cyclus te maken (denk aan Dag/Licht en
    [Lees meer]
  • Dit is een vervolg op: [TUT] Game development 04 - SpriteSheets en Sprites

    Hallo ICTScripters,

    Het is alweer tijd voor de 5e tutorial van deze serie. In deze tutorial gaan we de keyboard events behandelen, want we willen natuurlijk ons toetsenbord gaan gebruiken om uiteindelijk je karakter te laten bewegen.

    Om te beginnen maken we daarom een nieuwe klasse aan Keyboard en plaats deze in een nieuwe package input. Het is nu zaak dat wij hier een event aan gaan koppelen. Gelukkig heeft Java hier een hele makkelijke interface voor geschreven namelijk de KeyListener. Implementeer deze daarom in de Keyboard Class:

    Source Code

    1. public class Keyboard implements KeyListener {
    2. }


    Druk vervolgens op CTRL+SHIRT+O om je imports te fixen en je zult zien dat er nogsteeds errors in de code aanwezig zijn. Dit komt doordat de KeyListener interface 3 methodes nodig heeft om te kunnen werken namelijk de: keyPressed(), [Lees meer]
  • Dit is een vervolg op: [TUT] Game development 03 - Screen Class

    Hallo ICTScripters,

    In deze tutorial wordt een begin gemaakt aan het serieuze werk namelijk: SpriteSheets en Sprites. Maar voor we hier mee beginnen is het eerst belangrijk om te weten wat een Sprite en SpriteSheet is.

    Zoals je waarschijnlijk wel al weet, een game bestaat uit verschillende objecten. In onze game gaan we gebruik maken van 2D afbeeldingen waarbij elk object een Sprite wordt genoemd. Meestal bestaat een Sprite uit de volgende waardes: colordepth * width * height. Net als op het web willen wij er voor zorgen dat de laadtijd van deze Sprites zo klein mogelijk wordt. Om dit te bereiken gaan we deze losse Sprites naast en onder elkaar plaatsen als 1 afbeelding om zo de laadtijd van losse objecten (meerder afbeeldingen) te beperken naar 1 afbeelding. Zo'n afbeelding met losse Sprites wordt een SpriteSheet genoemd.

    Natuurlijk zal ik het maken van Sprites jullie besparen en kun je in de bijlage een SpriteSheet[Lees meer]