JAVA_Applet舞動(dòng)小球項(xiàng)目報(bào)告模板_第1頁
JAVA_Applet舞動(dòng)小球項(xiàng)目報(bào)告模板_第2頁
JAVA_Applet舞動(dòng)小球項(xiàng)目報(bào)告模板_第3頁
JAVA_Applet舞動(dòng)小球項(xiàng)目報(bào)告模板_第4頁
JAVA_Applet舞動(dòng)小球項(xiàng)目報(bào)告模板_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余8頁可下載查看

下載本文檔

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

文檔簡介

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

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

3、球舞動(dòng)起來定義一個(gè)線程Ball,完成對小球坐標(biāo)的修改 修改paint方法中繪制小球的方法在DancingBall中聲明一個(gè)線程Ball的對象,并在init()方法中創(chuàng)建。重寫start()方法,在其中運(yùn)行線程對象要使小球運(yùn)動(dòng)起來,即是需要不停地改變小球的坐標(biāo)??梢酝ㄟ^線程不停地改變坐 標(biāo)值,然后調(diào)用repaint()的方法重新繪制小球。任務(wù)一任務(wù)二任務(wù)三任務(wù)四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)的坐標(biāo), 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、初始位置不一樣,即每次啟動(dòng)線程時(shí)都需要給X、y賦不同的數(shù)值,因此我們可以通過隨機(jī)函數(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類對象時(shí),給構(gòu)造方法傳入隨機(jī)數(shù)。ball=new Ball(i nt)(Math.ra ndom()*400), (in t)(Math.ra ndom()*400);思考:如果要求每次小球都從頂端開始出現(xiàn),又該如何創(chuàng)建呢?3.3接球擋板的設(shè)計(jì) 任務(wù)一:步驟1:int x1,y1;步驟2:完成擋板的繪制 聲明擋板的坐標(biāo)完成g.fillRect(x

6、1,y1,SIZE,10)|;任務(wù)二:完成擋板隨著鼠標(biāo)移動(dòng)步驟 1:主類 DancingBall引用 MouseMotionListener 接口步驟2:在init()方法中為小應(yīng)用程序加載 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();任務(wù)三:完成游戲計(jì)分步驟1:完成計(jì)分規(guī)則制定,

7、接住一次加10分,小球掉下一次減20分 步驟2:完成游戲計(jì)分并顯示關(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自動(dòng)生成 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(” 你當(dāng)前的成績?yōu)椋?score);p ublic

10、 void keyT yp ed(KeyEve nt argO) II TODO自動(dòng)生成方法存根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自動(dòng)生成 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自動(dòng)生成 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(” 你當(dāng)前的成績?yōu)椋?score);p ublic void keyT yp ed(KeyEve nt argO) II TODO自動(dòng)生成方法存根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)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論