質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

0回答

466閲覧

車の自動操縦で平均スコアを15以上の獲得する

mokamaron

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2021/04/21 10:25

前提・実現したいこと

車を自動で動かし、旗を取ってポイントを稼ぐプログラミングで、10000回試行し、平均15以上のスコアを取得したいのですが、私のアイデアでは10が限界でそれ以上いけません。解決策をもらいたいです。

該当のソースコード

Java

package simplerace.x;
import simplerace.*;

public class AI implements Controller, Constants {

public void reset() {}

public int control (SensorModel inputs) {
int command = 0;
double speed = inputs.getSpeed();
double angle = inputs.getAngleToNextWaypoint();
double carPosi = Math.sqrt( Math.pow(inputs.getPosition().x,2.0) + Math.pow(inputs.getPosition().y,2.0) );
double tarPosi = Math.sqrt( Math.pow(inputs.getNextWaypointPosition().x,2.0) + Math.pow(inputs.getNextWaypointPosition().y,2.0) );
double tardis = Math.sqrt(Math.pow((inputs.getNextNextWaypointPosition().x - inputs.getNextWaypointPosition().x),2.0) + Math.pow((inputs.getNextNextWaypointPosition().y - inputs.getNextWaypointPosition().y) , 2.0));
double carX = inputs.getPosition().x;
double carY = inputs.getPosition().y;
double distance = inputs.getDistanceToNextWaypoint();
//Double v = Math.sqrt(Math.pow(inputs.getVelocity().x , 2.0) + Math.pow(inputs.getVelocity().y , 2.0));//車の速度を計算する

if(angle>0){//目標との角度が0以上なら旗が正面より左、ハンドルを左に切りながらアクセル command = 6;

}else{//それ以外なら右に切りながらアクセル
command = 8;

}

if(speed >= 6.5){
command = 1;
//System.out.println(speed);
}

if(tardis < 100 && speed >= 3 && distance <= 0.5){
command = 1;
}
//System.out.println(speed);
return command;
}
}
別のファイルにcommandの値を渡すことで、車を動かします。
commandの値は
1ブレーキ
3ハンドルを左に切る
4何もしない
5ハンドルを右に切る
6左に切りながらアクセル
7アクセル
8右に切りながらアクセル

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2021/04/21 10:29

なにをどうしたらスコア取れるんでしょうか
mokamaron

2021/04/21 10:35

車を自動操縦させて旗に触れることでスコアを獲得することができます。angleが車の正面から旗までの角度であり、その値が正であれば車の正面から左の方向に旗が存在していると言うことなのでその方向に向かってハンドルを切りながらアクセルを回し側に向かって進むと言う単純なコードしかできませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問