• ベストアンサー

java アプレット

javaのアプレットについてですが、下のURLの16角のダイヤモンド図形で、 URLのソースのように、繰り返し描画せず、色もつけないで、単純に16個の頂点を持つ ダイヤモンド図形を描画する場合、URLのソースをどういじればよいのでしょうか。 ソースコードをそぎ落として、16頂点のダイヤモンド図形を単純に描画するコードを ぬきとっていただけませんでしょうか。 よろしくお願いします。 http://www.piclist.com/images/www/hobby_elec/java24_2.htm

  • Java
  • 回答数2
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • maiko0318
  • ベストアンサー率21% (1483/6970)
回答No.2

//繰り返さないならアプレットでなくてもいいのでmainにしてあります。 //結果はc:\test.jpgにできます。 import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; import java.lang.Math; public class Test9 { public static void main(String[] args) { int r=100; int n = 16; int x, y, x1, y1; try { BufferedImage image=new BufferedImage(r*2+10,r*2+10,BufferedImage.TYPE_INT_RGB); Graphics2D g2d=image.createGraphics(); g2d.setBackground(Color.WHITE); g2d.clearRect(0,0,r*2+10,r*2+10); g2d.setColor(Color.BLACK); x1 = r; y1 = 0; for ( double i = 360.0 / n; i <= 360.0; i += 360.0 / n ) { x = (int) ( r * Math.cos( i * Math.PI / 180 ) ); y = (int) ( r * Math.sin( i * Math.PI / 180 ) ); g2d.drawLine( x1 + r + 5, y1 * (-1) + r + 5, x + r + 5, y * (-1) + r + 5 ); x1 = x; y1 = y; } ImageIO.write(image, "JPEG", new File("c:\\test.jpg")); } catch(Exception e) { e.printStackTrace(); } } }

qwewqwe
質問者

補足

回答ありがとうございます! このプログラムでは、正n角形をかくだけで、各頂点から各頂点に向けた線分がつくれないのですが、その点について教えていただくことはできないでしょうか

その他の回答 (1)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

そのプログラム、コメントも丁寧に書いてあるので、読めばわかると思うのですが。 例えば、線の色なら color = new Color( red,green,blue ); /* 線の色設定       */ とありますよね? red,green,blueを調べると red = (int) ( Math.random()*256 ); /* 赤色成分ランダム生成  */ green = (int) ( Math.random()*256); /* 緑色成分ランダム生成  */ blue = (int) (Math.random()*256); /* 青色成分ランダム生成  */ と、ランダムに決めているってありますよね?これを固定値にすれば、決めた色になるとわかりませんか? 例えば、繰り返し。 繰り返すには、ループ構造を使います。このプログラムではforとwhileが使われています。 ループの外にあれば、繰り返し実行されません。 このプログラムのループは、線の座標を計算するためのものと、描画を繰り返すためのものがあります。 描画を繰り返すループから、描画部分を外に出せば、1回した描画しなくなるはずです。

関連するQ&A

  • Javaアプレットのズームインズームアウトについて

    質問させていただきます。 結論から言うと 「Javaアプレットにおいてマウスホイールを使ってのズームインズームアウトは可能か。」 ということです。 今Javaアプレットでオセロゲームをつくっているのですが ウィンドウが開き、その中のViewをマウスホイールでズームインズームアウトしたいと思っています。 しかし、調べてみてもなかなか求めているような参考サイトを見つけられません。 (MouseWheel イベント、MouseWheel クラスなど調べました。) そこでもしわかる方がいれば下記のことを教えていただけないでしょうか? ・そもそもJavaアプレットにおいてマウスホイールを使ってのズームインズームアウトは可能か。 ・もし可能なのであれば、どのようにソースコードを記述するとそれを実現することができるのか。 (下記サイトのオセロゲーム以外のソースコードでも全然構いません。できるのであれば何でも。) ・またそれに関した参考サイトのURL。 ・その他、気づいた点やきっかけとなるヒント等 諸々。 このサイトのソースをそのまま使っています。 http://ext-web.edu.sgu.ac.jp/nikku/nikkunisemi/nikkunisotuken2003/03_study/03_product/03_nishiduka/java4_3.html ソースを貼ろうとしましたが、字数オーバーのため載せることができません。 試していただける方がいるのであれば、上記サイトを参考にしてもらえれば幸いです。 根本的な質問としてはJavaアプレット全般のため他のアプリのソースコードを教えて頂いても全然構いません。 周りの方や知識人に聞いても誰もわかりませんでした。わかる方がいたら教えてください。 お願い致します。助けてください。 初めての書き込みのため拙い部分もあるかもしれませんがよろしくお願いします。

    • ベストアンサー
    • Java
  • このjavaスクリプトをjavaアプレットで表現するには

    http://bunjin.com/java/hanabi_samp.html http://bunjin.com/java/hanabi.html (ソース) この花火のjava scriptを、クリックしたところで表示されるようなjavaアプレットにしたいのですが、どう記述すれば良いのでしょうか? java scriptが読めないのでわかりません…。 どなたか分かる方お願いします。

  • Javaのアプリケーションでの円の描画について。

    Javaのアプリケーションでの円の描画について。 EcipseでJavaプログラムを書いています。 まだ始めたばかりでわからないことだらけなんですが、JavaにはJavaアプリケーションとJavaアプレットの2種類の書き方(?)があることを知りました。 作りたいものに向かってJavaアプリケーションの書き方で最初から書いていたんですが、円を表示させるプログラムのところで引っかかりました。 Javaアプリケーションの書き方では円の描画方法は見つからなかったのです。 Javaアプレットの書き方では見つかりました。 ということは1からJavaアプレットの書き方で作り直さなくてはいけないでしょうか? ここまで出来たのは結構長いプログラムなのですが・・・。 どうかアドバイスお願いします。

    • ベストアンサー
    • Java
  • javaでアプレットの描画が出来ない

    ものすごく初心者な質問で申し訳ありません。 jdk-1.6.0をVine linux 3.2にインストールして使用しています。 javaのソースを書いてコンパイルするなどには問題は無いのですが (今のところ) 以下のようなアプレットを試してみたところアプレットの窓は起動しますが 描画がされません。 import java.applet.Applet; import java.awt.Graphics; /* <applet code="test" width=200 height=200> </applet> */ public class test extends Applet { public void paint(Graphics g) { g.drawLine(10,10,180,110); } } 以上のコードを %javac test.java %appletviewer test.java としました。窓は起動し、アプレットが開始された、と表示されるのですが 線が見当たりません。 (ちなみに教科書にあるサンプルなので間違いがあったとしたら写し間違いです) 線が表示されるはずなんですが、表示されないのです。 まども起動するので何かJAVAを使う環境として何か細かい設定を間違って いるのかと思い質問しました。 分かる方がいらっしゃったら教えてください。

  • アプレットにパラメータを渡す方法

    Javaのアプレットにパラメータを渡し、Javaアプレットでその引数を受け取る具体的なコードが知りたいのですが、何かよいサンプルはありますか?

    • ベストアンサー
    • Java
  • アプレットをhtmlに乗せると動かなくなります…

    こんにちは。わざわざ見て下さっている方ありがとうございます! 作ったアプレットがアプレットビューアの上でなら動くのに、htmlに乗せると「読み込みに失敗しました」になってしまいます。 私は本当に初心者でして、何をお伝えすればいいのか分からないのですが、htmlのアプレットを右クリックした時に出てくる[Javaコンソール]というものが限りなく怪しいかなと思いましたので、下にペーストしておきました。関係なかったらすみません。 Class: class ThreeDMaze ClassLoader: sun.plugin.security.PluginClassLoader@10dd1f7 java.security.AccessControlException: access denied (java.io.FilePermission .\mapFile read) at java.security.AccessControlContext.checkPermission(Unknown Source) at java.security.AccessController.checkPermission(Unknown Source) at java.lang.SecurityManager.checkPermission(Unknown Source) at java.lang.SecurityManager.checkRead(Unknown Source) at java.io.File.list(Unknown Source) at ThreeDMaze.init(ThreeDMaze.java:70) at sun.applet.AppletPanel.run(Unknown Source) at java.lang.Thread.run(Unknown Source) どうか宜しくお願いします!

    • ベストアンサー
    • Java
  • 勝手にアプレットが停止します

    アプレットが動作不良となる時があます。 アプレットの定周期(1秒、2秒など)の 更新描画にて、repaint()メソッドを呼び出していますが、 Javaからupdate()メソッドが呼び出されず、画面の 描画処理が行われていない状態となっていようです。 調べたところ、アプレットのrepaint()メソッド を呼び出すと、Javaからupdate()メソッドが 実行され、paint()メソッドに記述している 各描画処理が行われるはずですが、下記のように 実行されていないようです。 非常に困っていますので、どなたかご教授お願いします。    repaint()     ↓    update()  ←なぜかJavaから実行要求が来ない     ↓    paint()

    • ベストアンサー
    • Java
  • javaでの電卓の作り方

    javaで加減乗除(+-*/)の電卓を作りたいのですが アプレットが分かりません・・・ どなたかjavaのアプレットとhtmlのほうも教えていただけませんか? http://jubilo.cis.ibaraki.ac.jp/~isemba/PROGRAM/JAVA/OUYO/z111c.htmのサイトでは加減(+-)の電卓しかありません

  • javaアプレット

    javaアプレットの勉強をしているのですが、教えてください。 マウスを押すと位置を取得して、線を描くアプレットをつくってみたいと思っています。 一回目に押した位置を始点として、二回目の位置まで線を引きます。このとき、二回目にマウスを押したときにはじめて線を描画するとします。その後、三回目、四回目とマウスを押していくと、前に押した位置を始点として線を引くようなアプレットです。 そこで以下のようにコードを書いて実行してみました。(部分) public void mousePressed(MouseEvent e) { n=n+1; if(n==1){ x1=e.getX(); y1=e.getY();} else{ x2=e.getX(); y2=e.getY(); repaint(); x1=x2; y1=y2; } } public void paint(Graphics g) { g.drawLine(x1,y1,x2,y2); } ところが、実行してみると、マウスを押す位置に点が移動するだけでした。おそらく、コード中のx1=x2;y1=y2;がrepaint();より前に実行されてしまうのではないかと思います。どう書き直せばいいのでしょうか?また、どうしてrepaint();より前に実行されてしまうのでしょうか?

    • ベストアンサー
    • Java
  • Javaアプレットで描画の中断がしたい

    Java初心者です。学校の課題で数学シュミレーションの結果を Javaアプレットで表示するプログラムを作成しています。 この課題のJavaアプレットでは 複素平面のシュミレーション(計算結果を色のグラデーションで表示する)なのですが、 チョイスやボタン、マウスクリックなどによって、 初期条件や、描画方式、表示範囲などを指定することができます。 とりあえず、シュミレーション結果の描画は 試行錯誤の結果表示ができるようになりました。 paint(Graphics g)メソッドで数値計算、及び描画をしています。 (ちなみに余談かもしれませんがダブルバッファリングをしていて、 描画内容をImageとして書き込んでおいて描画するというかたちです。) 「計算途中(計算には結構時間がかかる)に 新たにボタンなどで指定条件が変更された場合、 現在の描画を中断して次の計算と描画を開始できるように プログラムを改良しなさい」というのが今回の課題です。 つまり、「プログラム的にはpaintメソッドが実行されている途中に 特定のイベントが発生したらpaintメソッドを中断し、 もういちど呼びなおしなさい」ということかと思われます。 スレッドを作り、そのスレッドを中断するなども考えました。 インターネットで検索もしてみましたが、 なかなか情報を見つけられず困っています。 学生が作るプログラムなのでそんなに難しいことではないのだと思うのですが 解決できませんでした。 どうぞよろしくお願いします。

専門家に質問してみよう