
次のJAVAのプログラムソースコードを教えてください。
10匹のタートルが六角形を描く競争をするプログラムで、どのタートルが次の辺を描くかはランダムに決め、いずれかのタートルが六角形を描き終わったら、プログラムを終了するものとします。
具体的には0~9の乱数を発生させ、出た番号(添字)に相当するタートルに次の辺を描かせて、どのタートルが一番早く六角形を描き終わるかを競争するプログラムです。
public class Kyousou {
public static void main(String[] args){
TurtleFrame f = new TurtleFrame(600,300);
Turtle[] hm = new Turtle[10]; // 配列オブジェクトを生成
for(int i = 0 ; i < 10; i++){
hm[i] = new Turtle(i * 50 + 25,150,0); // タートルを生成,配列の各要素に代入
f.add(hm[i]);
}
for(int j = 0; j < 6; j++){
for(int i = 0; i <10; i=(int)(Math.random()*10)){
hm[i].fd(10); // hm[i] に代入されている
hm[i].rt(360/6); // タートルに対するメソッド呼び出し
}
}
}
}
たぶんこれにbreak文をつけ加えればいいと思うのですが。どこにどうつければよいのかわかりません。お願いします。
No.1ベストアンサー
- 回答日時:
>for(int j = 0; j < 6; j++){
> for(int i = 0; i <10; i=(int)(Math.random()*10)){
> hm[i].fd(10); // hm[i] に代入されている
> hm[i].rt(360/6); // タートルに対するメソッド呼び出し
> }
>}
↑でおそらく
hm[i].fd(10);←10歩前進
hm[i].rt(360/6);←60度方向転換
としているのでしょう。
for(int i = 0;i < 10;i = (int)(Math.random()*10)){
}
↑のfor文は無限ループになりますね。
だからこの中にbreakを入れたいんでしょうけど…
while(true){
hm[i].fd(10); // hm[i] に代入されている
hm[i].rt(360/6); // タートルに対するメソッド呼び出し
}
とする方が分かり易いかな。
(たぶん…個人差かもしれませんが。)
???
for(int j = 0;j < 6;j++){
}
↑は一体???
変数jって外側のfor文の中で使われていませんよね?
どう回すつもりなんすか?
とりあえずbreakですが、
内側のfor文で
hm[i].fd(10);←10歩前進
hm[i].rt(360/6);←60度方向転換
の後にそれぞれの亀について正6角形が書き終わっているかどうかを判断して、
書き終わってる亀がいたらbreakすればいいでしょう。
たとえば
--------------------------------------------------
boolean 書き終わった亀がいるかフラグ = false; //初期値false:いない
for(int k = 0;k < hm.length;k++){
if(hm[k].書き終わったか()){
//書き終わった
書き終わった亀がいるかフラグ = true; //true:いる
}
}
if(書き終わった亀がいるかフラグ == true){
break;
}
--------------------------------------------------
を入れる感じでしょうか。
Turtleクラスに
書き終わったか()メソッド
がなければ、
int[] Turtleクラスのfdメソッドが呼ばれた回数 = new int[hm.length];
↑の配列のindexはhmのindexに対応。
の配列などを用意しておいて、fdが呼ばれるたびにカウントアップすればいいでしょう。
で、
if(Turtleクラスのfdメソッドが呼ばれた回数[k] == 6){
break;
}
とするような感じで。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JAVA エラー 式の開始が不正で...
-
「配列定数は、イニシャライザ...
-
式の型は配列型で int に解決済...
-
JavaScriptの変数をjavaのメソ...
-
InputStream.read()でタイムア...
-
javaで質問です。 文字列2023/2...
-
JScrollPaneで、表示がおかしく...
-
JavaScriptを使ってロト6の当...
-
JavaScriptとVBScriptに関して
-
JSPでHashMap・配列の変数の値...
-
eclipseに記述したjavaファイル...
-
javaのコンパイルエラーについ...
-
ループ処理の際、最後だけ","を...
-
オブジェクトの中のプロパティ...
-
strutsでlist型の入力を行うには
-
StrutsでJSPからListを受け取り...
-
requestの値が削除されません…
-
VBAで配列の計算
-
System.err. printlnとSystem.o...
-
Javaを使って、string型の年月...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「配列定数は、イニシャライザ...
-
C#で実行時にメソッドの返り値...
-
メインが含まれていません
-
(Swing)JTextFieldを半角のみ入...
-
javaでcsvファイル読込時の改行...
-
式の型は配列型で int に解決済...
-
JAVA エラー 式の開始が不正で...
-
C言語からJavaに書き換えの質...
-
前の月を取得したいです。
-
行の途中から読み込む方法
-
素数のみの足し算
-
Java 初心者 int型の取り扱い方
-
共有メモリについて
-
DataSet(DataTable)の使い方
-
c# デリゲート関連の命名について
-
先入れ先出し法のプログラミン...
-
java spring でエラーが出て困...
-
JAVAでCの関数ポインタのような...
-
誰か~誰か~誰か~一生のお願...
-
いまいちfor文が分かりません ...
おすすめ情報