Jump to content

Recommended Posts

Posted

Pretty neat! I remember playing with Logo way back when. I wouldn't be surprised if I still have the manual and floppy kicking around somewhere. I remember being blown away by how easy it was to do certain things in Logo.

  • Replies 74
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted

@JamesBrooks

CODE

CLEAR

COLOR 0x0000FF

TURN -90

FORWARD 200

COLOR 0x0000FF

TURN 125

FORWARD 350

COLOR 0x0000FF

TURN 110

FORWARD 350

COLOR 0x0000FF

TURN 125

FORWARD 50

COLOR 0x0000FF

TURN 55

FORWARD 260

COLOR 0x0000FF

TURN -110

FORWARD 220

COLOR 0x0000FF

TURN -125

FORWARD 230

COLOR 0x0000FF

TURN 55

FORWARD 41

COLOR 0x0000FF

TURN 125

FORWARD 130

Enjoy :)

Cheers, FireFox

Posted

Romanian flag

CLEAR
SIZE 20
COLOR 0x804000
FORWARD 200
TURN -90
COLOR 0x0000FF
SIZE 20
FORWARD 75
TURN -90
FORWARD 15
TURN -90
FORWARD 75
TURN 90
FORWARD 15
TURN 90
FORWARD 75
TURN -90
FORWARD 15
TURN -90
FORWARD 75
TURN 180
FORWARD 85
WAIT 1000
COLOR 0xFFFF00
FORWARD 75
TURN 90
FORWARD 15
TURN 90
FORWARD 75
TURN -90
FORWARD 15
TURN -90
FORWARD 75
TURN 90
FORWARD 15
TURN 90
FORWARD 75
TURN 180
FORWARD 85
WAIT 1000
COLOR 0xFF0000
FORWARD 50
TURN -90
FORWARD 15
TURN -90
FORWARD 50
TURN 90
FORWARD 15
TURN 90
FORWARD 50
TURN -90
FORWARD 15
TURN -90
FORWARD 50
TURN 90
SIZE 1
FORWARD 10
COLOR 0xFFFFFF
FORWARD 30
WAIT 1000
Posted

this code is smaller for autoit logo :

CODE

CLEAR

SIZE 30

COLOR 0x0000FF

TURN -90

FORWARD 200

SIZE 30

COLOR 0x0000FF

TURN 125

FORWARD 350

SIZE 30

COLOR 0x0000FF

TURN 110

FORWARD 350

SIZE 30

COLOR 0x0000FF

TURN 125

FORWARD 200

Cheers, FireFox.

Posted

Oshi- I remember seeing this like; 7 years ago or something. I think in primary school on mac, I dont know.

I know ive seen it.

# MY LOVE FOR YOU... IS LIKE A TRUCK- #
Posted

CODE

#include <EditConstants.au3>

#include <GUIConstantsEx.au3>

#include <WindowsConstants.au3>

#include <String.au3>

#include <Array.au3>

Global $arrDic[7] = ["FORWARD", "COLOR", "CLEAR", "WAIT", "DO", "SIZE", "TURN"]

Global $arrCols[4][2] = [["BLACK", "0x000000"],["RED", "0xFF0000"],["BLUE", "0x0000FF"],["GREEN", "0x00FF00"]]

Global $turtle = @ScriptDir & '\turtle.gif', $Count = 0, $picDraw

Global Const $Pi = 3.14159265358979323846264338328

Global $oldX = 228, $oldY = 300, $oldA = 90, $penColor = 0x000000, $penSize = 1

Global Const $degToRad = $Pi / 180

$guiMain = GUICreate("A3 LOGO Interpreter", 474, 445)

GUICtrlCreateGroup("", 8, 336, 457, 105)

$strCmd = GUICtrlCreateEdit("", 16, 352, 377, 81, BitOR($ES_AUTOVSCROLL, $ES_WANTRETURN, $WS_VSCROLL, $WS_HSCROLL,$ES_AUTOHSCROLL))

$btnRun = GUICtrlCreateButton("&Run", 400, 352, 57, 81, 0)

GUICtrlCreateGroup("", -99, -99, 1, 1)

$picDraw = GUICtrlCreateGraphic(8, 8, 457, 330)

GUICtrlSetBkColor(-1, 0xFFFFFF)

GUICtrlSetGraphic(-1, $GUI_GR_MOVE, $oldX, $oldY)

$picTurt = GUICtrlCreatePic($turtle, 228, 300, 20, 24)

GUISetState(@SW_SHOW)

While 1

$nMsg = GUIGetMsg()

Switch $nMsg

Case $GUI_EVENT_CLOSE

Exit

Case $btnRun

Command()

EndSwitch

WEnd

Func Turtle($x, $y, $color = $penColor, $size = $penSize)

GUICtrlSetGraphic($picDraw, $GUI_GR_MOVE, $oldX, $oldY)

GUICtrlSetGraphic($picDraw, $GUI_GR_PENSIZE, $size)

GUICtrlSetGraphic($picDraw, $GUI_GR_COLOR, $color)

GUICtrlSetGraphic($picDraw, $GUI_GR_LINE, $x, $y)

GUICtrlSetGraphic($picDraw, $GUI_GR_REFRESH)

$oldY = $y

$oldX = $x

GUICtrlSetPos($picTurt, $x, $y)

EndFunc ;==>Turtle

Func Command()

$Line = StringSplit(StringStripCR(GUICtrlRead($strCmd)), @LF)

For $i = 1 To $Line[0]

If $Line[$i] = "" Then

ContinueLoop

EndIf

If StringInStr($Line[$i], " ") Then

$ThisThing = StringLeft($Line[$i], StringInStr($Line[$i], " ") - 1)

Else

$ThisThing = $Line[$i]

EndIf

Switch StringUpper($ThisThing)

Case $arrDic[0]; FORWARD

Call("FORWARD",$Line[$i])

Case $arrDic[1]; COLOR

Call("COLOR",$Line[$i])

Case $arrDic[2]; CLEAR

ClearGraphic()

Case $arrDic[3]; WAIT

Call("WAIT",$Line[$i])

Case $arrDic[4]; DO (Loop)

Call("DoLoop",$Line[$i])

Case $arrDic[5]; SIZE

Call("SIZE",$Line[$i])

Case $arrDic[6]; TURN

Call("TURN",$Line[$i])

Case Else

MsgBox(0, "LOGO", "Error: Unexpected command: " & $ThisThing)

EndSwitch

Next

EndFunc ;==>Command

Func FORWARD($Line)

$ThisY = StringSplit($Line, " ")

If IsArray($ThisY) Then Turtle($oldX + ( Cos($oldA * $degToRad) * $ThisY[2]) , $oldY - ( Sin($oldA * $degToRad) * $ThisY[2]))

EndFunc

Func Color($Line)

$getPen = StringSplit($Line, " ")

If IsArray($getPen) Then $penColor = $getPen[2]

EndFunc

Func WAIT($Line)

$Time = StringSplit($Line, " ")

If IsArray($Time) Then Sleep($Time[2])

EndFunc

Func SIZE($Line)

$getSize = StringSplit($Line, " ")

If IsArray($getSize) Then $penSize = $getSize[2]

EndFunc

Func TURN($Line)

$ThisTurn = StringSplit($Line, " ")

If Not IsArray($ThisTurn) Then

MsgBox(0, "LOGO", "Error: TURN requires a degree.")

Else

$oldA += Number($ThisTurn[2])

While ($oldA > 360)

$oldA -= 360

WEnd

While ($oldA < 0)

$oldA += 360

WEnd

;Turtle($oldX - $ThisTurn[2], $oldY)

EndIf

EndFunc

Func ClearGraphic()

For $INDEX = 0 To $Count

GUICtrlDelete($picDraw)

GUICtrlCreateGraphic(8, 8, 457, 330)

GUICtrlSetBkColor(-1, 0xFFFFFF)

GUICtrlSetGraphic(-1, $GUI_GR_MOVE, $oldX, $oldY)

$oldX = 228

$oldY = 300

$oldA = 90

Turtle(228, 300)

Next

$Count = 0

EndFunc ;==>ClearGraphic

Func DoLoop($LINE)

Local $WORK = _StringBetween($LINE,"[","]")

Local $LOOP = StringLeft($LINE,StringInStr($LINE,"[")-2)

Local $LOOPS = StringSplit($LOOP," ")

If IsArray($LOOPS) Then

Local $COMMANDS = StringSplit($WORK[0]," ",1)

If IsArray($COMMANDS) Then

For $INDEX = 1 To $LOOPS[2]

For $COMMAND_INDEX = 1 To $COMMANDS[0]

If StringLeft($COMMANDS[$COMMAND_INDEX],7) = "FORWARD" Then

Call("FORWARD",$COMMANDS[$COMMAND_INDEX])

ElseIf StringLeft($COMMANDS[$COMMAND_INDEX],5) = "COLOR" Then

Call("COLOR",$COMMANDS[$COMMAND_INDEX])

ElseIf StringLeft($COMMANDS[$COMMAND_INDEX],5) = "CLEAR" Then

Call("ClearGraphic")

ElseIf StringLeft($COMMANDS[$COMMAND_INDEX],4) = "WAIT" Then

Call("WAIT",$COMMANDS[$COMMAND_INDEX])

ElseIf StringLeft($COMMANDS[$COMMAND_INDEX],4) = "SIZE" Then

Call("SIZE",$COMMANDS[$COMMAND_INDEX])

ElseIf StringLeft($COMMANDS[$COMMAND_INDEX],4) = "TURN" Then

Call("TURN",$COMMANDS[$COMMAND_INDEX])

EndIf

Next

Next

EndIf

EndIf

EndFunc

WOW, Andreik sent me this, DO loops work!

Example:

CLEAR
COLOR 0xFFFFFF
FORWARD 150
DO 4 [COLOR 0x0000FF  FORWARD 50  TURN 90  WAIT 1000]

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...