Boids: Difference between revisions

76 bytes removed ,  10 months ago
no edit summary
m (integrate WP link)
No edit summary
 
(20 intermediate revisions by 8 users not shown)
Line 1:
{{draft task}}
A [[wp:Boids|Boids]] algorithm simulates the flocking behavior of birds. This task requires the creation of a graphical or purely textual basic simulation of [[wp:Boids|Boids]]a flock of birds navigating the cave with obstacles depicted below.
 
<div style="font-size: .8em;"><pre>
See:
<pre>.......###############...............................................................
* http://www.red3d.com/cwr/boids/
 
If you implement a purely textual simulation, this is a possible board representation, where "O" are the boids that should go toward the right, "#" are fixed walls that should be avoided by the boids, and "." is free space (using a space is also acceptable for free space, if you add some kind of frame around the board).
 
<pre>.......###############...............................................................
.......###############...............................................................
......#################..............................................................
Line 22 ⟶ 18:
............................................................#################........
...........................................................###################.......
............................................................#################........</pre>
</pre></div>
 
If you implement a purely textual simulation, this is a possible board representation, where "O" are the boids that should go toward the right, "#" are fixed walls that should be avoided by the boids, and "." is free space (using a space is also acceptable for free space, if you add some kind of frame around the board).
An even simpler simulation that doesn't contain walls is acceptable.
 
An even simplerA simulation that doesn't contain wallsobstacles but only shows flocking behavior is acceptable.
The board was generated by this simple Python code:
<br><br>
<lang python>from array import array
;See also:
from math import hypot
* http://www.red3d.com/cwr/boids/
* http://natureofcode.com/book/chapter-6-autonomous-agents/
<br><br>
=={{header|C}}==
See [[Boids simulation/C]]
=={{header|Go}}==
See [[Boids/Go]]
=={{header|Java}}==
See [[Boids/Java]]
=={{header|Julia}}==
See [[Boids/Julia]]
=={{header|Nim}}==
See [[Boids/Nim]]
=={{header|Phix}}==
See [[Boids/Phix]]<br>
Screenshot: [http://phix.x10.mx/shots/boids.png http://phix.x10.mx/shots/boids.png]
=={{header|Wren}}==
 
See [[Boids/Wren]]
nx = 85
ny = 16
background = '.'
foreground = '#'
 
mat = [array("c", background) * nx for _ in xrange(ny)]
 
def add_circle(mat, (cx, cy, r)):
for y in xrange(cy - r, cy + r + 1):
for x in xrange(cx - r, cx + r + 1):
if hypot(cx - x, cy - y) <= r:
if x >= 0 and x < len(mat[0]) and y >= 0 and y < len(mat):
mat[y][x] = foreground
 
for c in [(14, 2, 8), (nx / 2, ny / 2, 3), (nx - 17, ny - 2, 9)]:
add_circle(mat, c)
 
for row in mat:
print row.tostring()</lang>
 
=={{header|C}}==
See [[Boids simulation/C]]