func (p *Piece) collides(field *Field, x, y int, angle Angle) bool {
	size := len(p.blocks)
	for i := 0; i < size; i++ {
		for j := 0; j < size; j++ {
			if field.IsBlocked(x+i, y+j) && p.isBlocked(i, j, angle) {
				return true
			}
		}
	}
	return false
}
func (p *Piece) collides(field *Field, x, y int, angle Angle) bool {
	size := len(p.blocks)
	for i := 0; i < size; i++ {
		for j := 0; j < size; j++ {
			if field.IsBlocked(x+i, y+j) && p.isBlocked(i, j, angle) {
				return true
			}
		}
	}
	return false
}
func ( p * Piece ) collides ( field * Field , x , y int , angle Angle ) bool { size := len ( p . blocks ) for i := 0 ; i < size ; i ++ { for j := 0 ; j < size ; j ++ { if field . IsBlocked ( x + i , y + j ) && p . isBlocked ( i , j , angle ) { return true } } } return false }
// collides returns a boolean value indicating whether
// the piece at (x, y) with the given angle would collide with the field's blocks.
collides returns a boolean value indicating whether the piece at ( x y ) with the given angle would collide with the field s blocks .