Computer Science Canada

Tetris (again)- giving a value to a 2d array

Author:  Neja [ Mon May 24, 2004 8:19 pm ]
Post subject:  Tetris (again)- giving a value to a 2d array

I have my grid for tetris which looks something like this:

code:

var block : array 0 .. 9, 0 .. 17 of int
var gridy, gridx : int := 30

for count : 0 .. 17 & Array grid.
    for count2 : 0 .. 9
        block (count2, count) := 0
    end for
end for

for counter : 1 .. 18 & Actual grid.
    gridy := gridy + 20
    Draw.Line (30, gridy, 230, gridy, 3)
end for
for counter : 1 .. 10
    gridx := gridx + 20
    Draw.Line (gridx, 30, gridx, 390, 3)
end for
Draw.Box (30, 30, 230, 390, 3)


I've also given all my shapes (the T,Ls,square,Zs and line) values (i.e. block (1,1):=1)

I've been able to have them drawn on my grid using coordinates as follows:

code:

var x,y:int
*y := -1
 x := -1
 for dropy : 1 .. 17
 for count : 31 .. 371 by 20
 y := y + 1
 x := -1
 for count2 : 31 .. 211 by 20
 x := x + 1
 if block (x, y) = 1 then
 Draw.Fill (count2, count, 2, 3)
 end if
 end for
 end for

 end for


- but I find this method inconveniant because I have a more difficult time manipulating the shapes as they fall or get rotated. I've tried using my block array to manipulate the shapes, but it isn't working and I can't figure out why:

code:

var x,y:int
x := 32
y := 32
for count : 0 .. 17
    y := y + (count * 20)
    x := 32
    for count2 : 0 .. 9
        x := x + (count2 * 20)
        if block (count2, count) = 1 then
            Draw.Fill (x, y, 2, 3)
        end if
    end for
end for


So, I suppose the general question is how do I manipulate my shapes?

Author:  Andy [ Tue May 25, 2004 9:38 am ]
Post subject: 

i just did hundreds of if statements since i did it the stupid way and used procs to draw the shapes... a really good way to to it is to simply draw them on seperate 2d arrays and just copy them over... better yet use a 3d array of records containing the previous and next block's allocation.


: