Random demo
Random demo
  • Entry name:
    Langton's Ant
  • Category:
    Graphics
  • Publisher/Developer:
    Rosetta Code
  • Year:
    2021
  • Code:
    amarok
  • Programming language:
    Action!
Langton's Ant Langton's Ant Langton's Ant Langton's Ant Langton's Ant Langton's Ant Langton's Ant Langton's Ant
Listing 1
DEFINE DIRN="0"
DEFINE DIRE="1"
DEFINE DIRS="2"
DEFINE DIRW="3"
DEFINE BLACK="1"
DEFINE WHITE="2"
DEFINE MAXX="159"
DEFINE MAXY="95"

BYTE FUNC TurnLeft(BYTE dir)
  IF dir=DIRN THEN
    RETURN (DIRW)
  FI
RETURN (dir-1)

BYTE FUNC TurnRight(BYTE dir)
  IF dir=DIRW THEN
    RETURN (DIRN)
  FI
RETURN (dir+1)

PROC DrawAnt(INT x,y)
  BYTE c,dir

  dir=DIRN
  
  DO
    c=Locate(x,y)
  
    IF c=BLACK THEN
      Color=WHITE
      Plot(x,y)
      dir=TurnLeft(dir)
    ELSE
      Color=BLACK
      Plot(x,y)
      dir=TurnRight(dir)
    FI
    IF dir=DIRN THEN
      y==-1
      IF y<0 THEN EXIT FI
    ELSEIF dir=DIRE THEN
      x==+1
      IF X>MAXX THEN EXIT FI
    ELSEIF dir=DIRS THEN
      y==+1
      IF Y>MAXY THEN EXIT FI
    ELSE
      x==-1
      IF x<0 THEN EXIT FI
    FI
  OD
RETURN

PROC Main()
  BYTE CH=$02FC
  BYTE y

  Graphics(7+16)
  SetColor(0,0,2)
  SetColor(1,0,12)
  Color=2
  FOR y=0 TO MAXY
  DO
    Plot(0,y) DrawTo(MAXX,y)
  OD

  DrawAnt(80,48)

  DO UNTIL CH#$FF OD
  CH=$FF
RETURN  

This is non-commercial site, its content is based on Atari 8-bit home computer contents and references.
If you feel your rights are violated by showing/using any part of contents of your product represented on this page, please contact me immediatelly so I can remove it!