Langton's ant: Difference between revisions
Content added Content deleted
m (→{{header|Haskell}}: Fixed types) |
(added FreeBASIC) |
||
Line 2,755: | Line 2,755: | ||
</pre> |
</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}}== |
=={{header|GFA Basic}}== |
||