Aha Tim ChaiがJava1824に挑戦。ボックスを押す4エンドポイントを判断する

アハティムチャイチャレンジ

1824.ボックスを押す4-終点を判断する

ここに画像の説明を挿入
ここに画像の説明を挿入

import java.util.Scanner;

/**
 * @author yinglongwu
 */
//1824. 推箱子4-判断终点
public class Main {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		char[][] map = new char[][]{
			{' ',' ',' ','#','#','#'},
			{' ',' ',' ','#','*','#'},
			{' ',' ',' ','#',' ','#'},
			{'#','#','#','#','O','#','#','#','#','#','#'},
			{'#','*',' ',' ','O','S',' ','O',' ','*','#'},
			{'#','#','#','#','#','O','#','#','#','#','#'},
			{' ',' ',' ',' ','#',' ','#'},
			{' ',' ',' ',' ','#','*','#'},
			{' ',' ',' ',' ','#','#','#'},
		};
		int Sx=4,Sy=5;
		int n = scanner.nextInt();
		String step = scanner.next();
		char[] stepArr = step.toCharArray();
		for (int i = 0; i < stepArr.length; i++) {
			switch (stepArr[i]) {
			case 'w'://小人S向上移动
				if (map[Sx-1][Sy]==' ') {//如果上边为空,直接走
					map[Sx][Sy]=' ';
					map[Sx-1][Sy]='S';
					Sx = Sx-1;
				}else if (map[Sx-1][Sy]=='O') {//如果上边是箱子
					if (map[Sx-2][Sy]==' ') {//如果箱子上边为空
						map[Sx][Sy]=' ';
						map[Sx-1][Sy]='S';
						map[Sx-2][Sy]='O';
						Sx = Sx-1;
					}else if (map[Sx-2][Sy]=='*') {//如果箱子上边是要到达的位置
						map[Sx][Sy]=' ';
						map[Sx-1][Sy]='S';
						map[Sx-2][Sy]='@';
						Sx = Sx-1;
					}
				}
				break;
			case 'a'://小人S向左移动
				if (map[Sx][Sy-1]==' ') {//如果左边为空,直接走
					map[Sx][Sy]=' ';
					map[Sx][Sy-1]='S';
					Sy = Sy-1;
				}else if (map[Sx][Sy-1]=='O') {//如果左边是箱子
					if (map[Sx][Sy-2]==' ') {//如果箱子左边为空
						map[Sx][Sy]=' ';
						map[Sx][Sy-1]='S';
						map[Sx][Sy-2]='O';
						Sy = Sy-1;
					}else if (map[Sx][Sy-2]=='*') {//如果箱子左边是要到达的位置
						map[Sx][Sy]=' ';
						map[Sx][Sy-1]='S';
						map[Sx][Sy-2]='@';
						Sy = Sy-1;
					}
				}
				break;
			case 's'://小人S向下移动
				if (map[Sx+1][Sy]==' ') {//如果下边为空,直接走
					map[Sx][Sy]=' ';
					map[Sx+1][Sy]='S';
					Sx = Sx+1;
				}else if (map[Sx+1][Sy]=='O') {//如果下边是箱子
					if (map[Sx+2][Sy]==' ') {//如果箱子下边为空
						map[Sx][Sy]=' ';
						map[Sx+1][Sy]='S';
						map[Sx+2][Sy]='O';
						Sx = Sx+1;
					}else if (map[Sx+2][Sy]=='*') {//如果箱子下边是要到达的位置
						map[Sx][Sy]=' ';
						map[Sx+1][Sy]='S';
						map[Sx+2][Sy]='@';
						Sx = Sx+1;
					}
				}
				break;	
			case 'd'://小人S向右移动
				if (map[Sx][Sy+1]==' ') {//如果右边为空,直接走
					map[Sx][Sy]=' ';
					map[Sx][Sy+1]='S';
					Sy = Sy+1;
				}else if (map[Sx][Sy+1]=='O') {//如果右边是箱子
					if (map[Sx][Sy+2]==' ') {//如果箱子右边为空
						map[Sx][Sy]=' ';
						map[Sx][Sy+1]='S';
						map[Sx][Sy+2]='O';
						Sy = Sy+1;
					}else if (map[Sx][Sy+2]=='*') {//如果箱子右边是要到达的位置
						map[Sx][Sy]=' ';
						map[Sx][Sy+1]='S';
						map[Sx][Sy+2]='@';
						Sy = Sy+1;
					}
				}
				break;
			default:
				break;
			}
		}
		
		if (map[1][4]=='@'&&map[4][1]=='@'&&map[4][9]=='@'&&map[7][5]=='@') {
			System.out.println("You Win!");
		} else {
			for (int i = 0; i < map.length; i++) {
				System.out.println(map[i]);
			}
		}
		
	}

}

ここに画像の説明を挿入

318の元の記事を公開 44のような 訪問者20,000以上

おすすめ

転載: blog.csdn.net/qq_43594119/article/details/105150591