![]() |
|||||
| = | # | . | $ | * | |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
| Floor | Space | Wall | Goal | Package | Package On Goal |
| @ | |||
|---|---|---|---|
| Left | Right | Up | Down |
![]() |
![]() |
![]() |
![]() |
![]() | |||
| + | |||
|---|---|---|---|
| Left | Right | Up | Down |
![]() |
![]() |
![]() |
![]() |
![]() | |||
![]() | ![]() |
→ | ![]() | ![]() |
![]() | ![]() |
→ | ![]() | ![]() |
![]() | ![]() |
→ | ![]() | ![]() |
![]() | ![]() |
→ | ![]() | ![]() |
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
}
}