HTML and CSS Reference

In-Depth Information

iif
(
!
tankStarted
) {

currentNode
=
startNode
;

tankStarted
=
true

true
;

nextNode
=
result
[
0
];

tankX
=
currentNode
.
x
*
32
;

tankY
=
currentNode
.
y
*
32

}

If the tank is in the first
startNode
,
tankStarted
will be
false
. In this case, we must set

currentNode
tothe
startNode
value.
nextNode
willbethefirstnodeintheresultarraynode

path. The
tankX
and
tankY
coordinates are the path
x
and
y
values (respectively) multiplied

by the tile size (
32
).

Now that the tank is actually moving, we check to determine when it has made it to the center

of the next node. We did this the simplest manner possible because each step that the tank

takes in any direction will be the value
1
.

NOTE

If the tank were to move at a speed other than 1, it would be better to calculate the vector between

the center of each of the nodes and count the steps in between the nodes. We would then move the

tank that number of steps before it stopped to change nodes. Examples of this type of movement are

iif
(
tankX
==
nextNode
.
x
*
32
&&
tankY
==
nextNode
.
y
*
32
) {

//node change

currentNodeIndex
++
;

iif
(
currentNodeIndex
==
result
.
length
) {

finishedPath
=
true

true
;

}

currentNode
=
nextNode
;

nextNode
=
result
[
currentNodeIndex
]

tankMoving
=
false

false
;

}

Next we check to see whether the tank has moved to the center of the next node. We do this

by comparing the tank
x
and
y
values with the node
x
and
y
values. First we add 1 to
cur-

rentNodeIndex
. Using that new value, we either stop the tank from moving by setting
fin-

ishedPath
to
true
,orweset
currentNode
tobe
nextNode
,set
nextNode
tothenewnodein

the result path using
currentNodeIndex
, and we set
tankMoving
to
false
.