Code: Select all
REM 3D Checkerboard:
REM ported out of Source: https://www.khanacademy.org/computer-programming/3d-checkerboard/972365924
REM sB 5.6 / iOS 6.1 / iPhone 4
REM by Operator
REM added walls and bouncing...automated
REM sB 5.6 / iOS 10.1 / iPhone 6+
GRAPHICS
GRAPHICS CLEAR 1,0,0
init:
DIM wall(5) ' location of end walls
GOSUB drawplayer
scr_w = SCREEN_WIDTH()
scr_h = SCREEN_HEIGHT()
scr_w2 = scr_w/2
scr_h2 = scr_h/2
walkSpeedX = 10
walkSpeedY = 10
perspect = 200 '250
horizon = 180
tileWidth = 100
meX = 400
meY = 40
wall(1) = 700
wall(2) = 20
wall(3) = 600
wall(4) = -90
FIELD "info" TEXT "" AT 0,0 SIZE 320,20 RO
FIELD "info" FONT COLOR 1,1,1
FIELD "info" BACK ALPHA 0
TIME RESET
LOOP:
REFRESH OFF
GRAPHICS CLEAR 1,0,0
loop_count += 1
'drawGrid
FOR x = 0 TO 700 STEP tileWidth
FOR y = 0 TO 700 STEP tileWidth
IF y - meY > -tileWidth - 100 THEN
IF ((x/tileWidth + y/tileWidth)%2) THEN
FILL COLOR 0,0,0
ELSE
FILL COLOR 1,1,1
END IF
p1 = perspect/(perspect + y - meY)
x1 = scr_w2 + p1*(x - meX)
y1 = horizon + p1*scr_h2
p2 = perspect/(perspect + y - meY + tileWidth)
x2 = scr_w2 + p2*(x - meX)
y2 = horizon + p2*scr_h2
FILL QUAD x1,y1, x1+tileWidth*p1,y1, x2+tileWidth*p2, y2, x2,y2
END IF
NEXT y
NEXT x
IF meX > wall(1) THEN walkSpeedX=-walkSpeedX
IF meX < wall(2) THEN walkSpeedX=-walkSpeedX
IF meY > wall(3) THEN walkSpeedY=-walkSpeedY
IF meY < wall(4) THEN walkSpeedY=-walkSpeedY
meX += walkSpeedX
meY -= walkSpeedY
'DRAW TEXT meX&":"&meY AT 0,40
fps = INT(loop_count/TIME())
'FIELD "info" TEXT " Touch screen to navegate "&"FPS: "&fps
REFRESH
GOTO LOOP
drawplayer:
BUTTON "player" TEXT "⚽️" AT SCREEN_WIDTH()/2,SCREEN_HEIGHT()/2
RETURN