Boids: Difference between revisions

From Rosetta Code
Content added Content deleted
m (integrate WP link)
No edit summary
 
(20 intermediate revisions by 8 users not shown)
Line 1: Line 1:
{{draft task}}
{{draft task}}
This task requires the creation of a graphical or purely textual basic simulation of [[wp:Boids|Boids]].
A [[wp:Boids|Boids]] algorithm simulates the flocking behavior of birds. This task requires the creation of a graphical or purely textual simulation of a flock of birds navigating the cave with obstacles depicted below.


<div style="font-size: .8em;"><pre>
See:
.......###############...............................................................
* 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: Line 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.


A simulation that doesn't contain obstacles 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/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]]

Latest revision as of 11:33, 28 July 2023

Boids is a draft programming task. It is not yet considered ready to be promoted as a complete task, for reasons that should be found in its talk page.

A Boids algorithm simulates the flocking behavior of birds. This task requires the creation of a graphical or purely textual simulation of a flock of birds navigating the cave with obstacles depicted below.

.......###############...............................................................
.......###############...............................................................
......#################..............................................................
O......###############...............................................................
OO.....###############...............................................................
OO.....###############....................#.........................#................
OO......#############...................#####...................#########............
OO......#############...................#####..................###########...........
OO.......###########...................#######................#############..........
OO.........#######......................#####................###############.........
OO............#.........................#####...............#################........
OO........................................#.................#################........
O...........................................................#################........
............................................................#################........
...........................................................###################.......
............................................................#################........

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).

A simulation that doesn't contain obstacles but only shows flocking behavior is acceptable.

See also



C

See Boids/C

Go

See Boids/Go

Java

See Boids/Java

Julia

See Boids/Julia

Nim

See Boids/Nim

Phix

See Boids/Phix
Screenshot: http://phix.x10.mx/shots/boids.png

Wren

See Boids/Wren