Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

コンパイルエラーが直せません。

今robocodeのソースをかいているのですが、コンパイルエラーが出てしまい解決できません。
package ??????;
import robocode.*;
public class kadai22 extends Robot
{

    public void run() {
double px = getX;
double py = getY;
double w = getBattleFieldWidth()/2;
double h = getBattleFieldHeidgt()/2;
double x = px - w;
double y = py - h;
        while(true) {
setTurnRight(10000);

setMaxVelocity(5);

ahead(10000);
}
}
}

申し訳ございませんがpackage名だけ伏せさせていただきます。

このソースをコンパイルしたら、シンボルを見つけられませんというエラーが5つ出てきます。
/Users/??????/robocode/robots/???????/Kadai22.java:8: エラー: シンボルを見つけられません
double px = getX;
            ^
  シンボル:   変数 getX
  場所: クラス Kadai22
/Users/?????/robocode/robots/?????/Kadai22.java:9: エラー: シンボルを見つけられません
double py = getY;
            ^
  シンボル:   変数 getY
  場所: クラス Kadai22
/Users/?????/robocode/robots/?????/Kadai22.java:11: エラー: シンボルを見つけられません
double h = getBattleFieldHeidgt()/2;
           ^
  シンボル:   メソッド getBattleFieldHeidgt()
  場所: クラス Kadai22
/Users/?????/robocode/robots/?????/Kadai22.java:15: エラー: シンボルを見つけられません
setTurnRight(10000);
^
  シンボル:   メソッド setTurnRight(int)
  場所: クラス Kadai22
/Users/?????/robocode/robots/?????/Kadai22.java:17: エラー: シンボルを見つけられません
setMaxVelocity(5);
^
  シンボル:   メソッド setMaxVelocity(int)
  場所: クラス Kadai22
エラー5個
警告1個
Compile Failed (1)

自分が今やりたいことは、ロボットの初期位置とフィールドの半径との差の分の距離で円運動するロボットを作りたいと思っているのですがうまくいきません。

どうか教えていただきたいです。

5

回答

4153

閲覧

5件の回答

評価

0

まずは自分で調べてみる。
それで試してみた結果も一緒に書いて質問する。
覚えておこうな。

評価

0

宣言してない変数が何故使えると思ったんだ?
基礎を理解してないなら入門書一冊読んでからプログラミングしたほうがいい。

評価

30

すいません。エラー直すことができました。
基礎的な間違いですいません。

import robocode.AdvancedRobot;
import robocode.HitWallEvent;
public class Kadai22 extends AdvancedRobot
{
int getX,getY,height,width,ahead;
    public void run() {
double px = getX;
double py = getY;
double w = getBattleFieldWidth()/2;
double h = getBattleFieldHeight()/2;
double x = w - px;
double y = h - py;
        while(true) {
 setTurnRight(x);
 setTurnRight(y);
 
ahead(100000);


setMaxVelocity(5);
}
}
これは書き直したソースです。
フィールドの半径と初期位置からの距離の分円運動させたいのですがどうやったらいいのかわかりません。
 setTurnRight(x);
 setTurnRight(y);
この書き方しか思い浮かばずやってみたのですが思ったように動作させられませんでした。

教えていただけないでしょうか。

評価

0

まず、プログラムは自分で「思った」とおりに動くものではなく、「書いた」とおりに動くものだ。
setTurnRightもaheadも、コンピュータには単なる文字列(コンピュータは英語を解さない)なので、そう書いただけで右へ回るわけでも前進するわけでもない。
これらの文字列に、コンピュータが分かる意味を持たせる(書く)、そのために勉強するのが、人間の仕事なんだよ。

また、こういうところで得られるのは手助けであって、代わりに書いてくれる人間ではない。
だから、「どうやったらいいのかわかりません」というような質問はまずい(してもいいが、回答は付きづらい)。
「この書き方しか思い浮かば」ないのは、勉強が全く足りていないからだということになる。

別にプログラムに限ったことではないが、高校以降は「勉強を教えてもらうところ」ではない。
せいぜい「勉強の取っかかりや注意点を教えてもらうところ」で、そこから先は自分で勉強するものだ。

ひとまずアプレットは置いて、初心者向けのページなり本なりで、最初から1つ1つ納得しながら進める方がいい。

評価

0

ああ、それと、自分のコードが間違ってるのが分かった、という場合にお詫びする必要はない。
回答する人間にとっては、それよりも質問者が先へ進んだということ自体がご褒美みたいなものだから。
解決したのでお礼を書く、名前を間違えた(ここじゃあまり起こらないが)、書かれてることスルーしてたのでお詫びする、あたりだったら分かるけどね。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。