donut.go is a Go implementation of Andy Sloan's donut.c.
It demonstrates:
- 3d rendering in a terminal window with ascii characters
- determining the terminal screen size
- using a channel as a timer
@@@@@$$
@@@$$#####$$
$@$$$##*!*!**#$
#$$$$#*!===!!!*##
$$$$#*!=;:::;=!*##
#$$$$#*=;~-,-~:=**##
#$$$#**=:- .-:=*###*
*#$$$##!=~ .~=*##$#
*#$$$##*=~ -;*#$$#=
*######*!: -=*#$$#!
!*#####**= ~!#$$$#*
!*######**= ;#$$$$#!
=**#######*! =#$@@@$#!
=!**###########$@@@@$#!
:!!**######$$$$$@@@$#*;
=!!**#####$$$$$$$$$#!;
:=!****####$$$$$$##*=
:=!!!***########**=:
-;;=!!!**********!;,
,:;==!!!*!!!!!!!;-
,~;;====!====;:-
-~:;;;;;;:~~
.---~~-,
To run:
$ go run donut.go
The code was tested on Mac OSX Mountain Lion. The Go Syscall defines appear portable, but your milage may vary.
The code is available at github GaryBoone/GoDonut under MIT license.