JAVA_Applet舞動小球項目報告模板_第1頁
JAVA_Applet舞動小球項目報告模板_第2頁
JAVA_Applet舞動小球項目報告模板_第3頁
JAVA_Applet舞動小球項目報告模板_第4頁
JAVA_Applet舞動小球項目報告模板_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、重慶科創(chuàng)職業(yè)學院Java高級應用開發(fā)課程作業(yè)(二)課題名稱:Applet 舞動的小球設計與實現(xiàn)計算機應用技術(shù)計算機應MZK09O1完成時間:二OO 年十一月 二十五 日、課題設計目的1、進一步掌握Applet的生命周期及各種方法的應用;2、利用Graphics類完成簡單的多媒體設計;3、掌握線程的生命周期及其相關(guān)的方法;4、掌握線程應用的兩種方法及線程調(diào)度;5、通過本次課題設計,進一步理解Applet小應用程序的基本結(jié)構(gòu)和線程的基本原理。二、課題的描述和要求本次課題要求運用JAVA語言完成一個基于Applet的舞動小球,并可將這個小程序 進行修改拓展完成一個簡單的游戲設計。三、課題設計的步驟3

2、.1完成小球的繪制任務一:創(chuàng)建一個Java項目DancingBallAppiet ,然后再創(chuàng)建一個主類 DancingBall來完成設計;任務二:步驟1:在DancingBall主類中完成小球的繪制。定義小球坐標位置和小球的大小。int x,y;final int SIZE=50步驟2:重寫小應用程序的initO方法完成對小球坐標x,y的初始public void in it()x=0;y=0;步驟3:重寫小應用程序的paint(Graphics g)方法完成小球的繪制p ublic void pain t(Gra phics g)g.fillOval(x,y,SIZE,SIZE);3.2將小

3、球舞動起來定義一個線程Ball,完成對小球坐標的修改 修改paint方法中繪制小球的方法在DancingBall中聲明一個線程Ball的對象,并在init()方法中創(chuàng)建。重寫start()方法,在其中運行線程對象要使小球運動起來,即是需要不停地改變小球的坐標??梢酝ㄟ^線程不停地改變坐 標值,然后調(diào)用repaint()的方法重新繪制小球。任務一任務二任務三任務四impo rt java.a ppi et.A ppi et; import java.awt.*;p ublic class Dancin gBall exte nds App let final int SIZE=50;Ball ba

4、ll;class Ball exte nds Threadint x=0,y=0,m=2,n=2;/x、y為小球出現(xiàn)的坐標, m、n為每次改變的數(shù)值p ublic void run()while(true)x=x+m;y=y+n;if(y+SIZE=getHeight()if(x+SIZE=getWidth()rep ai nt();/首先調(diào)用up date清除界面,然后再調(diào)用pai nt方法重繪p ublic void pain t(Gra phics g)g.fillOval(ball.x,ball.y,SIZE,SIZE);思考:如何讓小球出現(xiàn)的初始位置每次都不一樣?解決方案:要使小球的

5、初始位置不一樣,即每次啟動線程時都需要給X、y賦不同的數(shù)值,因此我們可以通過隨機函數(shù)來實現(xiàn)。步驟1 :為線程類Ball增加構(gòu)造方法,通過構(gòu)造方法為x,y賦值;Ball(i nt x,i nt y)this.x=x;this.y=y;步驟2:創(chuàng)建Ball類對象時,給構(gòu)造方法傳入隨機數(shù)。ball=new Ball(i nt)(Math.ra ndom()*400), (in t)(Math.ra ndom()*400);思考:如果要求每次小球都從頂端開始出現(xiàn),又該如何創(chuàng)建呢?3.3接球擋板的設計 任務一:步驟1:int x1,y1;步驟2:完成擋板的繪制 聲明擋板的坐標完成g.fillRect(x

6、1,y1,SIZE,10)|;任務二:完成擋板隨著鼠標移動步驟 1:主類 DancingBall引用 MouseMotionListener 接口步驟2:在init()方法中為小應用程序加載 MouseMontionListener監(jiān)視器 步驟3:重寫MouseMontionListener的抽象方法public void mouseDragged(MouseEve nt arg0) public void mouseMoved(MouseEve nt arg0) x1=arg0.getX();y1=arg0.getY();rep ai nt();任務三:完成游戲計分步驟1:完成計分規(guī)則制定,

7、接住一次加10分,小球掉下一次減20分 步驟2:完成游戲計分并顯示關(guān)鍵問題:在于如何判斷接住了小球?if(n0& y1-y=SIZE&( Math.abs(x-x1)=0)score=score+10;n=(-1)* n;if(y+SIZE=this.getHeight()score=score-10; n=(-1)* n;else if(y=this.getWidth()m=(-1)*m;else if(x=getHeight()aa=(i nt)(Math.ra ndom()*25);y=0;score=score-10;if(x=getWidth()x=0;try slee p( 80)

8、; catch (Interrup tedExce pti on e) / TODO自動生成 catch塊e.prin tStackTrace();repain t();p ublic void in it()for(i nt i=0;iNUM;i+)keyi=newKeys(i nt)(Math.ra ndom()*getWidth(),0,(i nt)(Math.ra ndom()*(5)+1),(i nt)(Math.ra ndom()* (5)+1); keyi.aa=(i nt)(Math.ra ndom()*25);Ilthis.setBackgro un d(Color.blac

9、k);p ublic void start()this.addKeyListe ner(this);for(i nt i=0;ike y.len gth;i+)keyi.start();p ublic void pain t(Gra phics g)g.setColor(Color.black);g.setFont(new Font(” 黑體,Font.BOLD,16); for(i nt i=0;ike y.len gth;i+)g.drawChars(c, keyi.aa, 1,keyi.x,keyi.y);this.showStatus(” 你當前的成績?yōu)椋?score);p ublic

10、 void keyT yp ed(KeyEve nt argO) II TODO自動生成方法存根p ublic void keyP ressed(KeyEve nt argO) for(i nt i=0;i=getHeight() y=0;if(x=getWidth() x=0;try slee p(10); catch (Interrup tedExce pti on e) II TODO自動生成 catch塊e.prin tStackTrace();rep ai nt();p ublic void ini t()for(i nt i=0;is now.len gth;i+)sno wi=n

11、ewSno w(i nt)(Math.ra ndom()*(getWidth(),(i nt)(Math.ra ndom()*(getHeight(),(i nt)(Math.ra ndom()* (5)+1),(int)(Math.ra ndom()* (5)+1);this.setBackgro un d(Color.black);p ublic void start()for(i nt i=0;is now.len gth;i+) sno wi.start();p ublic void pain t(Gra phics g)g.setColor(Color.white);for(i nt

12、 i=0;i=getHeight()aa=(i nt)(Math.ra ndom()*25);y=0;score=score-10;if(x=getWidth()x=0;try slee p( 80); catch (Interrup tedExce pti on e) II TODO自動生成 catch塊 e.prin tStackTrace(); repain t();p ublic void in it()for(i nt i=0;iNUM;i+)keyi=newKeys(i nt)(Math.ra ndom()*getWidth(),0,(i nt)(Math.ra ndom()*(5

13、)+1),(i nt)(Math.ra ndom()* (5)+1); keyi.aa=(i nt)(Math.ra ndom()*25);Ilthis.setBackgro un d(Color.black);p ublic void start()this.addKeyListe ner(this);for(i nt i=0;ike y.len gth;i+)keyi.start();p ublic void pain t(Gra phics g)g.setColor(Color.black);g.setFont(new Font(” 黑體,Font.BOLD,16); for(i nt i=0;ike y.len gth;i+)g.drawChars(c, keyi.aa, 1,keyi.x,keyi.y);this.showStatus(” 你當前的成績?yōu)椋?score);p ublic void keyT yp ed(KeyEve nt argO) II TODO自動生成方法存根P ublic void keyP ressed(KeyEve nt argO) for(i nt i=0;

溫馨提示

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

評論

0/150

提交評論