




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Ch09 繪圖與多媒體JAVA程式設計進階(I)2022/8/262大綱繪圖的基礎Graphics類別的顏色、文字與繪圖圖片的載入與顯示動畫效果Java Applet的圖片載入音樂的播放2022/8/263Graphics繪圖類別-獲得Graphics繪圖類別在Java Applet程式範例已經說明過paint()方法繪出文字和簡單圖形,運用的是Graphics類別的方法。在Java執(zhí)行繪圖功能需求運用圖形內容Graphics Contexts的Graphics物件,繪製的文字、影像和圖形都是繪製在此畫布物件上,好像將GUI元件新增到JFrame物件的ContentPane物件普通。2022/
2、8/264範例1:運用Applet呈現圖Ch11_10.javaimport java.applet.Applet;import java.awt.*;public class Ch11_10 extends Applet public void paint(Graphics g) setBackground(Color.lightGray); g.setColor(Color.red); g.fillRect(10,10,100, 100); Ch11_10.html Ch11_10.html 2022/8/265Graphics繪圖類別-paint()方法繼承自Component元件的pa
3、int()方法在呼叫時,其傳入參數就是Graphics物件,如下所示:public void paint(Graphics g) 在上述的paint()方法呼叫繪圖方法,就可以在元件上繪出圖形。2022/8/266範例2:運用JFrame類別的畫布import javax.swing.*;import java.awt.*;import java.awt.event.*;class Ch11_11 extends JFrame Ch11_11() super(JFrame畫布); Container c = getContentPane(); c.setBackground(Color.lig
4、htGray); public void paint(Graphics g) g.setColor(Color.red); g.fillRect(10, 10, 100, 100); public static void main(String args) / 建立Swing應用程式 Ch11_11 app = new Ch11_11(); / 關閉視窗事件, 結束程式的執(zhí)行 app.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent evt) System.exit(0); ); app.se
5、tSize(300,200); / 設定尺寸 app.setVisible(true); / 顯示視窗 2022/8/267Graphics繪圖類別-getGraphics()方法在paint()方法之外的其它方法執(zhí)行繪圖,可以運用getGraphics()方法獲得元件的Graphics物件,如下所示:Graphics g = app.getGraphics();上述程式碼獲得app元件的Graphics物件,接著就可以呼叫繪圖方法在元件上繪出圖形。2022/8/268範例3:運用getGraphics()import javax.swing.*;import java.awt.*;impor
6、t java.awt.event.*;class Ch11_12 extends JFrame Ch11_12() super(JFrame畫布); Container c = getContentPane(); c.setBackground(Color.lightGray); public static void main(String args) / 建立Swing應用程式 Ch11_12 app = new Ch11_12(); / 關閉視窗事件, 結束程式的執(zhí)行 app.addWindowListener(new WindowAdapter() public void windowC
7、losing(WindowEvent evt) System.exit(0); ); app.setSize(300,200); / 設定尺寸 app.setVisible(true); / 顯示視窗 /利用getGraphics()獲得Graphics Context Graphics g = app.getGraphics(); g.setColor(Color.red); g.fillRect(10, 10, 100, 100); 2022/8/269Graphics繪圖類別-Swing的paintComponent()方法對於繼承自Swing元件的類別。例如:JPanel建立的畫布時,
8、繪圖方法的程式碼是位於覆寫的paintComponent()方法,如下所示:class UserPanel extends JPanel / 建構子 public UserPanel() public void paintComponent(Graphics g) 2022/8/2610範例4: JPanel類別的畫布import javax.swing.*;import java.awt.*;import java.awt.event.*;class Ch11_13 extends JFrame GraphicPanel gPanel = new GraphicPanel(); Ch11_1
9、3() super(JPanel畫布); Container c = getContentPane(); c.setLayout(new FlowLayout(); c.setBackground(Color.lightGray); c.add(gPanel); Graphics g = gPanel.getGraphics(); repaint(); class GraphicPanel extends JPanel GraphicPanel() setPreferredSize(new Dimension(200,150); public void painComponent(Graphi
10、cs g) super.paintComponent(g); g.setColor(Color.red); g.fillRect(10, 10, 100, 100); public static void main(String args) / 建立Swing應用程式 Ch11_13 app = new Ch11_13(); / 關閉視窗事件, 結束程式的執(zhí)行 app.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent evt) System.exit(0); ); app.setSize(30
11、0,200); / 設定尺寸 app.setVisible(true); / 顯示視窗 2022/8/2611Graphics繪圖類別-再談paint()和repaint()方法Swing元件屬於JComponent的子類別,同時繼承Component的paint()和repaint()方法,因為元件繪圖操作大都是呼叫paint()方法完成,paint()方法非??偯鳎軌蛟谶\用者調整視窗尺寸例如:縮小和放大元件的視窗等操作後,或是執(zhí)行setText()等方法改變元件內容時,自動重新呼叫repaint()方法重繪調整後的圖形和元件。2022/8/2612座標系統與JComponent元件-說明
12、電腦螢幕的座標系統是運用像素Pixels為單位,Graphics物件的畫布是一張長方形區(qū)域,左上角為原點,其座標是(0, 0),X軸從左到右,Y軸由上到下,如下圖所示:2022/8/2613座標系統與JComponent元件-獲得尺寸座標系統可以運用JComponent元件的getWidth()、getHeight()方法獲得元件的寬和高,因為元件的周圍預設有邊線,所以需求運用getInsets()獲得邊線left、right、top和bottom的尺寸,如下所示:Insets ins = getInsets();int width = getWidth() - (ins.left + ins
13、.right);int height = getHeight() - (ins.top + ins.bottom);2022/8/2614JFrame類別的畫布-說明Java應用程式可以將整個JFrame視窗或某個Swing元件作為畫布,假設是JFrame畫布,只需在paint()方法撰寫繪圖方法的程式碼,就可以在視窗繪出所需圖形。2022/8/2615JFrame類別的畫布-繪圖假設不是在paint()方法,Java程式碼需求運用getGraphics()方法獲得Grphics物件後,在Graphics物件繪出所需圖形,如下所示:Graphics g = app.getGraphics();
14、g.setColor(Color.green);g.fillOval(100, 100, 40, 40);2022/8/2616JPanel類別的畫布Swing的JPanel元件可以取代AWT的Canvas類別畫布,JPanel預設提供雙緩衝區(qū)Double Buffering繪圖功能,一切元件的繪圖都是在幕後完成後,才會一次顯示到螢幕上,所以可以加速圖形的顯示。2022/8/2617指定顏色-建立Color物件Java顏色是java.awt.Color的Color物件,這是運用RGB顏色以不同程度的紅、綠和藍3原色混合出的Color顏色物件,如下所示:Color myColor = new C
15、olor(r, g, b);上述參數r、g和b如為int整數,其範圍是0255,如為float是0.01.0。2022/8/2618指定顏色-指定顏色方法在建立好Color物件後,可以運用Graphics類別的方法指定顏色,相關方法如下表所示:2022/8/2619指定字型-建立Font物件Java的字型是java.awt.Font的Font物件,這是代表指定尺寸和樣式的字型,如下所示:Folot myFont = new Font(新細明體, Font.PLAIN, 30);上述參數分別是字型名稱、樣式和尺寸。2022/8/2620指定字型-指定字型方法在建立好Font物件後,可以運用Gra
16、phics類別的方法指定字型,相關方法如下表所示:2022/8/2621字型定位尺寸FontMetrics-說明FontMetrics物件可以獲得字串和字型細部定位尺寸,以便在畫布上能夠準確編排文字內容,相關字型的細部尺寸,如下圖所示:2022/8/2622字型定位尺寸FontMetrics-相關方法FontMetrics類別的相關方法,如下表所示:2022/8/2623圖形和字串的繪圖方法-1Graphics類別提供多種方法可以繪出線條、長方形、圓邊長方形、圓形或橢圓形,如下表所示:2022/8/2624圖形和字串的繪圖方法-22022/8/2625圖形和字串的繪圖方法-32022/8/26
17、26填滿圖形的繪圖方法-1Graphics類別還提供繪出填滿圖形的相關方法,如下表所示:2022/8/2627填滿圖形的繪圖方法-22022/8/2628填滿圖形的繪圖方法-32022/8/2629圖片的載入與顯示-說明Java程式是運用Image物件來載入圖片,Image是籠統類別,其繼承的子類別可以儲存多種格式的圖片檔案。在運用上是以Toolkit籠統類別Abstract Window Toolkit實作的籠統類別的方法將圖檔載入成為Image物件。2022/8/2630圖片的載入與顯示-載入首先運用getDefaultToolkit()獲得Toolkit物件,如下所示:Toolkit t
18、oolkit = Toolkit.getDefaultToolkit();程式碼在獲得Toolkit物件toolkit後,運用getImage()方法載入圖檔,例如:獲得JPG圖檔sample.jpg的Image物件,其程式碼如下所示:Image image = toolkit.getImage(sample.jpg);2022/8/2631圖片的載入與顯示-顯示在paint()或paintComponent()方法運用drawImage()顯示圖檔的Image物件,如下所示:g.drawImage(image, 5, 5, this);程式碼是在座標(5, 5)顯示名為image的Image
19、物件,實作ImageObserver介面的物件是元件本身this,因為繼承自Component類別的Swing元件都已經實作ImageObserver介面,所以運用元件本身即可。2022/8/2632範例5:讀取圖片import javax.swing.*;import java.awt.*;import java.awt.event.*;class Ch11_15 extends JFrame /建構子 Ch11_15() super(載入與顯示圖片); Container c = getContentPane(); Toolkit toolkit = Toolkit.getDefaultT
20、oolkit(); Image image = toolkit.getImage(MickeyChristmas.jpg); ImagePanel imagePane = new ImagePanel(image); c.add(imagePane); class ImagePanel extends JPanel private Image image; /建構子 ImagePanel(Image image) this.image = image; public void paintComponent(Graphics g) super.paintComponent(g); g.drawI
21、mage(image, 5, 5, this); public static void main(String args) Ch11_15 app = new Ch11_15(); / 關閉視窗事件, 結束程式的執(zhí)行 app.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent evt) System.exit(0); ); app.setSize(370,320); / 設定尺寸 app.setVisible(true); / 顯示視窗 2022/8/2633圖片的載入與顯示-圖例2022/8/
22、2634調整圖片尺寸-圖片的放大與縮小drawImage()方法新增參數width和height,分別是圖片的寬和高,假設設定的尺寸比原圖形小是縮小圖片,反之就是放大圖片。boolean drawImage(Image image, int x, int y, int width, int height, ImageObserver observer)2022/8/2635調整圖片尺寸-圖片的翻轉與剪裁boolean drawImage(Image image, int x1, int y1, int x2, int y2, int sx1, int sy1, int sx2, int sy2
23、, ImageObserver observer)drawImage()方法參數的4個座標分成2組,其說明如下表所示:2022/8/2636調整圖片尺寸-圖片翻轉首先來看翻轉圖片情況:假設sample.gif原始圖片尺寸的寬是width,高是height,原始圖片的左上角座標是(0, 0),右下角座標為(width, height),翻轉操作如下:原尺寸上下翻轉:原始圖片座標分別為(0, height)和(width, 0),換句話說,原始圖片的左下角成為顯示圖片的左上角,而右上角成為右下角。原尺寸左右翻轉:原始圖片座標分別為(width, 0)和(0, height),換句話說,原始圖片的右
24、上角成為顯示圖片的左上角,而左下角成為右下角。2022/8/2637調整圖片尺寸-圖片的剪裁翻轉與剪裁圖片是運用第2組座標,假設第2組座標的尺寸只需部分的圖片,就會剪裁圖片。2022/8/2638範例6:圖片放大,縮小, 旋轉class ImagePanel extends JPanel private Image image; /建構子 ImagePanel(Image image) setPreferredSize(new Dimension(900, 620); this.image = image; public void paintComponent(Graphics g) int
25、x, y, width, height; width = image.getWidth(this); height = image.getHeight(this); super.paintComponent(g); x = 0; y = 5; g.drawImage(image, x, y, this); /縮小1/2 x += width; / 設定第二張圖的起始位置 g.drawImage(image, x, y, width/2, height/2, this); /上下旋轉 x += width/2; g.drawImage(image, x, y, x+width, y+height
26、, 0, height, width, 0, this); /左右旋轉 x = 0; y += height +5; g.drawImage(image, x, y, x+height/2, y+width/2, width, 0,0,height, this); /放大並剪裁(取原圖的1/4並放大到原圖大小) x += height/2; g.drawImage(image, x, y, x+width, y+height, 0,0,width/2, height/2, this); 2022/8/2639動畫效果動畫效果是運用卡通片的製作原理,快速顯示一張張靜態(tài)圖片,因為每張圖片擁有少許改
27、變。例如:位移或尺寸,或定時在不同位置繪出圖形,在人類視覺殘留的情況下,就會產生動畫效果。2022/8/2640Timer類別的時間控制-說明在Java程式建立動畫效果是運用Timer計時器類別控制繪圖或圖片顯示,Timer類別可以在間隔時間自動產惹事件,以便指定傾聽者物件進行處理。Timer類別的建構子,如下表所示:2022/8/2641Timer類別的時間控制-運用Timer類別的運用非常的簡單,只需先建立好Timer物件,如下所示:Timer timer = new Timer(300, this);上述程式碼建立Timer物件且設定300毫秒間隔時間產惹事件,傾聽者物件是本身,接著就可
28、以呼叫下表Timer類別的方法啟動、重新啟動和停頓計時器。2022/8/2642Timer類別的時間控制-方法1呼叫下表Timer類別的方法啟動、重新啟動和停頓計時器,如下表所示:2022/8/2643Timer類別的時間控制-方法2Timer類別的其它相關方法,如下表所示:2022/8/2644圖片移動的動畫效果在Java程式只需運用Timer類別配合圖片載入與顯示,就可以建立圖片移動橫跨螢幕的動畫效果。2022/8/2645範例7:動畫import javax.swing.*;import java.awt.*;import java.awt.event.*;/ 繼承JFrame類別, 實
29、作ActionListener介面public class Ch11_08 extends JFrame implements ActionListener private int offset = -10; private Image im; private Timer timer; private AnimationPane animationPane; / 建構子 public Ch11_08() super(動畫功能的顯示範例); int delay = 100; timer = new Timer(delay, this); timer.setInitialDelay(0); Con
30、tainer c = getContentPane(); c.setLayout(new FlowLayout(); c.setBackground(Color.gray); Toolkit toolkit = Toolkit.getDefaultToolkit(); im = toolkit.getImage(023.gif); animationPane = new AnimationPane(im); c.add(animationPane); timer.start(); app.setSize(300, 150); / 設定尺寸 app.setVisible(true); / 顯示視
31、窗 / 顯示動畫的JPanel class AnimationPane extends JPanel Image image; / 建構子 public AnimationPane(Image image) setPreferredSize(new Dimension(250, 100); setBackground(Color.lightGray); this.image = image; public void paintComponent(Graphics g) super.paintComponent(g); int width = getWidth(); int height = g
32、etHeight(); / 計算圖片的尺寸 int imgWidth = image.getWidth(this); int imgHeight = image.getHeight(this); g.drawImage(image,(offset*5)%(imgWidth+width) - imgWidth, (height-imgHeight)/2, this); / 實作事件處理方法 public void actionPerformed(ActionEvent evt) offset+; animationPane.repaint(); / 重繪 / 主程式 public static
33、void main(String args) / 建立Swing應用程式 Ch11_08 app = new Ch11_08(); / 關閉視窗事件, 結束程式的執(zhí)行 app.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent evt) System.exit(0); );2022/8/2646範例8:動畫(會更換圖片)import java.awt.*;import java.applet.*;public class Ch11_09 extends Applet implements Run
34、nable Thread fly; int x, y, dx, dy, flag, num, i; Image Img; public void init() x = getWidth(); y = 50; dx = -5; dy = 0; Img = new Image4; num = 1; Img0 = getImage(getDocumentBase(), 013.gif); Img1 = getImage(getDocumentBase(), 023.gif); Img2 = getImage(getDocumentBase(), 024.gif); Img3 = getImage(g
35、etDocumentBase(), 001.gif); public void start() fly = new Thread(this); fly.start(); public void run() while(true) x = x + dx; y = y + dy; flag = num % 4; repaint(); num = num + 1; if(x0) x = getWidth(); try Thread.sleep(1500); catch (InterruptedException e) public void paint(Graphics g) g.drawImage
36、(Imgflag, x, y, x+10, y+25, this); 2022/8/2647Java Applet的圖片載入-Applet在Java Applet程式載入和顯示圖片是運用getImage()方法將圖片載入成為Image物件,例如:建立URL物件來載入圖片,如下所示:Image image = getImage( new URL(wwwpany/sample.gif);運用getDocumentBase()或getCodeBase()方法獲得檔案的URL位置,如下圖所示:Image image =getImage(getDocumentBase(),sample.gif);202
37、2/8/2648Java Applet的圖片載入-JAppletJava Applet繼承自JApplet可以運用Swing的ImageIcon物件來載入和顯示圖片。例如:運用ImageIcon載入Baby.jpg圖檔的程式碼,如下所示:ImageIcon image1 = new ImageIcon(Baby.jpg);在載入圖片成為ImageIcon物件後,就可以運用paintIcon()方法顯示圖片,如下所示:image1.paintIcon(this, g, 5, 5);2022/8/2649音樂的播放-說明在Java Applet不只可以顯示圖片,還可以播放音樂檔案,目前援助的音樂檔
38、案格式有au、aiff、wav、mid和rmf。2022/8/2650音樂的播放-載入在Java API的java.applet.*套件的Applet類別提供getAudioClip()方法建立AudioClip物件載入音樂檔案,如下所示:AudioClip audio = getAudioClip(getDocumentBase(),Microsoft.wav);程式碼建立AudioClip物件,參數為URL物件和音樂檔案名稱。2022/8/2651音樂的播放-播放在建立好AudioClip物件後,就可以運用AudioClip介面的3個方法控制音樂的播放,如下表所示:2022/8/2652範
39、例8:播放音樂(運用Applet)import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.applet.*;/ 繼承JApplet類別, 實作ActionListener介面public class Ch11_07 extends JApplet implements ActionListener private AudioClip audio; private JButton play, loop, stop; / 初始方法 public void init() / 獲得參數 String file
40、 = getParameter(FILE); Container c = getContentPane(); c.setBackground(Color.gray); c.setLayout(new FlowLayout(FlowLayout.CENTER); audio = getAudioClip(getDocumentBase(), file);play = new JButton(播放); play.addActionListener(this); c.add(play); loop = new JButton(循環(huán)播放); loop.addActionListener(this);
41、c.add(loop); stop = new JButton(停頓); stop.addActionListener(this); c.add(stop); / 實作事件處理方法 public void actionPerformed(ActionEvent evt) if (evt.getSource()=play) audio.play(); else if (evt.getSource()=loop) audio.loop(); else if (evt.getSource()=stop) audio.stop(); 2022/8/2653範例8:播放音樂(運用Applet)-續(xù)Ch1
42、1_07.htm 2022/8/2654範例9:播放音樂(運用Sound)import java.io.*;import javax.sound.sampled.*;public class Ch11_07_02 public static void main(String args ) try System.out.println(播放聲音檔案: + jay1.wav); File sf = new File(jay1.wav); /獲得聲音輸入串流 AudioInputStream astr = AudioSystem.getAudioInputStream(sf); /獲得聲音方式 Au
43、dioFormat afmt = astr.getFormat(); /建立訊號線資訊物件 DataLine.Info inf = new DataLine.Info(SourceDataLine.class, afmt); /獲得符合指定訊號線資訊的訊號線 SourceDataLine l = (SourceDataLine) AudioSystem.getLine(inf); /以指定方式開啟訊號線 l.open(afmt); /開始訊號線的讀寫 l.start(); /讀寫緩寫區(qū) byte buf = new byte65536; /從聲音串流讀入資料寫入混音器 for(int n =
44、0; (n=astr.read(buf, 0, buf.length)0; ) l.write(buf, 0, n); /清掉混音器內的資料 l.drain(); /關閉 l.close(); catch (Exception e) e.printStackTrace(); System.exit(0); 2022/8/2655範例10:滑鼠控制圖像移動import java.awt.*;import java.applet.*;public class Ch11_21 extends Applet implements Runnable Thread flag; int x, y, dx,
45、dy; Image Img; Point clickPoint; String message = ; public void init() x = y = 50; dx = 5; dy = 0; Img = getImage(getDocumentBase(), 010.gif); public boolean mouseDown(Event evt, int mx, int my) if(mx = 400) & (mx = 400) & (my = 400) & (mx = 440) & (my = 380) & (mx = 420) & (my = 420) & (mx = 420) &
46、 (my = 430) dx = 5; dy = 0; clickPoint = new Point(mx, my); message = Mouse_click_Position: ) + mx + , + my + ); repaint(); return true; 2022/8/2656範例10:滑鼠控制圖像移動續(xù)public void start() flag = new Thread(this); flag.start(); public void run() while(true) x = x + dx; y = y + dy; repaint(); if ( x = getWi
47、dth() dx = -5; else if( y+70 = getHeight() dy = -5; try Thread.sleep(250); catch(InterruptedException e) public void paint(Graphics g) g.drawString(message, 5, 15); g.drawRect(400, 400, 10, 10); g.drawRect(400, 440, 10, 10); g.drawRect(380, 420, 10, 10); g.drawRect(420, 420, 10, 10); g.drawImage(Img
48、, x, y, this); 2022/8/2657範例11:方向鍵控制圖像移動import java.awt.*;import java.applet.*;public class Ch11_22 extends Applet implements Runnable Thread flag; int x, y, dx, dy; Image Img; public void init() x = y = 50; dx = 5; dy = 0; Img = getImage(getDocumentBase(), 010.gif); public boolean keyDown(Event evt
49、, int key) switch (key) case Event.UP: dx = 0; dy = -5; break; case Event.DOWN: dx = 0; dy = 5; break; case Event.LEFT: dx = -5; dy = 0; break; case Event.RIGHT: dx = 5; dy = 0; return true; public void start() flag = new Thread(this); flag.start(); 2022/8/2658範例11:方向鍵控制圖像移動續(xù)public void run() while(
50、true) x = x + dx; y = y + dy; repaint(); if ( x = getWidth() dx = -5; else if( y+70 = getHeight() dy = -5; try Thread.sleep(250); catch(InterruptedException e) public void paint(Graphics g) g.drawImage(Img, x, y, this); 2022/8/2659研討:用球擊中靶塊import java.awt.*;import java.lang.*;import java.applet.*;pu
51、blic class BlockHit extends Applet implements Runnable int fieldx1 = 0; int fieldy1 = 0; int fieldx2 = 256; int fieldy2 = 306; int block_xnum = 10; int block_ynum = 8; int block_width = 15; int block_height = 5; int block_left_board = 6; int block_up_board = 46; int block_lower_board = 116; int pad_
52、width = 20; Graphics g; Thread theBall; int blockState = new intblock_xnumblock_ynum; int padx; int ballX, ballY; int ballDX,ballDY; int speed; int eraseCount; int padHitCount; int score; int left; boolean onGame; boolean onFireBall; Panel pControl; Label lScore, lLeft; Button bControl; int threadPr
53、ocessing; public void init() setLayout(new BorderLayout(); setBackground(Color.green); g = getGraphics(); pControl = new Panel(); pControl.setBackground(Color.gray); pControl.setLayout(new FlowLayout(); bControl = new Button( START ); lScore = new Label(SCORE:0 ); lLeft = new Label(LEFT:5); pControl
54、.add(bControl); pControl.add(lScore); pControl.add(lLeft); add(South, pControl); public void start() gameInit(); onGame = false; onFireBall = false; 2022/8/2660void gameInit() for (int x = 0 ; x block_xnum ; x+) for (int y = 0 ; y block_ynum ; y+) blockStatexy = 1; padx = fieldx2 / 2; score = 0; add
55、Score(0); left = 5; subLeft(0); eraseCount = 0; bControl.setLabel( START ); threadProcessing = 0; repaint(); public void paint(Graphics g) g.drawRect(fieldx1, fieldy1, fieldx2, fieldy2); g.setColor(Color.blue); for (int y = 0 ; y block_ynum ; y+) for (int x = 0 ; x block_xnum ; x+) if (blockStatexy
56、= 1) g.fillRect(block_left_board + x * (block_width + 10) , block_up_board + y * (block_height +5) , block_width, block_height); public void remakeBlock() g.setColor(Color.blue); for (int x = 0 ; x block_xnum ; x+) for (int y = 0 ; y block_xnum*(block_width+10)-5) ballX = block_xnum*(block_width+10)
57、-5; else if (ballX block_left_board) ballX = block_left_board; if (padx fieldx2 / 2) ballDX = -5; else ballDX = 5; ballY = fieldy2 - 25; ballDY = -10; speed = 150; padHitCount = 0; subLeft(1); threadProcessing = 0; onFireBall = true; if (theBall != null) theBall = null; if (theBall = null) theBall = new Thread(this); theBall.start(); return true; public boolean mouseMove(java.awt.Event e, int x, int y) padx = x - 7; if (padx fieldx2 - pad_width) padx = fieldx2 - pad_width; while (threadProcessing = 1) g.setColor(Color.green); g.fillRect(1, (fieldy2 - 20), (fieldx2-1) , 5); g.setCol
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 低溫容器銷售合同范例
- 上海廢棄廠房租賃合同范例
- 07標準施工合同范例
- 供銷酒水合同范例
- 保潔門窗合同范例
- 兼職平面模特合同范例
- 涼菜開店加工合同范例
- 養(yǎng)殖用地流轉合同范例
- 別墅裝修付款合同范例
- 企業(yè)代理意向合同范例
- 城市軌道交通乘客服務課件(完整版)
- 四川建設工程系統用戶滿意度測評實施辦法
- 山田家的氣象報告--完整版PPT課件
- 煤礦2021年重大安全風險分析預判防控報告全文
- 粱昆淼第四版數學物理方法第10章
- 采礦學之采礦方法
- 急診腦卒中病人分診流程圖4.8
- 球閥使用說明書
- 對外漢語—春節(jié)學習教案
- 國泰安數據庫使用指南PPT課件
- 畢業(yè)設計(論文)800×800錘式破碎機
評論
0/150
提交評論