Peripheral drift illusion: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) m (syntax highlighting fixup automation) |
(Added XPL0 example.) |
||
Line 578: | Line 578: | ||
var Game = PeripheralDrift.new()</syntaxhighlight> |
var Game = PeripheralDrift.new()</syntaxhighlight> |
||
=={{header|XPL0}}== |
|||
The illusion is more effective when the image is displayed full-screen. |
|||
{{trans|Wren}} |
|||
<syntaxhighlight lang "XPL0">proc DrawRect(X0, Y0, W, H, Color); |
|||
int X0, Y0, W, H, Color, Y; |
|||
for Y:= Y0 to Y0+H-1 do |
|||
[Move(X0, Y); Line(X0+W-1, Y, Color)]; |
|||
proc DrawEdge(PX, PY, Colors, Edge); |
|||
int PX, PY, Colors, Edge; |
|||
int C; |
|||
[C:= Colors(Edge); |
|||
Move(PX, PY); |
|||
Line(PX+11, PY, C(0)); |
|||
Line(PX+11, PY+11, C(1)); |
|||
Line(PX, PY+11, C(2)); |
|||
Line(PX, PY, C(3)); |
|||
]; |
|||
def ScrW=256, ScrH=256; |
|||
def LT=0, TR=1, RB=2, BL=3; \left top, etc. |
|||
def White = $ffffff, Black = 0; |
|||
def LightOlive = $d3d004, PaleBlue = $3250ff; |
|||
int Edges, Colors, X, Y, PX, PY; |
|||
[SetFB(ScrW, ScrH, 24); |
|||
\Signifies white and black edges on the blue squares |
|||
Edges:= [ |
|||
[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] ]; |
|||
Colors:= [ |
|||
[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 do |
|||
[PX:= 27 + X*17; |
|||
for Y:= 0 to 11 do |
|||
[PY:= 27 + Y*17; |
|||
DrawRect(PX, PY, 12, 12, PaleBlue); |
|||
DrawEdge(PX, PY, Colors, Edges(Y,X)); |
|||
]; |
|||
]; |
|||
]</syntaxhighlight> |
|||
{{out}} |
|||
[[File:PdriftXPL0.png]] |