RosettaCodeData/Task/Peripheral-drift-illusion/FreeBASIC/peripheral-drift-illusion.b...

62 lines
1.9 KiB
Plaintext

Sub DrawRect(x0 As Integer, y0 As Integer, w As Integer, h As Integer, kolor As Integer)
For y As Integer = y0 To y0 + h - 1
Line (x0, y)-(x0 + w - 1, y), kolor
Next y
End Sub
Sub DrawEdge(px As Integer, py As Integer, colors() As Integer, edge As Integer)
Line (px, py)-(px + 22, py), colors(edge, 0)
Line (px + 22, py)-(px + 22, py + 22), colors(edge, 1)
Line (px + 22, py + 22)-(px, py + 22), colors(edge, 2)
Line (px, py + 22)-(px, py), colors(edge, 3)
End Sub
Const scrw = 512, scrh = 512
Const white = Rgb(255,255,255)
Const black = Rgb( 0, 0, 0)
Const lightolive = Rgb(211,208, 4)
Const paleblue = Rgb( 50, 80,255)
Dim As Integer x, y, px, py
Enum ' signifies the white edges on the blue squares
LT = 0
TR
RB
BL
End Enum
Screenres scrw, scrh, 24
Windowtitle("Peripheral drift illusion")
Dim edges(11, 11) As Byte = { _
{LT, BL, BL, RB, RB, TR, TR, LT, LT, BL, BL, RB}, _
{LT, LT, BL, BL, RB, RB, TR, TR, LT, LT, BL, BL}, _
{TR, LT, LT, BL, BL, RB, RB, TR, TR, LT, LT, BL}, _
{TR, TR, LT, LT, BL, BL, RB, RB, TR, TR, LT, LT}, _
{RB, TR, TR, LT, LT, BL, BL, RB, RB, TR, TR, LT}, _
{RB, RB, TR, TR, LT, LT, BL, BL, RB, RB, TR, TR}, _
{BL, RB, RB, TR, TR, LT, LT, BL, BL, RB, RB, TR}, _
{BL, BL, RB, RB, TR, TR, LT, LT, BL, BL, RB, RB}, _
{LT, BL, BL, RB, RB, TR, TR, LT, LT, BL, BL, RB}, _
{LT, LT, BL, BL, RB, RB, TR, TR, LT, LT, BL, BL}, _
{TR, LT, LT, BL, BL, RB, RB, TR, TR, LT, LT, BL}, _
{TR, TR, LT, LT, BL, BL, RB, RB, TR, TR, LT, LT} }
Dim colors(3, 3) As integer = { _
{white, black, black, white}, _
{white, white, black, black}, _
{black, white, white, black}, _
{black, black, white, white} }
DrawRect(0, 0, scrw, scrh, lightolive)
For x = 0 To 11
px = 54 + x * 34
For y = 0 To 11
py = 54 + y * 34
DrawRect(px, py, 24, 24, paleblue)
DrawEdge(px, py, colors(), edges(y, x))
Next y
Next x
Sleep