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