Super_Hippo wrote...
Add it to the Block class.
private Block[] tetromino = new Block[4];
int[][]line = {{1,1,1,1},
{0,0,0,0},
{0,0,0,0},
{0,0,0,0}};
int[][]thunder = {{1,1,0,0},
{0,0,1,1},
{0,0,0,0},
{0,0,0,0}};
int[][]pyramid = {{0,1,0,0},
{1,1,1,0},
{0,0,0,0},
{0,0,0,0}};
public MyWorld()
{
super(15, 20, 40);
addObject(new Block(), 10, 2);
}
public void create()
{
if (!moveTetromino(1))
{
moveTetromino(-1);
int[][][] layouts = { line, thunder, pyramid };
int[][] layout = layouts[Greenfoot.getRandomNumber(layouts.length)];
int x = Greenfoot.getRandomNumber(15);
int y = Greenfoot.getRandomNumber(3);
createTetromino(layout, x, y);
if (!moveTetromino(0)) gameOver();
}
}
public void createTetromino(int[][] layout, int x, int y)
{
int counter = 0;
for (int a=0; a <4; a++) for (int b=0; b<4; b++)
{
if (layout[a][b] == 1)
{
tetromino[counter++] = new Block();
addObject(tetromino[counter], x+b, y+a);
}
}
}
private boolean moveTetromino(int dir)
{
{
boolean result = true;
for (Block block : tetromino) result = result && block.fall(dir);
return result;
}
}
private void gameOver()
{
Greenfoot.stop();
}public boolean fall(int dir)
{
setLocation(getX(), getY()+dir);
return getObjectsAtOffset(0, 0, Block.class).isEmpty();
}create();
if (tetromino[0]==null || !moveTetromino(1))
create();
if (tetromino[0]==null || !moveTetromino(1))

public void createTetromino()
{
int[][][] layouts = { line, thunder, pyramid };
int[][] layout = layouts[Greenfoot.getRandomNumber(layouts.length)];
int x = Greenfoot.getRandomNumber(15);
int y = Greenfoot.getRandomNumber(3);
//everything which is in the createTetromino method right now goes here
}public void create()
{
if (!moveTetromino(1))
{
moveTetromino(-1);
createTetromino();
if (!moveTetromino(0)) gameOver();
}
}public MyWorld()
{
super(15, 20, 40);
createTetromino();
}if (layout[a][b] == 1)
{
tetromino[counter] = new Block();
addObject(tetromino[counter], x+b, y+a);
counter++;
}if (layout[a][b] == 1)
{
tetromino[counter] = new Block();
addObject(tetromino[counter], x+b, y+a);
counter++;
}public void create()
public void act()
public void create()
public void act()
private boolean moveTetromino(int dir)
{
boolean result = true;
for (Block block : tetromino) block.fall(dir);
for (Block block : tetromino) result = result && block.fall(0);
return result;
}return getObjectsAtOffset(0, 0, Block.class).size() == 1;