|
|
×[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
|
|
|
 |
|
|
 唐草模様がちょっと気になっています。 その他 | Q | 四角い連続した渦巻を描画するプログラムが課題ででています。 一つであれば、以下のようになりましたが、今日1日かかってても先に進めません。 ご伝授いただけないでしょうか。import java.awt.*;import java.applet.*;public class Kadai16 extends Applet { public void paint(Graphics g){ int x0, y0, x1=50, y1=50, l = 10; for (int i = 0; i < 9; i++){ x0 = x1; y0 = y1; if (i%4 == 0){ x1=x0+l*(i/2+1); y1=y0; } else if (i%4==1){ x1=x0; y1=y0+l*(i/2+1); } else if (i%4==2){ x1=x0-l*(i/2+1); y1=y0; } else { x1=x0; y1=y0-l*(i/2+1); } g.drawLine(x0, y0, x1, y1); } }}考え方は、テキストに書かれていますが(画像参照)・・・どうも理解できません。描きたいのは、画像の唐草模様を横に4つ並べるプログラムです。解説もつけていただけると大変助かります。 | | A | 基本的には貴方のソースを修正、利用しただけなので読めば分かるかと。public void paint(Graphics g) { draw(20,20,g); draw(130,20,g); draw(240,20,g); draw(350,20,g); } /** * 渦巻き模様一つを描く関数 * @param x 図形の左上の点の位置のx座標 * @param y 図形の左上の点の位置のy座標 * @param g Graphics */ private void draw(int x,int y,Graphics g){ int x0, y0, x1=20, y1=20, l = 10;//図形の左上の座標が0,0になるようにx1,y1を50から20に変更 for (int i = 0; i < 9; i++){ x0 = x1; y0 = y1; if (i%4 == 0){ x1=x0+l*(i/2+1); y1=y0; } else if (i%4==1){ x1=x0; y1=y0+l*(i/2+1); } else if (i%4==2){ x1=x0-l*(i/2+1); y1=y0; } else { x1=x0; y1=y0-l*(i/2+1); }g.drawLine(x0+x, y0+y, x1+x, y1+y); g.drawLine(100-x0+x, 40-y0+y, 100-x1+x, 40-y1+y);//右側の渦 } g.drawLine(50+x, y, 50+x, 40+y);//左右の渦をつなぐ }------------------------------------------------------追記public も privateも関数の動きに「全く関係なんてありません。」ただ、それらがあると関数の可視性が変化するのです。privateにすると他のクラスからその関数を呼び出せなくなる、その程度のことです。publicにしたかったらprivateをpublicに変えれば良いだけです。publicにすべき時というのはありますが、privateにすべき時というのはありません。全てを公開してしまってもプログラムする際ミスがなかったらいいのです。そのミスを減らすために外部から使われることのない関数、外部から使って貰ったら困る関数をprivateにすればいいんじゃない、という感じにテキトーに理解しておいたら十分です。今回はpaint関数以外からは呼び出されないだろうという(特に根拠はない)考えの下にprivateがついています。ついでに、この関数はクラスの状態に関係がないので、静的な関数に出来ます。だからstaticを付けても良いですね。(まだ理解できないならスルーしちゃって下さい。) | Webサービス by Yahoo! JAPAN唐草模様つる草がはったり、からんだりしているようすを図案化した模様。 九州新幹線は和風…181倍突破して試乗会 - 読売新聞おもしろ動画PR
|
|
|
 |
|
|
|
|
 |