De strijd bij Rohan
“Oefening
baart kunde!”
- Sam Rain
- 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;
}
{ this.wapenpunten=10;
this.levenspunten=100;
this.levend=true;
}
function Orc()
{ this.wapenpunten=5;
this.levenspunten=50;
this.levend=true;
}
{ 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();
}
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:
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;
}
}
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.
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
JavaScript
Geen opmerkingen:
Een reactie posten