donderdag 9 augustus 2012

JavaScript voor mensen, elven en hobbits - Deel 23: Objecten versus Objecten


De strijd bij Rohan

“Oefening baart kunde!”
                                    - Sam Rain
Het hele doel van programmeren in objecten, is dat deze objecten met elkaar kunnen werken. Deze ‘interactie’ is vaak een vorm van Elvenmagie waar tovenaars perverse ideeën over hebben, maar eigenlijk een filosofie is over balans. Objecten, zelfs in JavaScript, doen uit zichzelf niets. Het slagveld waar deze objecten worden geplaatst samen met de extrinsieke factoren, bepalen het gedrag van objecten.
In het vorige artikel maakte je al wat magie met de ‘while’-lus. Het is vaak een lus, zoals de ‘while’, dat als speelveld dient voor objecten; en als we naar het meest ‘atomaire’ kijken in het brein van de computer is eigenlijk ‘alles’ een onderdeel van een lus. Een lus die we in Elvenmagie gebruiken is vaak afhankelijk van een ‘conditie’; afhankelijk van de ingrediënten blijft de lussende magie werkende. Je voelt het aankomen, alsof je een glazen bol hebt vastgehouden en even in contact bent met enge tovenaarskunst... Het wordt tijd voor elvenmagie op hoger niveau!
We zullen twee soorten wezens oproepen: de Elf en de Orc. Er zal een mechanisme nodig zijn dat deze twee wezens toelaat om onderling elkaar te manipuleren. Wanneer allen van dezelfde soort wezens verslagen is, ‘eindigt’ het slagveld (de conditie dus). Laten we beginnen met de objecten te ontwerpen:
function Elf()
{ this.wapenpunten=10;
  this.levenspunten=100;
  this.levend=true;
}
function Orc()
{ this.wapenpunten=5;
  this.levenspunten=50;
 this.levend=true;
}
Met behulp van lijstjes, maken we twee ‘partijen’:
var helden= new Array(5); /*maakt een lijst van 5 elementen*/
var vijanden=new Array(5); /*en nog een lijst van 5*/
for (var i=0; i<helden.length;i++)
{
helden[i]=new Elf();
}
for (var i=0; i<vijanden.length; i++)
{
vijanden[i]=new Orc();
}
Door de ‘for’-lus te gebruiken, kunnen we de lijsten snel vullen met nieuwe objecten: ‘helden’ bevat nu 5 elven en ‘vijanden’ 5 orcs.
Het speelveld kunnen we nu als volgt ontwerpen:
var slagveld=true; /*de ‘conditie’*/
while(slagveld)
{
var aantal=vijanden.length;
 for (var s=0; s<aantal; s++)
{
vijanden[s].levenspunten -= helden[s].wapenpunten;
helden[s].levenspunten -= vijanden[s].wapenpunten;
if (vijanden[s].levenspunten<1)
{
vijanden[s].levend=false
}
for (var t=0; t<vijanden.length; t++)
{
if (vijanden[t].leven != true) /*de != is de niet-gelijk operator*/
{
delete vijanden[t];
}
}
if (vijanden.length<1)
{
slagveld=false;
}
}
De elvenmagie neemt wat complexere vormen aan; binnen de ‘while’ lus zitten twee ‘for’ lussen ingemetseld – we werken immers met lijstjes. Geef jezelf de tijd om de toverspreuk te ontcijferen naar het Hobbits:
1) while-lus
2) for-lus interactie tussen de vijanden en helden
3) eigenschappen van object aanpassen met ‘if’
4) de for-lus om eigenschap te controleren in de vijanden lijst
5) bij ‘waar’ verwijderen uit lijst
6) indien lijst leeg conditie aanpassen om while-lus te beëindigen.
Concentreer!

Meer lezen over Programmeren? Klik hier voor de inhoudsopgave van alle artikelen!

©SamRain
JavaScript

Geen opmerkingen:

Een reactie posten