請使用 java+awt套件 繪製出三角形、梯形、菱形,圖形尺寸自訂。
並利用number變數控制展示圖形,如 number=1 時展示三角形,number=2 時展示梯形、number=3 時展示菱形。
參考資料:[url]http://blog.kmol.info/?p=385[/url]
第二題 (30%)
請將下列PHP程式碼由函式形式改為類別形式。
參考資料:[url]http://blog.kmol.info/?p=376[/url]
程式碼:
<?php $m=10; //$m=$_GET["m"]; //$color=$_GET["color"]; $color="red"; printallH($m); for($i=0;$i<$m-2;$i+=1) { printheadtailH($m); } printallH($m); function printallH($m) { // 函式目的,由 $m 變數控制列印 H 的個數,全部列印相同的 H for($i=1;$i<=$m;$i+=1) { echo "H"; } // 印完後,跳行 echo "<br>"; } function printheadtailH($m) { global $color; // 列印只有頭尾是 H ,其餘是空白 echo "H"; for($i=1;$i<=$m-2;$i+=1) { // 採用 css 控制列印字元顏色,將 orange 改為 white,可以列出白色字元 echo "<span style=\"color:".$color."\">H</span>"; //echo "<span style="color:white">H</span>"; } echo "H"; echo "<br>"; } ?>
第三題 (20%)
請將下列 java 程式碼編譯,並改成 CMSimple Plugins 且在 CMSimple 底下執行,可與第四題一起展示。
Hint:注意package drawstar,須放置在drawstar目錄底下,可自由更改。
Hint:注意檔案名稱必須為Main.java。
參考資料:[url]http://blog.kmol.info/?p=437[/url]
程式碼:
package drawstar; import java.applet.Applet; import java.awt.*; // for Frame Exit import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class Main extends Applet { Stroke drawingStroke = new BasicStroke(2); // static 變數才可以在各方法中共用 static String setorigx = null; static String setorigy = null; static String setr = null; static String setangle = null; static float origx,origy,r,angle; public void init() { // getParameter 取得字串值 setorigx = getParameter("origx"); setorigy = getParameter("origy"); setr = getParameter("r"); setangle = getParameter("angle"); if(setorigx!=null && setorigy!= null && setr!=null && setangle!= null ) { // 轉成整數使用 Integer.parseInt() // 轉為浮點數使用 Float.parseFloat() origx = Integer.parseInt(setorigx); origy = Integer.parseInt(setorigy); r = Integer.parseInt(setr); angle = Integer.parseInt(setangle); } else { // 若 peakNumber 取不到值, 則內定為 5 origx=150; origy=150; r=30; angle=180; } } public void paint(Graphics g) { int i,j; float x,y; double temp1,temp2,temp3,temp4; double degree=3.14159/180.0; double[] ptx=new double[6]; double[] pty=new double[6]; double[] pttx=new double[6]; double[] ptty=new double[6]; Graphics2D graph = (Graphics2D)g; graph.setStroke(drawingStroke); graph.setPaint(Color.black); for(i=0;i<6;i++) { ptx[i]=origx+r*Math.sin(72.*i*degree+angle*degree); pty[i]=origy+r*Math.cos(72.*i*degree+angle*degree); temp1= Math.cos(54.*degree-72.*degree*i-angle*degree); temp2= Math.sin(54.*degree-72.*degree*i-angle*degree); temp3= Math.sin(18.*degree); temp4= Math.cos(36.*degree); pttx[i]=origx+r*temp3*temp1/temp4; ptty[i]=origy+r*temp3*temp2/temp4; } for(i=0;i<5;i++) { graph.drawLine((int)ptx[i], (int)pty[i], (int)pttx[i], (int)ptty[i]); j=i+1; graph.drawLine((int)pttx[i], (int)ptty[i], (int)ptx[j], (int)pty[j]); } } public void stop() { } public void printC(Graphics g, int m, int x, int y){ Graphics2D graph = (Graphics2D)g; int i; for(i=0;i<m;i++) { graph.drawString("!", x+i*10, y); } } public static void main(String[] args) { Applet applet = new Main(); Frame frm = new Frame("我的主方法(函式)框架"); frm.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); frm.setSize(100, 100); frm.setVisible(true); // 將 applet 加入 Frame 中 frm.add(applet); frm.setSize(300, 300); frm.setVisible(true); applet.init(); } }
第四題 (20%)
利用第三題編譯好之java程式,透過 CMSimple Plugins 控制其參數,並在 CMSimple 底下執行,可與第三題一起展示。
Hint:控制變數之名稱分別為 origx(x軸位置)、origy(y軸位置)、r(半徑)、angle(旋轉角度)。
參考資料:[url]http://blog.kmol.info/?p=437[/url]
沒有留言:
張貼留言