java課程設(shè)計(jì)——紅色小彈球_第1頁(yè)
java課程設(shè)計(jì)——紅色小彈球_第2頁(yè)
java課程設(shè)計(jì)——紅色小彈球_第3頁(yè)
java課程設(shè)計(jì)——紅色小彈球_第4頁(yè)
java課程設(shè)計(jì)——紅色小彈球_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、JAVA課程設(shè)計(jì)報(bào)告題 目紅色小球反彈程序院 系信工院班 級(jí)14計(jì)本1學(xué) 號(hào)1412210112姓 名趙佳目錄摘要31、概述41.1題目簡(jiǎn)介41.2功能分析41.3功能實(shí)現(xiàn)41.3.1顏色選擇功能的實(shí)現(xiàn)41.3.2速度選擇功能的實(shí)現(xiàn)41.3.3小球出現(xiàn)的位置的功能實(shí)現(xiàn)51.3.4開(kāi)始/添加功能的實(shí)現(xiàn)51.3.5暫停功能的實(shí)現(xiàn)51.3.5清除功能的實(shí)現(xiàn)62、程序的分析與設(shè)計(jì)72.1程序分析72.2程序設(shè)計(jì)72.2.1main方法用于程序測(cè)試72.2.2小球運(yùn)動(dòng)線程72.2.3小球的畫(huà)板82.2.4添加小球82.2.5繪制畫(huà)板82.2.6小球類(lèi)92.2.7獲取小球的形狀92.2.8獲取小球的顏色9

2、3、系統(tǒng)實(shí)現(xiàn)103.1實(shí)現(xiàn)代碼103.2測(cè)試結(jié)果104、總結(jié)12附錄215摘要JAVA是目前最流行的軟件開(kāi)發(fā)語(yǔ)言之一,稱(chēng)為網(wǎng)絡(luò)上的“世界語(yǔ)”。JAVA適合開(kāi)發(fā)基于多媒體、與平臺(tái)無(wú)關(guān)、用面向?qū)ο蟮姆椒ㄟM(jìn)行的基于Internet、Intranet、Extranet的Applet和應(yīng)用程序。它具有簡(jiǎn)單高效、面向?qū)ο?、不依?lài)機(jī)器結(jié)構(gòu)的特點(diǎn),支持多線程、分布和并發(fā)機(jī)制。用JAVA開(kāi)發(fā)的應(yīng)用軟件在可移植性、健壯性、安全性等方面大大優(yōu)于已存在的其他編程語(yǔ)言。JAVA是一門(mén)包含多種知識(shí)的學(xué)科,提供了豐富的類(lèi)庫(kù),能最大限度地利用網(wǎng)絡(luò)。JAVA可廣泛用于面向?qū)ο蟮氖录枋觥⑻幚砻嫦驅(qū)ο蟮钠髽I(yè)型的應(yīng)用開(kāi)發(fā),還應(yīng)用于

3、Internet系統(tǒng)管理、Web頁(yè)面設(shè)計(jì)、Internet可視化軟件開(kāi)發(fā)等方面。在學(xué)習(xí)的過(guò)程中我學(xué)到了許多以前沒(méi)有學(xué)到的概念和新鮮資訊。運(yùn)用這些知識(shí)可以完成老師交給我的課程設(shè)計(jì)任務(wù)。1、概述1.1題目簡(jiǎn)介用java語(yǔ)言,使用Eclipse工具來(lái)進(jìn)行編輯運(yùn)行一個(gè)簡(jiǎn)單紅色反彈球程序。1.2功能分析1.3功能實(shí)現(xiàn)1.3.1顏色選擇功能的實(shí)現(xiàn)panel.add(new JLabel( 顏色: ); /添加標(biāo)簽Color: panel.add(colorCombo); /添加顏色選擇框以此添加小球顏色:colorCombo.addItem(red);colorCombo.addItem(orange);

4、 colorCombo.addItem(yellow); colorCombo.addItem(green); colorCombo.addItem(cyan); colorCombo.addItem(blue); colorCombo.addItem(magenta);1.3.2速度選擇功能的實(shí)現(xiàn)panel.add(new JLabel( 速度: ); /添加標(biāo)簽Speed: panel.add(speedCombo); /添加速度選擇框添加速度選項(xiàng):speedCombo.addItem(slow); speedCombo.addItem(fast);速度選擇框加入監(jiān)聽(tīng)器,及時(shí)改變小球的速度

5、 speedCombo.addActionListener(new ActionListener() public void actionPerformed(ActionEvent event) String speed = (String)speedCombo.getSelectedItem(); if (speed.equals(slow) delay = 5; else delay = 1; );1.3.3小球出現(xiàn)的位置的功能實(shí)現(xiàn)panel.add(new JLabel( 出現(xiàn)方位: ); /添加標(biāo)簽 panel.add(placeCombo); /添加方位選擇框以下幾句話用來(lái)向方位選擇

6、框加入各種方位選項(xiàng) placeCombo.addItem(Left-Top);placeCombo.addItem(Left-Bottom);placeCombo.addItem(Right-Top); placeCombo.addItem(Right-Bottom);1.3.4開(kāi)始/添加功能的實(shí)現(xiàn)private JButton btnAdd = new JButton(開(kāi)始/添加);開(kāi)始/添加按鈕加入監(jiān)聽(tīng)器,當(dāng)按下按鈕時(shí)添加小球 btnAdd.addActionListener(new ActionListener() public void actionPerformed(ActionEv

7、ent event) component.addBall(); );1.3.5暫停功能的實(shí)現(xiàn)private JButton btnStopAndContinue = new JButton(暫停); /暫停按鈕Stop/Continue按鈕加入監(jiān)聽(tīng)器,當(dāng)按下按鈕時(shí)暫停/繼續(xù)動(dòng)畫(huà)btnStopAndContinue.addActionListener(new ActionListener() public void actionPerformed(ActionEvent event) if (btnStopAndContinue.getText().equals(Stop) thread.set

8、Stop(true); /將stop標(biāo)志置為true btnStopAndContinue.setText(Continue);btnAdd.setEnabled(false); /Add按鈕不可用 else thread.setStop(false); /將stop標(biāo)志置為false btnStopAndContinue.setText(Stop);btnAdd.setEnabled(true); /Add按鈕可用 );1.3.5清除功能的實(shí)現(xiàn)private JButton btnClear = new JButton(清除); /清除按鈕Clear按鈕加入監(jiān)聽(tīng)器,當(dāng)按下按鈕時(shí)清空畫(huà)板 bt

9、nClear.addActionListener(new ActionListener() public void actionPerformed(ActionEvent event) balls = new ArrayList(); /將球的列表清空 component.repaint(); /重畫(huà)畫(huà)板 ); thread.start(); /畫(huà)畫(huà)板的線程開(kāi)始2、程序的分析與設(shè)計(jì)2.1程序分析編寫(xiě)一個(gè)在JPanel面板中實(shí)現(xiàn)的程序,當(dāng)小球碰到這個(gè)面板的邊時(shí),以45角向相反的方向運(yùn)動(dòng)。2.2程序設(shè)計(jì)private ArrayList balls = new ArrayList(); /小球列表

10、 private BallComponent component = new BallComponent(); /小球畫(huà)板private BallThread thread = new BallThread(); /小球運(yùn)動(dòng)線程2.2.1main方法用于程序測(cè)試public static void main(String args) EventQueue.invokeLater(new Runnable() public void run() JFrame frame = new JFrame(Hit Balls); /設(shè)置測(cè)試框架的標(biāo)題 frame.add(new Bounce(); /將小

11、球碰撞動(dòng)畫(huà)面板放上去 frame.setSize(400, 300); /設(shè)置框架大小 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /設(shè)置框架的默認(rèn)關(guān)閉方式frame.setLocationByPlatform(true); /將框架的定位交給系統(tǒng)實(shí)現(xiàn) frame.setVisible(true); /設(shè)置框架可見(jiàn) ); 2.2.2小球運(yùn)動(dòng)線程private class BallThread extends Thread private boolean isStop = false; /停止標(biāo)記 /* * 線程體 */ publi

12、c void run() while (true) /讓它一直執(zhí)行 if (!isStop) /當(dāng)沒(méi)有停止的時(shí)候 for (int i = 0; i balls.size(); i+) balls.get(i).move(component.getBounds(); /每個(gè)小球都移動(dòng)一遍 component.repaint(); /重畫(huà)畫(huà)板 try Thread.sleep(delay); /線程延緩delay毫秒 catch (InterruptedException e) /捕獲異常 e.printStackTrace(); /處理異常 2.2.3小球的畫(huà)板private class Ba

13、llComponent extends JComponent public BallComponent() /說(shuō)實(shí)話,我不是很明白這段代碼是干什么的,但是要用到背景色必須用到這段代碼 setUI(new ComponentUI() public void installUI(JComponent c) super.installUI(c); LookAndFeel.installColors(c, Panel.background, Panel.foreground); ); 2.2.4添加小球public void addBall() double x = 0; /小球開(kāi)始的x坐標(biāo) doub

14、le y = 0; /小球開(kāi)始的y坐標(biāo) String tmp = (String)placeCombo.getSelectedItem(); /得到方位的選擇項(xiàng)其余在附頁(yè)中。2.2.5繪制畫(huà)板public void paintComponent(Graphics g) super.paintComponent(g); Graphics2D g2 = (Graphics2D)g; for (int i = 0; i balls.size(); i+) /將小球列表中的小球都畫(huà)到畫(huà)板上 Ball ball = balls.get(i);g2.setColor(ball.getColor(); /設(shè)

15、置畫(huà)布中小球的顏色 g2.fill(ball.getShape(); /畫(huà)出小球的形狀 2.2.6小球類(lèi)private class Ball private static final double SIZE = 20; /小球的直徑private double x = 0; /小球所在的x坐標(biāo) private double y = 0; /小球所在的y坐標(biāo) private double vx = Math.sqrt(2) / 2; /小球在x軸的速度private double vy = Math.sqrt(2) / 2; /小球在y軸的速度private Color color = Colo

16、r.BLACK; /小球的顏色2.2.7獲取小球的形狀2.2.8獲取小球的顏色3、系統(tǒng)實(shí)現(xiàn)3.1實(shí)現(xiàn)代碼附錄1:簡(jiǎn)單實(shí)現(xiàn)紅色小球45反彈;附錄2:程序較詳細(xì)、功能多3.2測(cè)試結(jié)果表31表3-2表3-34、總結(jié)我這次課程設(shè)計(jì)的題目計(jì)算器和學(xué)生信息管理系統(tǒng)。在這次課程設(shè)計(jì)的過(guò)程中,使我明白了理論要聯(lián)系實(shí)踐。在這次的課程設(shè)計(jì)中,我遇到了很多困難,覺(jué)得自己有很多很多地方不懂。不過(guò),在老師和同學(xué)的幫組下,我解決了大部分的問(wèn)題,在這里很感謝他們。通過(guò)這次的課程設(shè)計(jì),我對(duì)這個(gè)學(xué)期所學(xué)的高級(jí)JAVA語(yǔ)言程序設(shè)計(jì)有了進(jìn)一步從理論到實(shí)踐的升華,將自己平時(shí)所學(xué)到的知識(shí)應(yīng)用到了實(shí)踐中,不過(guò)自己水平有限,大部分代碼都是

17、借鑒別人的。還有通過(guò)查詢(xún)了很多的相關(guān)知識(shí)來(lái)充實(shí)自己,也使自己的課程設(shè)計(jì)能夠做的比較好。 雖然自己現(xiàn)在的水平編不出什么像樣的程序出來(lái),但我相信只要我自己在今后的時(shí)間里自己能夠認(rèn)真地學(xué)習(xí)編程,自己是能行的。要是自己強(qiáng)大,自己就要非常低努力。通過(guò)這次課程設(shè)計(jì),我收獲的不僅僅是課程上的知識(shí)得到實(shí)際應(yīng)用,還有編程的一些基本和開(kāi)發(fā)項(xiàng)目時(shí)應(yīng)注意的流程。附錄1import java.awt.Color;import java.awt.Graphics;import java.util.Timer;import javax.swing.JFrame;class Ball int x=340; int y=340

18、; int vx=5; int vy=5; int r=10;public class Boll extends JFrame implements Runnable Ball ball=new Ball(); Timer timer =new Timer(true); Boll() super(Bouncing Ball); setSize(400,400); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); setVisible(true); public static void mai

19、n(String args) Boll bb=new Boll(); Thread t=new Thread(bb); t.start(); public void move() if(ball.x=10)ball.vx=-ball.vx;/碰墻 if(ball.y0)ball.vy=-ball.vy; if(ball.x=380)ball.vx=-ball.vx; if(ball.y=380&ball.vy=0)ball.vy=-ball.vy; public void change() move(); ball.x+=ball.vx; ball.y-=ball.vy; Override p

20、ublic void run() timer.schedule(new java.util.TimerTask() public void run() change(); repaint(); ,0,(100*1); public void paint(Graphics g) super.paint(g); g.setColor(Color.RED); g.fillOval(ball.x,ball.y,ball.r*2,ball.r*2); 附錄2package test;import java.awt.*; import java.awt.geom.*;import java.awt.eve

21、nt.*; import javax.swing.*; import javax.swing.plaf.ComponentUI; import java.util.*; public class BallPanel extends JPanel private ArrayList balls = new ArrayList(); /小球列表 private BallComponent component = new BallComponent(); /小球畫(huà)板 private JButton btnAdd = new JButton(開(kāi)始/添加); /開(kāi)始/添加按鈕 private JButt

22、on btnStopAndContinue = new JButton(暫停); /暫停按鈕 private JButton btnClear = new JButton(清除); /清除按鈕 private JComboBox colorCombo = new JComboBox(); /顏色選擇框 private JComboBox speedCombo = new JComboBox(); /速度選擇框 private JComboBox placeCombo = new JComboBox(); /小球出現(xiàn)方位 private BallThread thread = new BallT

23、hread(); /小球運(yùn)動(dòng)線程 private int delay = 5; /小球運(yùn)動(dòng)的延緩時(shí)間public BallPanel() setLayout(new BorderLayout();add(component, BorderLayout.CENTER); /將小球畫(huà)板加到面板中央 component.setOpaque(true); /設(shè)置畫(huà)板不透明,以便能添加背景色 component.setBackground(Color.BLACK); /設(shè)置背景色 JPanel panel = new JPanel(); /創(chuàng)建用來(lái)放各種按鈕的面板 panel.add(btnAdd);

24、/將Add按鈕放入該面板 panel.add(btnStopAndContinue); /將Stop/Continue按鈕放入該面板 panel.add(btnClear); /將Clear按鈕放入該面板 panel.setBackground(Color.LIGHT_GRAY); add(panel, BorderLayout.SOUTH); /將按鈕面板加到主面板南部 panel = new JPanel(new GridLayout(0, 1);panel.add(new JLabel( 顏色: ); /添加標(biāo)簽Color: panel.add(colorCombo); /添加顏色選擇框

25、 panel.add(new JLabel( 速度: ); /添加標(biāo)簽Speed: panel.add(speedCombo); /添加速度選擇框 panel.add(new JLabel( 出現(xiàn)方位: ); /添加標(biāo)簽From: panel.add(placeCombo); /添加方位選擇框 panel.setBackground(Color.LIGHT_GRAY); add(panel, BorderLayout.EAST); /將選擇框面板加到主面板東部 colorCombo.addItem(red);colorCombo.addItem(orange); colorCombo.addI

26、tem(yellow); colorCombo.addItem(green); colorCombo.addItem(cyan); colorCombo.addItem(blue); colorCombo.addItem(magenta); speedCombo.addItem(slow); speedCombo.addItem(fast);speedCombo.addActionListener(new ActionListener() public void actionPerformed(ActionEvent event) String speed = (String)speedCom

27、bo.getSelectedItem(); if (speed.equals(slow) delay = 5; else delay = 1; ); placeCombo.addItem(Left-Top);placeCombo.addItem(Left-Bottom);placeCombo.addItem(Right-Top); placeCombo.addItem(Right-Bottom);btnAdd.addActionListener(new ActionListener() public void actionPerformed(ActionEvent event) compone

28、nt.addBall(); ); btnStopAndContinue.addActionListener(new ActionListener() public void actionPerformed(ActionEvent event) if (btnStopAndContinue.getText().equals(Stop) thread.setStop(true); /將stop標(biāo)志置為true btnStopAndContinue.setText(Continue);btnAdd.setEnabled(false); /Add按鈕不可用 else thread.setStop(fa

29、lse); /將stop標(biāo)志置為false btnStopAndContinue.setText(Stop);btnAdd.setEnabled(true); /Add按鈕可用 ); /Clear按鈕加入監(jiān)聽(tīng)器,當(dāng)按下按鈕時(shí)清空畫(huà)板 btnClear.addActionListener(new ActionListener() public void actionPerformed(ActionEvent event) balls = new ArrayList(); /將球的列表清空 component.repaint(); /重畫(huà)畫(huà)板 ); thread.start(); /畫(huà)畫(huà)板的線程開(kāi)

30、始public static void main(String args) EventQueue.invokeLater(new Runnable() public void run() JFrame frame = new JFrame(Hit Balls); /設(shè)置測(cè)試框架的標(biāo)題 frame.add(new BallPanel(); /將小球碰撞動(dòng)畫(huà)面板放上去 frame.setSize(400, 300); /設(shè)置框架大小 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /設(shè)置框架的默認(rèn)關(guān)閉方式frame.setLocation

31、ByPlatform(true); /將框架的定位交給系統(tǒng)實(shí)現(xiàn) frame.setVisible(true); /設(shè)置框架可見(jiàn) ); private class BallThread extends Thread private boolean isStop = false; /停止標(biāo)記 /* * 線程體 */ public void run() while (true) /讓它一直執(zhí)行 if (!isStop) /當(dāng)沒(méi)有停止的時(shí)候 for (int i = 0; i balls.size(); i+) balls.get(i).move(component.getBounds(); /每個(gè)小

32、球都移動(dòng)一遍 component.repaint(); /重畫(huà)畫(huà)板 try Thread.sleep(delay); /線程延緩delay毫秒 catch (InterruptedException e) /捕獲異常 e.printStackTrace(); /處理異常 public void setStop(boolean isStop) this.isStop = isStop; private class BallComponent extends JComponent public BallComponent() setUI(new ComponentUI() public void

33、installUI(JComponent c) super.installUI(c); LookAndFeel.installColors(c, Panel.background, Panel.foreground); ); public void addBall() double x = 0; /小球開(kāi)始的x坐標(biāo) double y = 0; /小球開(kāi)始的y坐標(biāo) String tmp = (String)placeCombo.getSelectedItem();if (tmp.equals(Left-Top) /如果為左上x(chóng) = component.getBounds().getMinX();

34、 /x設(shè)為畫(huà)板的最左邊的值 y = component.getBounds().getMinY(); /y設(shè)為畫(huà)板的最上邊的值 if (tmp.equals(Left-Bottom) /下同 x = component.getBounds().getMinX(); y = component.getBounds().getMaxY(); if (tmp.equals(Right-Top) x = component.getBounds().getMaxX(); y = component.getBounds().getMinY(); if (tmp.equals(Right-Bottom) x

35、 = component.getBounds().getMaxX(); y = component.getBounds().getMaxY(); Color color = Color.BLACK; /小球開(kāi)始的顏色tmp = (String)colorCombo.getSelectedItem(); /得到顏色的選擇項(xiàng)if (tmp.equals(red) /如果為red color = Color.RED; /顏色設(shè)為red if (tmp.equals(orange) /下同 color = Color.ORANGE; if (tmp.equals(yellow) color = Col

36、or.YELLOW; if (tmp.equals(green) color = Color.GREEN; if (tmp.equals(cyan) color = Color.CYAN; if (tmp.equals(blue) color = Color.BLUE; if (tmp.equals(magenta) color = Color.MAGENTA; balls.add(new Ball(x, y, color); public void paintComponent(Graphics g) super.paintComponent(g); Graphics2D g2 = (Gra

37、phics2D)g; for (int i = 0; i balls.size(); i+) /將小球列表中的小球都畫(huà)到畫(huà)板上 Ball ball = balls.get(i);g2.setColor(ball.getColor(); /設(shè)置畫(huà)布中小球的顏色 g2.fill(ball.getShape(); /畫(huà)出小球的形狀 /* * 小球類(lèi) * author zjf */ private class Ball private static final double SIZE = 20; /小球的直徑private double x = 0; /小球所在的x坐標(biāo) private double y = 0; /小球所在的y坐標(biāo) private double vx = Math.sqrt(2) / 2; /小球在x軸的速度private double vy = Math.sqrt(2) / 2; /小球在y軸的速度private Color color = Color.BLACK; /小球的

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論