ここから本文です

javaの勉強をしている者です。さっそくですが、今課題でコッホ雪片を角度、大きさ...

BeCkYさん

2012/1/2409:27:00

javaの勉強をしている者です。さっそくですが、今課題でコッホ雪片を角度、大きさ、数ともにユーザーがクリックと数字入力のみで設定しながら作れるというプログラムを作成しています。

(Jパネル上にコンボボックス、角度、大きさ、数を入力するテキストフィールドはあります)
課題には基本のコードはもう書かれていて、それに足りないコードを書き足していきます。恥ずかしながら第1段階ですでに詰まっています。
今はクリック毎にたった1つだけの四角形がクリックした場所に現れるだけですが、それをArraylistとループを使ってユーザーがクリックする度に図形の数が増えていく、というように変えたいのです。四角形はMyShapeというクラスでgetX,getY, drawメソッドを使ってすでに作られるように指定されています。
とりあえずArraylistのコード(ArrayList <MyShape> shapes = new ArrayList<MyShape>();)はdrawingPanelのクラス内に打ちましたが、どこにshapes.add()を加えればいいのかわからないし、.addの後の()内に入るものもわかりません。その上forループの内容をどのように書いたらいいのかもわかりません・・・
forループは"public void paintComponent(Graphics g) {}"と"public void mouseClicked( MouseEvent e ) {}"の中に加えればいい、というのは漠然とわかってはいるのですが・・・

こちらに質問するのも、Javaを勉強するのも初めてなので的外れな事を言っているかもしれませんが、どうぞ助言お願いいたします。

補足わからないです・・・もしただの配列でいいのなら、枠の数を指定する事が出来るから、その枠数に達するまでfor loopを使えばいいのかな、と思っているのですが・・・正直Arraylistの事を色々な講座サイトさんで見てきたのですが、Stringやintなどを枠にaddして、それを出力するという簡単なものしかなくて、図形描画にどう組み合わせたらいいのか全くわかりません。
日本語でもいいので答えを、というのすら出来て無くて本当にすみません

閲覧数:
287
回答数:
1
お礼:
250枚

違反報告

ベストアンサーに選ばれた回答

mar********さん

編集あり2012/1/2411:56:38

har_non14さん

コッホ雪片ってこれ(http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%83%E3%83%9B%E6%9B%B2%E...ですか?

これを書くのに、四角をかくのって必要なんですか?

私なりにアルゴリズムを考えると、
------------------
1.片を三分割にする
2.三つに分けた真ん中に正三角形を描く
3.真ん中の線を消す
------------------
↑これが、それぞれの辺で永遠に?繰り返されればOKなんですよね、きっと。
注※正しいアルゴリズムかどうかは知りません!

でも、まずは、
------------------
ユーザーがクリックする度に図形の数が増えていく
------------------
を実現しないといけないんですけど、
その為には
・ユーザのクリック数を記憶する
・複数図形を描く
ことが必要です。

さて、質問者様は、
ユーザのクリック数を記憶
することができますか?
どうしたら記憶できるかなーと思いますか?
ソースコードじゃなく、日本語でもいいので、
補足で答えてもらえればナーと思います。

次に、質問者様は、
複数の図形を描くことはできますか?

あと、mouseClickedがいつ呼ばれるかとか、
プログラムがどう実行されていくのか、
今あるプログラム、把握できていますか?

あとは~…
forループについてはここを見ましょう。
http://www.javaroad.jp/java_control1.htm

ArrayListについてはここです
http://www.javaroad.jp/java_collection2.htm
※これをどういう風に使おうとしているか、
日本語でいいので書いてみてくださいね。


プログラムを書こうとすると、
すぐ「Javaで」書きたくなるんですが、
結局日本語で説明できないことはプログラムでもできないので、
「何がしたくて」「何を使って」「どういう処理をするのか」
を、「日本語で」まずは整理してください。

補足への回答:
>もしただの配列でいいのなら、枠の数を指定する事が出来るから、その枠数に達するまでfor loopを使えばいいのかな
枠、って何の枠でしょう?

ArrayListが何か、がわかっていない気がします。
ArrayListは、配列と同じで、「要素を格納するためのもの」ですよ。

>Stringやintなどを枠にadd
文字列や数字を枠に追加する…はて、何のことを言っているのでしょうか?
枠…?

ぐっちゃぐちゃになってきたので、
整理しましょう。

これだけにします。
1.まず、今あるプログラム、理解できていますか?

もう補足を使い切ってしまっているので、
新しく質問しなおしましょう。

で、今あるプログラムの、
どこが理解できていないか、教えてください。

質問した人からのコメント

2012/1/31 18:47:58

基礎からやり直してみたらなんとかなりました。記載のURLもとても参考になりました^^どうもありがとうございました!

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる