Exemple #1
0
void Tetris::moveHorizontallyBy(int xMovement){
	int newX = this->currentTetromino.getX() + xMovement;
	Tetromino newTetromino = Tetromino(this->currentTetromino);
	newTetromino.setX(newX);
	if(isTetrominoActionValid(newTetromino)){
		this->currentTetromino = newTetromino;
	}
}
Exemple #2
0
//each clock iteration will move the block along the y-axis
void Engine::clock()
{
	Tetromino activeBlock = _tetromino;
	activeBlock.move(0,1);

	//block has not hit wall or another block
	if(!_grid.collides(activeBlock))
	{
		_tetromino = activeBlock;
	}
	//update the grid and create a new tetromino
	else
	{
		_grid.join(_tetromino);
		_grid.removeLines();
		//create new block
		_tetromino = Tetromino(Tetromino::Block(rand() % 7)); 
		if(_grid.collides(_tetromino)) //check for collision at the top
		{
			restart();
		}
	}
}
Exemple #3
0
//redraw grid and block
void Engine::restart()
{
	_grid = Grid();
	_tetromino = Tetromino(Tetromino::Block(rand()%7));
}