龜兔賽跑程序設(shè)計(jì)報(bào)告_第1頁
龜兔賽跑程序設(shè)計(jì)報(bào)告_第2頁
龜兔賽跑程序設(shè)計(jì)報(bào)告_第3頁
龜兔賽跑程序設(shè)計(jì)報(bào)告_第4頁
龜兔賽跑程序設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、目錄前言0工程概況12.1 項(xiàng)目所用的時(shí)間12.2項(xiàng)目負(fù)責(zé)人12.3 項(xiàng)目指導(dǎo)人1正文13.1 設(shè)計(jì)的目的和意義13.2 目標(biāo)與總體方案13.3 設(shè)計(jì)方法和內(nèi)容23.3.1開發(fā)環(huán)境23.3.2設(shè)計(jì)方法23.3.4設(shè)計(jì)體會83.4 設(shè)計(jì)創(chuàng)新與關(guān)鍵技術(shù)83.4.1 設(shè)計(jì)創(chuàng)新83.4.2 關(guān)鍵技術(shù)93.5結(jié)論9致謝9參考文獻(xiàn)10附錄11前言在科技日新月異的今天,電腦成為人的生活中不可缺少的一部分。作為計(jì)算機(jī)專業(yè)的學(xué)生,應(yīng)該充分利用所學(xué)知識,把實(shí)際問題轉(zhuǎn)移到電腦上去,通過電腦的編程,使復(fù)雜問題簡單化,深?yuàn)W問題淺顯化,抽象問題具體化。在學(xué)過Java程序設(shè)計(jì)語言后,我們對計(jì)算機(jī)有了更深的了解。Java是一

2、種簡單的,跨平臺的,面向?qū)ο蟮?,分布式的,解釋的,健壯的安全的,結(jié)構(gòu)的中立的,可移植的,性能很優(yōu)異的多線程的,動態(tài)的語言。當(dāng)1995年SUN推出Java語言之后,全世界的目光都被這個(gè)神奇的語言所吸引。Java 不同于一般的編譯執(zhí)行計(jì)算機(jī)語言和解釋執(zhí)行計(jì)算機(jī)語言。它首先將源代碼編譯成二進(jìn)制字節(jié)碼(bytecode),然后依賴各種不同平臺上的虛擬機(jī)來解釋執(zhí)行字節(jié)碼,從而實(shí)現(xiàn)了“一次編譯、到處執(zhí)行”的跨平臺特性。本次課設(shè)我選擇的是龜兔賽跑游戲的制作。這個(gè)游戲?qū)嶋H上主要是對我們JAVA學(xué)習(xí)中的線程部分的考察,尤其是多線程的定義,運(yùn)行等。同時(shí)還要保證游戲有一個(gè)真實(shí)的操作界面和人性化操作設(shè)計(jì)。在設(shè)計(jì)龜兔賽

3、跑這個(gè)游戲中我也遇到了技術(shù)上的一些困難,但通過查閱資料,并且在老師的幫助下最終問題得以解決。正如龜兔賽跑這個(gè)故事一樣,雖然我們在技術(shù)上不是很優(yōu)秀,但只要有烏龜一樣堅(jiān)持不懈的精神,最終勝利到達(dá)終點(diǎn)。工程概況2.1 項(xiàng)目所用的時(shí)間從這個(gè)項(xiàng)目開始到結(jié)束總共歷時(shí)12天。完成于2015年6月19日。2.2項(xiàng)目負(fù)責(zé)人孫肖肖,女,計(jì)算機(jī)科學(xué)與技術(shù)17-4,學(xué)生。2.3 項(xiàng)目指導(dǎo)人高賢強(qiáng),男,信息工程學(xué)院教師,講師。正文3.1 設(shè)計(jì)的目的和意義本設(shè)計(jì)要求學(xué)生開發(fā)一個(gè)龜兔賽跑游戲,主要是對學(xué)生多線程編程、游戲方案設(shè)計(jì)、游戲背景及動漫制作等能力進(jìn)行培養(yǎng)鍛煉,同時(shí)還要求保證游戲有一個(gè)真實(shí)的操作界面和人性化操作設(shè)計(jì)。

4、此外,學(xué)生通過該題目的設(shè)計(jì)過程,可以初步應(yīng)用軟件系統(tǒng)的開發(fā)原理和開發(fā)方法,全面培養(yǎng)軟件開發(fā)過程中的分析、設(shè)計(jì)、編碼、測試及文檔規(guī)范書寫的能力,得到軟件工程的訓(xùn)練,提高解決實(shí)際問題的能力。(1)有助于加深我們對Java程序設(shè)計(jì)這門課程的理解,我們在課堂上學(xué)的都是基礎(chǔ)理論知識,對于如何用程序語言來描述所學(xué)知識還是有一定的難度。通過課程設(shè)計(jì),我們可以真正理解其內(nèi)涵。(2)有利于我們邏輯思維的鍛煉,程序設(shè)計(jì)能直接有效地訓(xùn)練學(xué)生的創(chuàng)新思維、培養(yǎng)分析問題、解決問題的能力。即使是一個(gè)簡單的程序,依然需要學(xué)生有條不紊的構(gòu)思。(3)有利于培養(yǎng)嚴(yán)謹(jǐn)認(rèn)真的學(xué)習(xí)態(tài)度,在程序設(shè)計(jì)的過程中,當(dāng)我們輸入程序代碼的時(shí)候,如果

5、不夠認(rèn)真細(xì)心,那么就可能導(dǎo)致語法錯(cuò)誤,從而無法得出運(yùn)行結(jié)果。那么,這個(gè)我們反復(fù)調(diào)試,反復(fù)修改的過程,其實(shí)也是對我們認(rèn)真嚴(yán)謹(jǐn)治學(xué)的一個(gè)鍛煉。3.2 目標(biāo)與總體方案(1)用圖形用戶界面實(shí)現(xiàn)游戲界面,同時(shí)通過設(shè)置布局,背景,字體等來豐富界面,最大程度的模擬龜兔賽跑的場景。 (2)能設(shè)置比賽時(shí)間,龜兔的數(shù)量等等,實(shí)現(xiàn)對比賽中龜兔的數(shù)量,比賽時(shí)間等參數(shù)的設(shè)置。 (3)在任意時(shí)間段內(nèi)龜兔的速度是隨機(jī)的,為了模擬龜兔賽跑結(jié)果的不確定性,在游戲開始后烏龜和兔子的速度都是通過隨機(jī)函數(shù)產(chǎn)生的,保證兔子比烏龜速度要快,兔子在賽跑途中看到烏龜落后下會偷懶睡覺的前提下給予烏龜,兔子以隨機(jī)的速度,從而使得游戲的結(jié)果不確定

6、,給用戶更多的游戲的真實(shí)感。 (4)開始比賽之后以動畫顯示賽跑過程,用戶進(jìn)入游戲界面后,先選擇游戲模式,然后單擊開始按鈕,烏龜和兔子將會以隨機(jī)的速度開始朝終點(diǎn)線爬行,通過重復(fù)刷新技術(shù)達(dá)到動畫效果,給用戶更逼真的感官。 (5)系統(tǒng)的開發(fā)可以采用Java語言來實(shí)現(xiàn); (6)在基本要求達(dá)到后,可進(jìn)行創(chuàng)新設(shè)計(jì),如改善算法性能、友好的人機(jī)界面。3.3 設(shè)計(jì)方法和內(nèi)容3.3.1開發(fā)環(huán)境硬件環(huán)境:一臺清華同方電腦,其配置為:CPU: Intel(R) Core(TM) i5-4570 3.2GHz 內(nèi)存:4G 硬盤:500G 主板:4260LA-2922P軟件環(huán)境:Windows 7旗艦版版本2009 Se

7、rvice Pack 1,并且安裝了可供編程的eclipse-standard-kepler-SR1-win323.3.2設(shè)計(jì)方法賽跑的過程是兩個(gè)比賽對象并行前進(jìn)的過程,考慮到應(yīng)用需求,我們可以利用多線程技術(shù),所謂多線程就是指同時(shí)存在幾個(gè)執(zhí)行體,按幾條不同的執(zhí)行線索共同工作的情況,這與要求剛好吻合,Java語言對多線程提供強(qiáng)大的支持。用直觀圖形描述龜兔賽跑前進(jìn)過程:每過一秒,兔子走過的文本框中增加三個(gè)“#”號,烏龜走過的路程文本框中增加一個(gè)“#”號。跑完路程結(jié)束線程,并顯示各自跑完全程總共用的時(shí)間。3.3.3主體內(nèi)容一、設(shè)計(jì)分析第一步:設(shè)計(jì)良好游戲界面功能:實(shí)現(xiàn)基本的開始、退出游戲功能、選擇游

8、戲模式等?;静襟E:在其上添加圖3.3.3.1 基本步驟1在實(shí)現(xiàn)過程中會遇到的問題及解決方案:1、背景面板上加載圖片時(shí)需要重寫paintComponent方法2、布局必須合理設(shè)置(GridLayout不能改變組件的具體位置但可以縮放時(shí)相對位置不變。FlowLayout默認(rèn)是占滿第一行轉(zhuǎn)向第二行,并且放大時(shí)相對位置改變。Null布局可以自由布置組件位置和大小,但不易實(shí)現(xiàn)窗口放大時(shí)相對大小隨之變化。)若設(shè)置不合理,就可能出現(xiàn)多種錯(cuò)誤。列如:無法插入背景圖片,組建不能顯現(xiàn),組件位置與設(shè)計(jì)不符等等。 3、添加背景面板監(jiān)聽重置各面板位置才能實(shí)現(xiàn)窗口放大時(shí)的相對位置不變第二步:線程類的設(shè)計(jì)功能:實(shí)現(xiàn)多只烏

9、龜,兔子的多線程運(yùn)行具體步驟:圖3.3.3.2基本步驟2第二步會遇到的問題及解決方案:1、建立兔子線程,繼承接口Runnable并正確的實(shí)現(xiàn)run()方法。同時(shí)要特別注意兔子在比賽中還要模擬睡覺的動作。2、建立烏龜線程,繼承接口Runnable并實(shí)現(xiàn)其run()方法,要與兔子多線程運(yùn)行;3、為了實(shí)現(xiàn)可選擇多只龜兔進(jìn)行賽跑,要實(shí)現(xiàn)多個(gè)兔子,烏龜線程,并能并發(fā)運(yùn)行。4、游戲中提供了模式選擇的功能,通過建立ItemSelect類來建立不同的游戲模式。二、各模塊的功能及程序說明龜兔賽跑程序主要由以下幾個(gè)模塊構(gòu)成:模塊一:初始圖形界面模塊public class RRTT extends Applet

10、implements ActionListener Graphics g; Panel panel; Label label1,label2,label3; Button button1,button2; RabTor1 rabTor1; public void init()/Applet中的初始化函數(shù)有類中構(gòu)造函數(shù)的作用!最先調(diào)用! panel=new Panel();panel.setLayout(new FlowLayout();label1=new Label("歡迎使用該軟件,1.0版本,不足之處,請多多指教!");label2=new Label("*

11、東瑞制作*程序員*陳杰*");label3=new Label();button1=new Button("進(jìn)入游戲");button2=new Button("退出游戲");button1.addActionListener(this);button2.addActionListener(this);setLayout(new BorderLayout();panel.add(button1);panel.add(label3);panel.add(button2);add(label1,BorderLayout.NORTH);add(lab

12、el2,BorderLayout.SOUTH);add(panel,BorderLayout.CENTER); public void actionPerformed(ActionEvent e) if(e.getSource()=button1) rabTor1=new RabTor1(); /dispose();else if(e.getSource()=button2) System.exit(0); 該模塊主要是用來提供進(jìn)入該程序游戲的初始圖形用戶界面,顯示該程序的基本信息,提示用戶進(jìn)行操作。模塊二:兔子線程模塊該模塊主要是實(shí)現(xiàn)兔子運(yùn)行線程,類RabbitThread 繼承了接口Run

13、nable并實(shí)現(xiàn)其方法run(),主要有兩個(gè)功能的實(shí)現(xiàn):1.來為兔子定義隨機(jī)速度x1=x1+(int)(Math.random()*30);2.兔子動的實(shí)現(xiàn)方法if(threadName.equals("rabbit")&&x1<=800) int t1=0,t2=0; str1="rabbit" x1=x1+(int)(Math.random()*30); rab_time=rab_time+1; rab_road+=(int)(Math.random()*25); 3.兔子獲得一個(gè)隨機(jī)的時(shí)間睡眠(030秒)str1="

14、烏龜跑這么慢,我先睡一會" str2="哼,別以為自己是兔子就了不起!你就睡吧!" rabbit = getImage( getCodeBase(),"4.jpg"); try t1=(int)(Math.random()*30000); Thread.currentThread().sleep(t1); catch (InterruptedException e)模塊三:烏龜線程模塊該模塊主要是實(shí)現(xiàn)烏龜運(yùn)行線程,類TortoiseThread繼承了接口Runnable并實(shí)現(xiàn)其方法run(),主要功能的實(shí)現(xiàn):烏龜移動實(shí)現(xiàn)的方法!else if(

15、threadName.equals("tortoise")&&x2<=600) x2+=(int)(Math.random()*20); tor_road+=(int)(Math.random()*20); tor_time=tor_time+1; if(x2>140&&x2<240) str2="tortoise" if(x2>255&&x2<=480) str2="tortoise" if(x2>480&&x1<580) st

16、r2="就快到終點(diǎn)了,我要堅(jiān)持下去,堅(jiān)持就是勝利!"通過隨機(jī)函數(shù)實(shí)現(xiàn)烏龜隨機(jī)速度爬行。模塊四:畫布界面的設(shè)置與布局class Imagecanvas extends Canvas Toolkit tool; Image image1; Imagecanvas() setSize(800,500); tool=getToolkit(); image1=tool.getImage("6.gif"); public void paint(Graphics g) g.drawImage(image1,10,10,image1.getWidth(this),ima

17、ge1.getHeight(this),this); public Image getImage() return image1; 三、操作方法及試驗(yàn)結(jié)果: (第一局比賽開始) (兔子領(lǐng)先) (兔子勝利) (第二局比賽開始) (兔子中途睡覺) (烏龜反超兔子,最終勝利)3.3.4設(shè)計(jì)體會 本系統(tǒng)是一個(gè)基于多線程模式的龜兔賽跑小游戲,系統(tǒng)的規(guī)模很有限,功能實(shí)現(xiàn)也相對簡單,但作為一個(gè)完整的系統(tǒng),在整個(gè)過程中我還是學(xué)到了不少的知識,也對java語言有了較深的體會。通過本次課設(shè)試驗(yàn),我對java的熟練程度得到了很大的提升,對包括多線程在內(nèi)的java語言高級技術(shù)掌握的也更加熟練了,更對面向?qū)ο蟮姆治鏊枷?/p>

18、,面向?qū)ο蟮脑O(shè)計(jì)方法有了直觀的體會。同時(shí),在游戲的制作過程中要用到很多課本上并未介紹到的知識,例如多線程隊(duì)列事件等等,通過網(wǎng)絡(luò)學(xué)習(xí)和與老師同學(xué)的交流使得自己對該部分的知識有了更廣泛更深刻的體會。當(dāng)然本次課設(shè),通過我不斷的嘗試,不斷的修改錯(cuò)誤,解決問題,終于明白了程序員生活中天堂與地獄的感覺是什么了。雖然這個(gè)過程很苦,但我對java的熟練程度得到了很大的提升。同時(shí),在游戲的制作過程中要用到很多課本上并未介紹到的知識,如當(dāng)我遇到如何在一個(gè)Japplet類中創(chuàng)建另外一個(gè)Applet類的對象并運(yùn)行線程的問題時(shí),我糾結(jié)了很久沒能找到解決辦法,最終通過上網(wǎng)百度,不斷嘗試,不斷錯(cuò),在不斷改,終于解決了。通過

19、網(wǎng)絡(luò)學(xué)習(xí)使得自己對該部分的知識有了更廣泛更深刻的體會。這次的課程設(shè)計(jì)時(shí)間有點(diǎn)短,僅有二周的時(shí)間。在調(diào)試過程中屢調(diào)屢敗的狀態(tài)下,老師給了我熱情的幫助,老師指導(dǎo)我們調(diào)試程序,說哪些是錯(cuò)的,哪些是多余的,哪些是必要的,一個(gè)雜亂無章的程序被修改得有條不紊,很顯然結(jié)果也是最最正確的。本次系統(tǒng)的功能相對還比較單一,只能選擇兩種游戲模式,并且游戲也相對單調(diào),缺乏趣味性,離一個(gè)真正的游戲軟件還相差很遠(yuǎn),以后如有時(shí)間,可以考慮去做一個(gè)真正的游戲軟件。3.4 設(shè)計(jì)創(chuàng)新與關(guān)鍵技術(shù) 3.4.1 設(shè)計(jì)創(chuàng)新1、用圖形用戶界面實(shí)現(xiàn)游戲界面;通過使用java中Jlabel,Jbutton,JtextArea,JcomboBo

20、x等swing組件來實(shí)現(xiàn)圖形用戶界面,同時(shí)通過設(shè)置布局,背景,字體等來豐富界面,最大程度的模擬龜兔賽跑的場景。2、能設(shè)置比賽時(shí)間,龜兔的數(shù)量等等。通過組合框組件的使用以及事件的訂閱來實(shí)現(xiàn)用戶對不同游戲模式的選擇,在本程序中只是簡單的設(shè)計(jì)了兩種游戲模式供用戶選擇,也一定程度上實(shí)現(xiàn)了對比賽中龜兔的數(shù)量,比賽時(shí)間等參數(shù)的設(shè)置。3、在任意時(shí)間段內(nèi)龜兔的速度是隨機(jī)的。為了模擬龜兔賽跑結(jié)果的不確定性,在游戲開始后烏龜和兔子的速度都是通過隨機(jī)函數(shù)產(chǎn)生的,當(dāng)然,我們會在保證兔子比烏龜速度要快,兔子在賽跑途中看到烏龜落后下會偷懶睡覺的前提下給予烏龜,兔子以隨機(jī)的速度,從而使得游戲的結(jié)果不確定,給用戶更多的游戲的

21、真實(shí)感。4、開始比賽之后以動畫顯示賽跑過程。用戶進(jìn)入游戲界面后,先選擇游戲模式,然后單擊開始按鈕,烏龜和兔子將會以隨機(jī)的速度開始朝終點(diǎn)線爬行,通過java中重復(fù)刷新技術(shù)達(dá)到動畫效果,給用戶更逼真的感官。3.4.2 關(guān)鍵技術(shù)游戲中提供了模式選擇的功能,通過建立ItemSelect類來建立不同的游戲模式。 建立兔子和烏龜線程,繼承接口Runnable并正確的實(shí)現(xiàn)run()方法。3.5結(jié)論程序的語法錯(cuò)誤很容易查找和修改,但找出了語法錯(cuò)誤并不代表程序已經(jīng)完成。很多編譯錯(cuò)誤是由于函數(shù)名或變量名等程序?qū)ο蟮钠磳戝e(cuò)誤引起的。在編寫程序的過程中,需要認(rèn)真仔細(xì),以免出現(xiàn)拼寫錯(cuò)誤,增加調(diào)試程序的工序,浪費(fèi)不必要的

22、時(shí)間和精力。 在這個(gè)過程中,我收獲頗多,不僅理論知識掌握的更牢,實(shí)際動手能力也有所提高,再次讓我感受到Java語言強(qiáng)大的功能,更激發(fā)了我Java語言的興趣。如果說以前的編程僅僅是按照課本的要求進(jìn)行的,那這個(gè)課程設(shè)計(jì)難度就提高了一個(gè)級別,它讓們將所知道的知識聯(lián)系到了一起,更加顯示了程序的強(qiáng)大。致謝首先我要感謝我的老師在課程設(shè)計(jì)上給予我們的指導(dǎo)和提供給我們的支持和幫助,這是我們能順利完成這次課程設(shè)計(jì)的主要原因,更重要的是老師幫我解決了許多技術(shù)上的難題,讓我們能把程序做得更加完善。在此期間,我不僅學(xué)到了許多新的知識,而且也開闊了視野,提高了自己的設(shè)計(jì)能力。其次,我要感謝曾經(jīng)幫助過我的同學(xué),

23、他們也為我解決了不少我不太明白的設(shè)計(jì)語言,和一些細(xì)節(jié)上的差錯(cuò)。本次設(shè)計(jì)是在高賢強(qiáng)老師的悉心指導(dǎo)下完成的,老師淵博的知識,嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度,一絲不茍的工作作風(fēng),平易近人的性格都是我們學(xué)習(xí)的楷模。在論文的整理期間,高老師給了我們很多的意見和指導(dǎo),才使得論文得以順利的完成。最后再一次感謝所有在設(shè)計(jì)中曾經(jīng)幫助過我的良師益友和同學(xué)。在此,我誠心的對所有幫助過我的老師同學(xué)們說一句:謝謝!參考文獻(xiàn)1 丁振凡Java語言使用教程. 北京郵件大學(xué)出版社,2006.9 2 丁振凡Java語言使用教程實(shí)驗(yàn)指導(dǎo). 北京郵件大學(xué)出版社,2006.9 3 Bruce Eckel Java編程思想. 機(jī)械工業(yè)出版社 2007

24、.6 4 耿祥義 JAVA2實(shí)用教程.清華大學(xué)出版社 2009.55 陳國君 java 程序設(shè)計(jì)基礎(chǔ)(第二版) 清華大學(xué)出版社6 劉藝,吳英Java程序設(shè)計(jì)大學(xué)教程 M北京:科學(xué)出版社,2005年7 趙文靖.Java程序設(shè)計(jì)基礎(chǔ)與上機(jī)指導(dǎo).北京:清華大學(xué)出版社,2006年.8 吳其慶.Java程序設(shè)計(jì)實(shí)例教程.北京:冶金工業(yè)出版社,2006年.9 耿祥義,張躍平Java基礎(chǔ)教程(第2版) M北京:清華大學(xué)出版社,2007年10 美Bruce Eckel. Thinking In Java.英文第4版.北京:機(jī)械工業(yè)出版社,200711 楊昭編著.二級Java語言程序設(shè)計(jì)教程.北京:中國水利水電

25、出版社,200612 趙文靖編著.Java程序設(shè)計(jì)基礎(chǔ)與上機(jī)指導(dǎo).北京:清華大學(xué)出版社,200613 張海藩.軟件工程導(dǎo)論(第四、五版)M.北京:清華大學(xué)出版社, 2008. 14Cay S and Gary C. Java2核心技術(shù)(卷 1: 基礎(chǔ)知識)M.機(jī)械工業(yè)出版社,2003.15鄧光偉,李阿午,朱志.Java2核心技術(shù)(卷2:高級特性)M.機(jī)械工業(yè)出版社,2000.16Watson K,Nagel C,齊立波.C#入門經(jīng)典M.清華大學(xué)出版社,2002. 17張廣彬,孟紅蕊,張

26、永寶.C+課程設(shè)計(jì)案例精編M.清華大學(xué)出版社,2005.18朱喜福.C+程序設(shè)計(jì)M.人民郵電出版社,2005. 19宛延闿.實(shí)用C+程序設(shè)計(jì)教程M.機(jī)械工業(yè)出版社,2006.  附錄源程序package sxx; import java.awt.Color;import java.awt.Graphics;import java.awt.Image;import javax.swing.JApplet;import java.awt.*;import java.awt.event.*;import java.util.Arrays;import java.lang

27、.*;import java.applet.Applet;import java.applet.AudioClip;import .URL; SuppressWarnings( "unused", "serial" )class Imagecanvas extends Canvas Toolkit tool; Image image1; Imagecanvas() setSize(800,500); tool=getToolkit(); image1=tool.getImage("6.gif"); public void paint(

28、Graphics g) g.drawImage(image1,10,10,image1.getWidth(this),image1.getHeight(this),this); public Image getImage() return image1; /*public class frame extends Frame implements ActionListenerPanel panel;Label label1,label2,label3;Button button1,button2; RabTor1 rabTor1;frame()panel=new Panel();panel.se

29、tLayout(new FlowLayout();label1=new Label("歡迎使用該軟件,1.0版本,不足之處,請多多指教!");label2=new Label("*東瑞制作*程序員*孫肖肖*");label3=new Label();button1=new Button("進(jìn)入游戲");button2=new Button("退出游戲");button1.addActionListener(this);button2.addActionListener(this);/label1.setText(&

30、quot;歡迎使用該軟件,1.0版本,不足之處,請多多指教!");/label2.setText("*東瑞制作*程序員*孫肖肖*");setLayout(new BorderLayout();panel.add(button1);panel.add(label3);panel.add(button2);add(label1,BorderLayout.NORTH);add(label2,BorderLayout.SOUTH);add(panel,BorderLayout.CENTER);addWindowListener(new WindowAdapter() pu

31、blic void WindowClosing(WindowEvent e) System.exit(0); ); setBounds(300,200,300,200); setVisible(true); validate(); public void actionPerformed(ActionEvent e)if(e.getSource()=button2) rabTor1=new RabTor1();*/package sxx;import java.applet.AudioClip;import java.awt.Color;import java.awt.Graphics;impo

32、rt java.awt.Image;import .URL;import javax.swing.JApplet; SuppressWarnings("serial")public class RabTor1 extends JApplet implements Runnable Graphics g; int i=1; Image backpic,rabbit,tortoise,zhongdian,tortoise2,rabbit2; int x1=0,y1=80,j=0; int x2=0,y2=180;/圖片的位移! int rab_road=0,tor_road=0

33、;/圖片跑的路程! double rab_time=0.0,tor_time=0.0;/圖片移動用的時(shí)間 String str1="rabbit",str2="tortoise"/給字符串付初值! setSize(800,400); /為什么沒用? public void init()/Applet中的初始化函數(shù)有類中構(gòu)造函數(shù)的作用!最先調(diào)用! backpic = getImage(getCodeBase(), "起跑.jpg");/將圖片對象與圖片 綁定! rabbit = getImage( getCodeBase(),"

34、;兔子.gif"); tortoise = getImage(getCodeBase(), "烏龜.jpg"); zhongdian = getImage(getCodeBase(), "烏龜贏了.png"); tortoise2 = getImage(getCodeBase(),"小烏龜.jpg"); rabbit2=getImage(getCodeBase(),"兔子在前.jpg"); /rabbit3=getImage(getBase(),"3.jpg"); public voi

35、d paint(Graphics g)/此函數(shù)第四個(gè)調(diào)用! this.g=g; setSize(760,360); if(i=1) g.drawImage(backpic, 0, 0, 800, 600, this); g.setColor(Color.green); g.fillRect(0, 0, 1600, 800);/填充矩形 g.setColor(Color.red); g.drawString("-背景音樂孫肖肖制作",30,30); g.drawLine(0,75,600,75);/畫跑道 g.drawLine(0,160,600,160); g.drawLi

36、ne(0,260,600,260); g.drawLine(603,80,603,300); g.drawRoundRect(0,10,680,300,60,60);/圓角矩形 g.setColor(Color.black); g.drawImage(rabbit, x1, y1, 60, 60, this); g.drawString(str1, x1, y1+80); g.drawImage(tortoise, x2, y2, 60, 60, this); g.drawString(str2, x2, y2+80); g.drawImage(zhongdian, 600, 0, 60, 8

37、0, this); else if(i=2) g.drawImage(tortoise2, 600, 180, 60, 60, this); /*else if(i=3) int x3=245,y3=80; g.drawImage(rabbit2,600,80,60,60,this); else int x4=490,y4=80; g.drawImage(rabbit2,x4,y4,60,60,this); */ /System.out.println(j); public void update(Graphics g)/用不到! public void start()/此函數(shù)第二個(gè)調(diào)用! T

38、hread rab = new Thread(this, "rabbit");/創(chuàng)建一個(gè)兔子線程,this表示在這個(gè)類中找.rabbit是線程的名子. Thread tor = new Thread(this, "tortoise"); rab.start();/線程對象調(diào)用start()方法!然后調(diào)用對應(yīng)的run()方法! tor.start(); /*public void stop() tryrab.stop(); rab=null; tor.stop(); tor=null; catch(Exception e) */ /為什么沒用? /publ

39、ic void destroy() / public void run()/此函數(shù)第三個(gè)調(diào)用! URL codebase=getCodeBase(); System.out.println(codebase); AudioClip audio1=getAudioClip(codebase,"龜兔賽跑.wav"); g.drawString("-背景音樂魯晶晶制作",30,30); audio1.loop(); boolean stop=false;/標(biāo)志,此函數(shù)的精典之處.控制兔子,龜什么時(shí)候停! while(!stop) try Thread.curr

40、entThread();Thread.sleep(1000);/當(dāng)前線程調(diào)用sleep()函數(shù). catch (InterruptedException ex) String threadName=Thread.currentThread().getName();/取得當(dāng)前線程的名子. if(threadName.equals("rabbit")&&x1<=800)/兔子動的實(shí)現(xiàn)方法! int t1=0,t2=0; str1="rabbit" x1=x1+(int)(Math.random()*30); rab_time=rab_t

41、ime+1; rab_road+=(int)(Math.random()*25); if(x1>=120&&x1<=140&&x1<x2) str1="烏龜跑這么慢,我肯定能追上他!我先睡一會" str2="哼,別以為自己是兔子就了不起!你就睡吧!" rabbit = getImage( getCodeBase(),"兔子睡覺.jpg"); if(x1>=120&&x1<=130) str1="烏龜跑這么慢,我先睡一會" str2="哼,別以為自己是兔子就了不起!你就睡吧!" rabbit = getImage( getCodeBase(),"兔子睡覺.jpg"); try t1=(int)(Math.random()*30000); Thread.currentThread();Thread.sleep(t1); catch (InterruptedException ex) rab_time+=(double)t1/1000; if(x1>140) rabbit = getImage( getCodeBase(),"rabbit.g

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論