移動のコーディングで躓く:未経験無職ゲーム制作日記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のフローチャートとなんか違う気がする・・・
↑今まで勉強してきたフローチャート
広がり続けるチャートのコードってJavaでも書けるんですかね。
もうわからなさ過ぎて、昼寝をしても夢に出てきました(笑)
2.最後に
今日の日記は短いですが、悩んだ時間はかなり長かったです。
結局まだ答えは出ていません。
課題でも何でもない趣味なので、じっくり考えたいと思います。
今日も最後まで読んでいただきありがとうございました。
それではまた明日。