見出し画像

移動のコーディングで躓く:未経験無職ゲーム制作日記3日目

こんばんは。さいとうです。
何回躓いてんだ、って感じですがまたもや壁にぶつかりました。

1.躓いた内容

昨日の日記である程度流れは把握して、メソッド作りは大体できました。

	//1
    public boolean checkConfirmed(int x, int y, int[][] confirmed) {
		if (confirmed[y][x] == 0) {
			return true;
		} else {
			return false;
		}
	}

    //2
	public void checkEntryCost(int[][] entryCost, int x, int y, int[][] mapBlock) {
		if (mapBlock[y][x] >= 7) {
			entryCost[y][x] = 10;
		} else if (mapBlock[y][x] >= 5) {
			entryCost[y][x] = 2;
		} else if (mapBlock[y][x] >= 3) {
			entryCost[y][x] = 1;
		} else {
			entryCost[y][x] = 0;
		}
	}

    //3、4
	public void checkArea(int[][] entryCost, int x, int y, int moveP, int[][] confirmed, int[][] enterable) {
		if (moveP >= entryCost[y][x]) {
			enterable[y][x] = 0;
			moveP -= entryCost[y][x];
			confirmed[y][x] = 1;
		} else {
			enterable[y][x] = 1;
			confirmed[y][x] = 1;
		}
	}

    //5
	public void checkNextBlock(int[][] entryCost, int direction, int x, int y, int moveP, int[][] confirmed,
			int[] searth) {
		if (direction != 8) {
			y++;
			direction = 2;
		}
		if (direction != 2) {
			y--;
			direction = 8;
		}
		if (direction != 4) {
			x++;
			direction = 6;
		}
		if (direction != 6) {
			x--;
			direction = 4;
		}
	}

変数の定義については無駄が多いような気がしますが、作りながら改善していきます。
大まかな流れは以下の通りです。
コードに記載している番号がそのまま下の定義のナンバリングです。

​①指定のマスはチェック済みかを確認。
②マップ上に存在する全種類の地形の進入コストを記載。
③キャラの残っている移動力から、指定マスへの進入が可能か確認。
④進入コストが払えるなら、移動可能であることをマーク。
 (不可なら不可であるとマーク。)
 指定マスがチェック済みであるとマーク。
⑤指定マスから1マス隣りへ移る。(来た道は確認しない。)

昨日の日記で記載したこの内容をコードで書きました。
で書いている途中で気づいたんですが、この内容をわかりやすく図解するとこうなります。

移動アルゴリズムフローチャート

一番左のチャートだけしっかり書いていますが、すべての分岐で三つに条件が分かれていきます。
そして移動力の分だけ階層を持つので、今まで勉強してきたJavaのフローチャートとなんか違う気がする・・・

画像2

↑今まで勉強してきたフローチャート

広がり続けるチャートのコードってJavaでも書けるんですかね。
もうわからなさ過ぎて、昼寝をしても夢に出てきました(笑)

2.最後に

今日の日記は短いですが、悩んだ時間はかなり長かったです。
結局まだ答えは出ていません。
課題でも何でもない趣味なので、じっくり考えたいと思います。

今日も最後まで読んでいただきありがとうございました。
それではまた明日。

この記事が気に入ったらサポートをしてみませんか?