up vote 178 down vote favorite
49
46  
Joel Spolsky?! Is this a joke question? – KingNestor Jun 16 '09 at 20:46
97  
I think its funny that the SO cops are now closing questions under the "not a real question" because they think it was a "bad question" or "poorly written question". I think this question shows that even something ambiguous can be made clear and provide some information that may be relevant to future users. If we keep closing all these questions, who is going to come to the site? – RSolberg Jun 16 '09 at 21:09
51  
This will be mentioned in podcast 58. – Joel Spolsky Jun 16 '09 at 21:26
105  
It's turtles all the way down, Joel. – Nosredna Jun 17 '09 at 1:02
85  
It' unfair. If somebody else would ask such question it won't earn more than 5 votes ;) – klew Jun 18 '09 at 8:10
show 64 more comments

37 Answers

1 2
up vote 177 down vote accepted
//MOVE FORWARD
FD 75
//TURN RIGHT
RT 54
//TURN LEFT
LT 21
//MOVE BACKWARD
BK 17

Check out some other turtle commands found here...


Turtle Commands

BACK ## [BK] - Move turtle back

BACKGROUND ## [BG] - Set Background color (0-15)

  • 0 - Black
  • 1 - White
  • 2 - Red
  • 3 - Cyan
  • 4 - Purple
  • 5 - Green
  • 6 - Blue
  • 7 - Yellow
  • 8 - Orange
  • 9 - Brown
  • 10 - Light Red
  • 11 - Grey 1
  • 12 - Grey 2
  • 13 - Light Green
  • 14 - Light Blue
  • 15 - Grey 3

CLEARSCREEN [CS] - Clear Screen without moving turtle

DRAW - Clear Screen and take turtle home

EACH - Tell several sprites, whose numbers are in a list, to accept commands in a second list. EG. EACH [1 2] [SQUARE 10]

FORWARD ## [FD] - Move turtle forward

FULLSCREEN - Full graphics screen (same as pressing F5)

HEADING - Output turtle heading as a number (0-359)

HIDETURTLE [HT] - Make turtle invisible

HOME - Move turtle to center of screen pointing up

LEFT [LT] - Turn turtle left

NODRAW [ND] - Enter text mode with clear screen

NOWRAP - Prevent drawings from wrapping around screen

PENCOLOR [PC] - Change pen color

PENDOWN [PD] - Turtle leaves trail

PENUP [PU] - Turtle ceases to leave trail

RIGHT ## [RT] - Turn turtle right

SETHEADING **[SETH]** - Set turtle heading eg. SETH 180

SETSHAPE - Set the current sprite shape (0-7)

SETX Move the turtle to the specified x co-ordinates Eg. SETX 50

SETXY Move the turtle to the specified x, y co-ordinates Eg. SETXY 50 50

SETY Move the turtle to the specified y co-ordinate Eg. SETY 50

SHAPE - Output number of current sprite's shape

SHOWTURTLE [ST] - Make turtle visible

SPLITSCREEN - Mixed graphics and text screen (same as pressing F3)

STAMPCHAR - Make the turtle stamp a character at the current location Eg. STAMPCHAR "A

TELL - Tell designated sprite to receive commands. EG. TELL 2

TEXTSCREEN - Use whole screen for text (same as pressing F1)

TOWARDS - Output heading for turtle to face an X,Y co-ordinate. Eg. TOWARDS 0 0

WRAP - Make turtle drawings wrap around the screen

XCOR - Output current x co-ordinate of turtle

YCOR - Output current y co-ordinate of turtle

ASPECT - Set verticle screen scale factor, default is 0.76


Samples taken directly from website: http://gaza.freehosting.net/logo/index.html

link|flag
24  
MY EYES . – George Stocker Jun 16 '09 at 20:47
3  
Mine too... And I copy and pasted it :) – RSolberg Jun 16 '09 at 20:48
62  
SETXY Make the turtle do an alluring dance – Daniel Earwicker Jun 18 '09 at 17:31
13  
+1 for skilled point farming – SomeMiscGuy Jun 24 '09 at 12:47
4  
@Christopher - you're giving me way more credit than I deserve for that... I had no idea it'd blow up like this... Just answering questions... – RSolberg Jun 30 '09 at 17:45
show 3 more comments
up vote 229 down vote

The first thing you have to do is write tests, then you can worry about moving the turtle.

link|flag
67  
I don't think TurtleUnit is still being maintained, sadly. – skaffman Jun 16 '09 at 21:05
6  
If I had to maintain turtles' units all day, I think I'd kill myself. "How did you guys make it this far as a species if your units keep breaking?!" – Pesto Jun 16 '09 at 21:29
47  
TurtleUnit doesn't really need too much maintenance. Mock Turtles make testing almost any imaginable Spirograph a breeze. – TokenMacGuy Jun 17 '09 at 1:17
2  
LOL... Awesome comment! :-) – Pablo Santa Cruz Jun 19 '09 at 18:08
show 1 more comment
up vote 77 down vote

i like turtles

link|flag
7  
...all riiight, you're a great zombie! – ctd Oct 7 '09 at 22:33
9  
Why does this have 33 upvotes? This type of answer should be buried! (+1) – Isaac Waller Nov 4 '09 at 3:05
1  
ROFL ... I love your answer! So appropriate... – Ray Burns Jan 18 at 14:09
6  
show 1 more comment
up vote 67 down vote

First, you have to understand that there is a lot of legacy turtle-moving code at Fog Creek in VBScript. This code contains years of bugfixes and special cases for turtle-moving. If you re-write it from scratch you are asking for disaster. Plus, it would set back the next release by months. Customers want new features, such as new turtle shapes and 3D motion, and they literally don't care what the code looks like. They just want to move their turtle.

It's actually easier to write your own compiler to translate your legacy code into Logo. This allows you to add other features to the language that VBScript didn't originally support, like Excel macros. It's not that hard, as long as you hire someone smart.

link|flag
3  
And if you have enough bugs you can even write your own bug tracker - eventually when the bug tracker is larger than the original project you can sell the bug tracker – Martin Beckett Jul 13 '09 at 14:16
7  
We'll call it FogTURTLEZ. – Kyralessa Dec 15 '09 at 19:02
1  
+1 for Awesomeness – DrFloyd5 Mar 30 at 18:04
show 1 more comment
up vote 47 down vote

Logo is all about moving the turtle... you give it commands like this:

Forward 100
Right 45

You can do stuff like repeating commands too:

Repeat 8 [Forward 100 Right 45]  ; Draw an octagon

(What do I win? 8-)

link|flag
95  
Gah! Are you using a single ')' as both part of the emoticon AND to close the parenthetical statement? -1 for you! – Pesto Jun 16 '09 at 20:48
45  
@Pesto: Of course! Those parentheses don't grow on trees you know! – RichieHindle Jun 16 '09 at 20:49
12  
STEWIE: Your sentence is what Brian? Over. BRIAN: My sentence is… wait I have to say over even if the sentence ends with the word over? – Ian Patrick Hughes Jun 16 '09 at 20:51
13  
@Richie Have you never Lisp'd? parentheses grow EVERYWHERE. – user59808 Jun 16 '09 at 20:52
19  
they grow on the lisp trees in the deeply nested parenthetical forest. – Carson Myers Jun 16 '09 at 20:58
show 6 more comments
up vote 36 down vote

Boy: Do not try to move the turtle; that's impossible. Instead, only try to realize the truth.
Joel: What truth?
Boy: There is no turtle.
Joel: There is no turtle?
Boy: Then you will see, it is not the turtle that moves, it is only yourself.

link|flag
show 4 more comments
up vote 25 down vote

Don't forget PENUP and PENDOWN. Otherwise you'll move the turtle, but not see his track. Also change the color of the pen, and the background color of the paper.

link|flag
show 1 more comment
up vote 21 down vote

A croquet mallet ?

link|flag
up vote 15 down vote

How do you move the turtle in LO

GO? That's not a language we know.

Can turtle still move, if language is dead?

Can language still move, if syntax is shed?

Or maybe a new kind of language instead!

Okay if the movement is just in my head?

How do you move the turtle in LO

GO? ... you could try STACKOVERFLOW.

link|flag
show 1 more comment
up vote 13 down vote

It runs when you say Boo!

link|flag
3  
Aw c'mon. A down vote? There's no room for comedy among this cut throat crowd. – Ian Patrick Hughes Jun 16 '09 at 20:46
up vote 10 down vote

This seems somewhat philosophical - is the turtle an inherent part of the language, or part of its library? Ie., is the turtle more part of a LOGO library that exists only in interpreter-land, or is the turtle part of the LOGO language itself?

If we're speaking in terms of the language definition, I guess no, there really isn't a way to move the turtle. If we're speaking about an actual interpreted LOGO program, any of the answers where others describe turtle commands are valid.

I'm a pragmatist though, and thus like the idea of speaking of a concrete LOGO entity. That, of course, allows you to move the turtle using turtle commands.

link|flag
up vote 10 down vote

Ask not what the turtle can do for you, but what you can do for the turtle.

link|flag
up vote 9 down vote

Whoa! Is it still around?

fd 300 // Forward
rt 90  // Right 90°
fd 300 
lt 90  // Left 90°

That used to work.

link|flag
up vote 8 down vote

You go here... http://www.sonic.net/~nbs/webturtle/webturtle.cgi

link|flag
3  
@Sam: Dammit, I was going to do some work today! – RichieHindle Jun 16 '09 at 20:57
show 3 more comments
up vote 6 down vote

I've seen a few LOGO implementations where you can use localized commands like:

  • NAPRZOD (FORWARD),
  • LEWO (LEFT),
  • PRAWO (RIGTH)

or even NAPRZÓD (with Polish letter Ó).

LOGO is nice language to teach kids programming in their native spoken language.

link|flag
up vote 6 down vote

Have you tried JavaScript?

link|flag
3  
+1. What if you use SQL Server? stackoverflow.fogbugz.com/default.asp?W29041 – eed3si9n Jun 19 '09 at 23:30
up vote 5 down vote

Try the story about the dying kid and the firefighters. You might need to adapt it slightly.

link|flag
4  
^"used", not "sued" – Neil N Jun 18 '09 at 14:17
show 1 more comment
up vote 5 down vote

“Ne craignez point, monsieur, la tortue” Leibniz ( do not fear the turtle )

link|flag
show 1 more comment
up vote 5 down vote

Move the monitor

link|flag
up vote 4 down vote

If you've got one of the actual robotic ones (we did at school) then a good "foot up the behind" gets it moving pretty well.

link|flag
up vote 4 down vote

There is an art to moving the turtle, or rather a knack. The idea is to throw the paper at the turtle ...

link|flag
2  
Always a +1 for gratuitous Douglas Adams references... – Electrons_Ahoy Jun 30 '09 at 3:40
2  
Thanks. Glad someone spotted and rewarded accordingly. – boost Jun 30 '09 at 4:32
up vote 4 down vote

First, you will need to somehow load the core Win32 APIs from User32.dll as external functions so you can create a graphics context from the window where you want the turtle to be. I myself do not know how to do this with LOGO, but I know there are some other experts which are willing to help you out here. Note that LOGO is an old language, so if you are working in a 16 bit environment, you will likely need to properly thunk the appropriate DLLs. Next, you will need to load the turtle bitmap from your resource file, or alternatively, from your executable should your resources be direct-compiled into your build artifacts.

Now be careful about your resources here. If you don't properly dispose of your graphics contexts, bitmaps, and pens, your Windows machine could run out of handles. Next, you'll want to intercept the WM_PAINT message and then check against your main timer routine to make sure that it's time for the turtle to move. Take care not to call a turtle moving procedure from a worker thread, or you could experience stability problems, especially if you try to marshal your resources across thread boundaries.

Now then, it is important to understand that you will need to repaint any areas of the turtle, once moved, if and when your window's area is invalidated. In order to do this efficiently, you will need to use the parameters supplied with the WM_PAINT message to properly establish your clipping rectangle so that performance does not suffer if only a small region of your window is invalidated.

link|flag
up vote 4 down vote

Moving the turtle is very cumbersome. I recommend that you try TurtleQuery. It makes everything way easier by abstracting away the turtle.

link|flag
2  
+1 TurtleQuery is more popularly known as tQuery, and the syntax is just so much better than the original. $().fd("20"); – Anurag Jun 8 at 5:08
show 1 more comment
up vote 4 down vote

You should totally drop that and try jQuery.

link|flag
up vote 4 down vote

try: bk(back), fd(forward), ld(left turn in degrees), rt(right turn)

link|flag
up vote 3 down vote

Zombie kid loves turtles, too :)

link|flag
up vote 3 down vote

By issuing commands in the correct syntax. E.G.:

forward 100

There is only one necessary command to move the turtle. It is forward which has the mnemonic fd. When working with a robot (real) turtle as opposed to a graphics based (virtual) one, you might find that the turning commands left and right [lt & rt] move the turtle a little, accidentally.

Most implementations also allow the command backwards [bk].

When the turtle moves, it may draw a line as it goes depending on whether the pen is up or down at the time, and whether the current pen color is different from the background color.

A graphics based (virtual) turtle can also jump around the screen with setx, sety, and setxy

link|flag
up vote 3 down vote

I'd start by first working my way through K&R C to improve your programming skills! ;-)

link|flag
up vote 3 down vote

Use the force, Joel. Use the force.

link|flag
up vote 3 down vote

This brings back lots of memories... so many school breaks spent alone in the room with the computers, programming without knowing what the heck i was exactly doing.

Good times.

link|flag
show 1 more comment
1 2

Your Answer

 
or
never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.