Language Gri
| Date: | 04/20/05 |
| Author: | Stuart Prescott |
| URL: | n/a |
| Comments: | 0 |
| Info: | http://gri.sourceforge.net/ |
| Score: |
#!/usr/local/bin/gri
#
# 99 bottles of beer in the graphics language Gri
# Prints out 99BoB to both stdout and also the the postscript file 99BoB.ps
#
# Gri is available from http://gri.sourceforge.net/
#
# beer.gri by Stuart Prescott 2003
#
# Invocation:
# gri beer.gri
# or just
# ./beer.gri
\singular = "bottle"
\plural = "bottles"
\beer = "of beer"
\wall = "\beer on the wall"
\take = "Take one down and pass it around,"
#set up the postscript file and the font size for the printout
set postscript filename 99BoB.ps
set font size 0.08 cm
.leftmargin. = 3
.bottommargin. = 29
.linewidth. = 0.10
.vertposition. = .bottommargin.
#now generate the song line-by-line
.count. = 100
while {rpn .count. 0 <} #note: reverse polish notation maths...
if {rpn .count. 2 ==}
\bottle1 = "\plural"
\bottle2 = "\singular"
else if {rpn .count. 1 ==}
\bottle1 = "\singular"
\bottle2 = "\plural"
else
\bottle1 = "\plural"
\bottle2 = "\plural"
end if
sprintf \line1 "%.0f \bottle1 \wall, %.0f \bottle1 \beer" .count. .count.
sprintf \line2 "\take %.0f \bottle2 \wall." {rpn .count. 1 -}
#Print the line of the song to stdout
show "\line1"
show "\line2"
show ""
#Print the line of the song to the postscript file
draw label "\line1" at .leftmargin. .vertposition. cm
draw label "\line2" at .leftmargin. {rpn .vertposition. .linewidth. -} cm
.vertposition. = {rpn .vertposition. 2.5 .linewidth. * -}
.count. -= 1
end while
Download Source | Write Comment
Download Source | Write Comment
Add Comment
Please provide a value for the fields Name,
Comment and Security Code.
This is a gravatar-friendly website.
E-mail addresses will never be shown.
Enter your e-mail address to use your gravatar.
Please don't post large portions of code here! Use the form to submit new examples or updates instead!
Comments