Programming C#

Sokoban

Image

= # . $ *
Floor Space Wall Goal Package Package On Goal

Sokoban

@
LeftRightUpDown

Sokoban on Goal

+
LeftRightUpDown

Move Left

→
→
→
→
if( (matrix[py, px - 1] == Floor) || (matrix[py, px - 1] == Goal)){
	if(matrix[py, px - 1] == Floor){
		matrix[py, px - 1] = SokobanLeft;
	}else{
		matrix[py, px - 1] = SokobanOnGoalLeft;
	}
	if(matrix[py, px] == SokobanLeft){
		matrix[py, px] = Floor
	}else{
		matrix[py, px] = Goal
	}
}
			
→
→
→
→
→
→
→
→
next = matrix[py, px - 1];
other = matrix[py, px - 2];
if( (other == Floor || other == Goal) && (next == Package || next == PackageOnGoal)){
	if(other == Floor){
		matrix[py, px - 2] = Package;
	}else{
		matrix[py, px - 2] = PackageOnGoal;
	}
	if(next == Package){
		matrix[py, px - 1] = Floor;
	}else{
		matrix[py, px - ] = PackageOnGoal;
	}
	if(matrix[py, px] == SokobanLeft){
		matrix[py, px] = Floor
	}else{
		matrix[py, px] = Goal
	}
}