###前提・実現したいこと
現在Javaの学習の一環で戦車を作成しています
そのなかで戦車のアクション数の算出を行うプログラムを書きたいと思っています
まず最初に以下が戦車の大まかな仕様です。必要なさそうな部分はのせていません。
移動
90度単位で方向転換できる(45度とかで止めることはできない)
90度方向転換する度に4リットルの燃料を消費する
前進と後退が可能
100m 進む度に4リットルの燃料を消費する(進むのは100m単位で150mで止まるということはできない)
動作させようとしてその動作に必要な最低単位の燃料が無い場合は動作しない
9リットルしかなくて 300m 前進しようとした場合、200m で停止し 8リットル消費する
砲
戦車には砲塔がついている
90度単位で360度無制限に回転することができる
90度回転する度に4リットルの燃料を消費する
戦車は砲弾を10発保持出来る
砲弾は装填されている順に発射される。発射時に選ぶことができない
下記いずれかの行動をする際に、アクション数が1加算される。
エンジン始動
本体90度方向転換、砲塔90度方向回転
100m前進 or 後進
発射
被弾
給油(※どれだけ給油しても1)
次に以下が実現したい内容です
初期戦車の100m南方に戦車ベータが配置されている。
この戦車が、東方向に X(m)、北方向に Y(m)、方位 D を向いた形で移動する際の、
最小のアクション数を算出するプログラムを記載せよ。
なお位置座標は、初期戦車の初期位置を基準とする。(X=0,Y=0)
例1:戦車ベータが東に100m(X=100)、北方向に100m(Y=100)、北向きの位置に移動するには最小アクション数は 5 となる。
(200m前進、右折、100m前進、左折)
戦車自体は出来上がっているのですがアクション数の算出が
現段階ではどのように実装すればいいのかのめどが立っていません。
正直計算の仕方もあいまいな状態で、メソッドとしてアクション数を取得するものを追加した方がいいのか、新たにclassを作成した方がいいのかもよくわかっていません。
移動したり方向転換するたびにアクション数が+1されるようにはしました。 ただ引数に目的地のx座標、y座標、向いている方角を入力して、例であれば「5」と返されるうなことをしたいです。
質問するのも初めてなので追加で必要な情報があれば教えてください。よろしくお願いします。
###試したこと
とりあえずコメントしていただいたように、目的地までの絶対値を100で割って
移動距離のアクション数を出してみました。(間違いがあれば教えてください)
しかし、次は旋回の回数をどう取得すればいいかで詰まってしまいました。
旋回の回数は1回か2回のどちらかということはわかっているのですが。
ド素人のコードですがレビューお願いします
//目的地までの最小アクション数を算出する //destinationX,Yはそれぞれ目的地の座標 //directionは最終的に向いていたい方角です //getPostion()は現在地を取得するメソッドです public int countAction(int destinationX, int destinationY, Direction direction) { int countAction = 0; int distanceX = Math.abs(destinationX - getPostionX()); int distanceY = Math.abs(destinationY - getPostionY()); countAction = countAction + (distanceY + distanceX) / 100; }
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/06/29 04:30
退会済みユーザー
2017/06/29 06:54
2017/06/29 07:06 編集
退会済みユーザー
2017/06/29 07:06
2017/06/29 07:10
退会済みユーザー
2017/06/29 09:45
2017/06/29 09:56
2017/06/29 09:59
退会済みユーザー
2017/06/29 23:50
2017/06/30 00:06
退会済みユーザー
2017/06/30 00:49