Langton's ant: Difference between revisions

added FreeBASIC
m (→‎{{header|Haskell}}: Fixed types)
(added FreeBASIC)
Line 2,755:
</pre>
 
=={{header|FreeBASIC}}==
<lang freebasic>' version 16-10-2016
' compile with: fbc -s gui
 
' a cell size of 4 x 4 pixels is used
' In FreeBASIC the 0,0 is the top left corner
 
ScreenRes 400,400,8 ' give a 100 by 100 field
Dim As UByte Ptr p = ScreenPtr
If p = 0 Then End ' p does not point to screen
 
Palette 0, 0, 0, 0 ' index 0 = black
Palette 255, 255, 255, 255 ' index 225 = white
 
Line (0, 0) - (799, 799), 255, bf ' draw box and fill it with white color
 
Dim As Integer count, offset, x = 199, y = 199
Dim As UByte col ' = color
' direction, 0 = up, 1 = right, 2 = down, 3 = left
Dim As UByte d ' d = 0, looking up
 
Do
offset = x + y * 400
col = p[offset]
 
If col = 0 Then
d = (d -1) And 3
Else
d = (d +1) And 3
EndIf
 
col = col Xor 255 ' flip the color
 
ScreenLock ' don't update screen while we are drawing
 
' draw a 4*4 block and paint it with palette color [0 | 255]
Line (x, y) - (x +3, y -3), col, bf
 
ScreenUnLock ' allow screen update's
 
'Sleep 100 ' slow the program down if needed
 
' true = 0, false = -1
If (d And 1) = 1 Then
x = x + (d = 1) * 4 - (d = 3) * 4
Else
y = y - (d = 0) * 4 + (d = 2) * 4
End If
 
count += 1
' update step count window title bar
WindowTitle "Langton's ant step: " + Str(count)
 
' has user clicked on close window "X" then end program
If InKey = Chr(255) + "k" Then End
 
Loop Until x < 1 Or x > 398 Or y < 1 Or y > 398
 
' display total count in window title bar
WindowTitle "Langton's ant has left the field in " + Str(count) + " steps"
 
' empty keyboard buffer
While InKey <> "" : Wend
'Print : Print "hit any key to end program"
Sleep
End</lang>
=={{header|GFA Basic}}==
 
457

edits