| divisors | divisors := [:x | (1 to: x) select: [:d | x \\ d = 0] ]. divisors value: 60. ⇒ #(1 2 3 4 5 6 10 12 15 20 30 60) divisors value: 45 ⇒ #(1 3 5 9 15 45)
Check the implementations in Boolean, True and
False.
Once the method is edited and saved, in the Method pane select
its name teleport: then do ...right click
→ more... → change category... →
events...
In the Method pane, select one uncategorized control method,
then do ...right click → more...
→ change category → new... key-in
control.
To categorized the remaining uncategorized control methods, repeat but
select control at the last step as this category now exists.
We do not need an iterator to detect a collision between two ships. However we use an iterator to take action on each ship when a collision is detected.
SpaceWar>>collisionsShips
| positionA position B |
positionA := ships first morphPosition.
positionB := ships second morphPosition.
(positionA dist: positionB) < 25 ifTrue: [
ships do: [:each |
each flashWith: Color red.
self teleport: each]
]
Local variables only used to ease the code source formatting in printed book.
You just need to pick the appropriate code snippets from the referenced exercise and examples.
SpaceWar>>collisionsTorpedoesStar
| position |
position := centralStar morphPosition.
torpedoes do: [:each |
(each morphPosition dist: position) < 8 ifTrue: [
each flashWith: Color orange.
self destroyTorpedo: each]]