Here's some code for a pushing puzzle where the rocks are confined to a small area.
You need to set up RoughFloor in PBTerrain.
Code:
module InterpreterFieldMixin
def pbPushThisSokoban
case $game_player.direction
when 2 # down
tag=$game_map.terrain_tag($game_player.x,$game_player.y+2)
when 4 # left
tag=$game_map.terrain_tag($game_player.x-2,$game_player.y)...