@TylerN
A Tetris grid is 10x18

I'm gonna give this a go

I'll post up how to move each Tetromino as independent blocks
(one handy thing is that every Tetromino is made of 4 blocks)
Have you done TDK's tutorials? They're awesome
[edit]
damn tetris is hard

I'm going to have the active tetromino "float" on the grid in it's own array and then when it collides transfer its position to the grid and grab a new tetromino for the tetromino array
[edit]
This is as far as I've gotten (only square tetrominos)
`setup
hide mouse
sync on : sync rate 30
screenX=200 : screenY=50
size=20
`Make 10x18 grid
DIM grid(9,17)
`Define Colours
DIM colour(7)
black=0 : red=1 : orange=2 : yellow=3 : green=4 : cyan=5 : blue=6 : magenta=7
colour(black)=0
colour(red)=rgb(255,0,0)
colour(orange)=rgb(255,128,0)
colour(yellow)=rgb(255,255,0)
colour(green)=rgb(0,255,0)
colour(cyan)=rgb(0,255,255)
colour(blue)=rgb(0,0,255)
colour(magenta)=rgb(255,0,255)
`Make array for storing tetromino blocks
DIM tetromino(4,1)
x=0 : y=1
colour=0 : active=1
DO
if tetromino(0,active)=0
tetromino(0,active)=1
tetromino(0,colour)=rnd(6)+1
tetromino(1,x)=5 : tetromino(1,y)=0
tetromino(2,x)=5+1 : tetromino(2,y)=0
tetromino(3,x)=5 : tetromino(3,y)=0+1
tetromino(4,x)=5+1 : tetromino(4,y)=0+1
else
`get input
r=rightkey() : l=leftkey()
`check for horizontal space
move=0
for block = 1 to 4
newX = tetromino(block,x)+r-l
tY= tetromino(block,y)
if newX>=0 and newX<=9
if grid(newX,tY)= 0 then inc move,1
endif
next block
`if horizontal space, move tetromino
if move=4
for block = 1 to 4
tetromino(block,x) = tetromino(block,x)+r-l
next block
endif
`check for space below tetromino
drop=0
for block = 1 to 4
checkx=tetromino(block,x)
checky=tetromino(block,y)+1
if checky<=17
if grid(checkx,checky)= 0 then inc drop,1
endif
next block
`If space below, drop tetromino
if drop=4
for block = 1 to 4
tetromino(block,y)=tetromino(block,y)+1
next block
else
for block = 1 to 4
grid(tetromino(block,x),tetromino(block,y))=tetromino(0,colour)
next block
tetromino(0,active)=0
endif
endif
`** Display **
for gy=0 to 17
for gx=0 to 9
ink colour(grid(gx,gy)),0
box screenX+(gx*size),screenY+(gy*size),screenX+(gx*size)+size,screenY+(gy*size)+size
next gx
next gy
for block = 1 to 4
ink colour(tetromino(0,colour)),0
box screenX+(tetromino(block,x)*size),screenY+(tetromino(block,y)*size),screenX+(tetromino(block,x)*size)+size-1,screenY+(tetromino(block,y)*size)+size
next block
`border
ink rgb(255,255,255),0
line screenX-1,screenY,screenX-1,screenY+(size*18)
line screenX+1+(size*10),screenY,screenX+1+(size*10),screenY+(size*18)
line screenX-1,screenY+(size*18),screenX+1+(size*10),screenY+(size*18)
sync
LOOP
This is really difficult

I haven't even worked out how to rotate them yet
"You must be someone's friend to make comments about them." - MySpace lied.
