




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上喬文東 計(jì)算機(jī)科學(xué)與技術(shù) 001目錄專心-專注-專業(yè)前言在科技日新月異的今天,電腦成為人的生活中不可缺少的一部分。作為計(jì)算機(jī)專業(yè)的學(xué)生,應(yīng)該充分利用所學(xué)知識(shí),把實(shí)際問(wèn)題轉(zhuǎn)移到電腦上去,通過(guò)電腦的編程,使復(fù)雜問(wèn)題簡(jiǎn)單化,深?yuàn)W問(wèn)題淺顯化,抽象問(wèn)題具體化。在學(xué)過(guò)Java程序設(shè)計(jì)語(yǔ)言后,我們對(duì)計(jì)算機(jī)有了更深的了解。是一種簡(jiǎn)單的,的,的,的,解釋的,健壯的安全的,結(jié)構(gòu)的中立的,可移植的,性能很優(yōu)異的的,動(dòng)態(tài)的語(yǔ)言。當(dāng)1995年推出之后,全世界的目光都被這個(gè)神奇的語(yǔ)言所吸引。Java 不同于一般的和解釋執(zhí)行計(jì)算機(jī)語(yǔ)言。它首先將源代碼編譯成二進(jìn)制字節(jié)碼(bytecode),然后依賴
2、各種不同平臺(tái)上的虛擬機(jī)來(lái)解釋執(zhí)行字節(jié)碼,從而實(shí)現(xiàn)了“一次編譯、到處執(zhí)行”的跨平臺(tái)特性。本次課設(shè)我選擇的是龜兔賽跑游戲的制作。這個(gè)游戲?qū)嶋H上主要是對(duì)我們JAVA學(xué)習(xí)中的線程部分的考察,尤其是多線程的定義,運(yùn)行等。同時(shí)還要保證游戲有一個(gè)真實(shí)的操作界面和人性化操作設(shè)計(jì)。在設(shè)計(jì)龜兔賽跑這個(gè)游戲中我也遇到了技術(shù)上的一些困難,但通過(guò)查閱資料,并且在老師的幫助下最終問(wèn)題得以解決。正如龜兔賽跑這個(gè)故事一樣,雖然我們?cè)诩夹g(shù)上不是很優(yōu)秀,但只要有烏龜一樣堅(jiān)持不懈的精神,最終勝利到達(dá)終點(diǎn)。喬文東 計(jì)算機(jī)科學(xué)與技術(shù) 001工程概況2.1 項(xiàng)目所用的時(shí)間從這個(gè)項(xiàng)目開始到結(jié)束總共歷時(shí)12天。完成于2015年6月19日。2
3、.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è)龜兔賽跑游戲,主要是對(duì)學(xué)生多線程編程、游戲方案設(shè)計(jì)、游戲背景及動(dòng)漫制作等能力進(jìn)行培養(yǎng)鍛煉,同時(shí)還要求保證游戲有一個(gè)真實(shí)的操作界面和人性化操作設(shè)計(jì)。此外,學(xué)生通過(guò)該題目的設(shè)計(jì)過(guò)程,可以初步應(yīng)用軟件系統(tǒng)的開發(fā)原理和開發(fā)方法,全面培養(yǎng)軟件開發(fā)過(guò)程中的分析、設(shè)計(jì)、編碼、測(cè)試及文檔規(guī)范書寫的能力,得到軟件工程的訓(xùn)練,提高解決實(shí)際問(wèn)題的能力。(1)有助于加深我們對(duì)Java程序設(shè)計(jì)這門課程的理解,我們?cè)谡n堂上學(xué)的都是基礎(chǔ)理論知識(shí),對(duì)于如何用程序語(yǔ)言
4、來(lái)描述所學(xué)知識(shí)還是有一定的難度。通過(guò)課程設(shè)計(jì),我們可以真正理解其內(nèi)涵。(2)有利于我們邏輯思維的鍛煉,程序設(shè)計(jì)能直接有效地訓(xùn)練學(xué)生的創(chuàng)新思維、培養(yǎng)分析問(wèn)題、解決問(wèn)題的能力。即使是一個(gè)簡(jiǎn)單的程序,依然需要學(xué)生有條不紊的構(gòu)思。(3)有利于培養(yǎng)嚴(yán)謹(jǐn)認(rèn)真的學(xué)習(xí)態(tài)度,在程序設(shè)計(jì)的過(guò)程中,當(dāng)我們輸入程序代碼的時(shí)候,如果不夠認(rèn)真細(xì)心,那么就可能導(dǎo)致語(yǔ)法錯(cuò)誤,從而無(wú)法得出運(yùn)行結(jié)果。那么,這個(gè)我們反復(fù)調(diào)試,反復(fù)修改的過(guò)程,其實(shí)也是對(duì)我們認(rèn)真嚴(yán)謹(jǐn)治學(xué)的一個(gè)鍛煉。3.2 目標(biāo)與總體方案(1)用圖形用戶界面實(shí)現(xiàn)游戲界面,同時(shí)通過(guò)設(shè)置布局,背景,字體等來(lái)豐富界面,最大程度的模擬龜兔賽跑的場(chǎng)景。 (2)能設(shè)置比賽時(shí)間,龜
5、兔的數(shù)量等等,實(shí)現(xiàn)對(duì)比賽中龜兔的數(shù)量,比賽時(shí)間等參數(shù)的設(shè)置。 (3)在任意時(shí)間段內(nèi)龜兔的速度是隨機(jī)的,為了模擬龜兔賽跑結(jié)果的不確定性,在游戲開始后烏龜和兔子的速度都是通過(guò)隨機(jī)函數(shù)產(chǎn)生的,保證兔子比烏龜速度要快,兔子在賽跑途中看到烏龜落后下會(huì)偷懶睡覺的前提下給予烏龜,兔子以隨機(jī)的速度,從而使得游戲的結(jié)果不確定,給用戶更多的游戲的真實(shí)感。 (4)開始比賽之后以動(dòng)畫顯示賽跑過(guò)程,用戶進(jìn)入游戲界面后,先選擇游戲模式,然后單擊開始按鈕,烏龜和兔子將會(huì)以隨機(jī)的速度開始朝終點(diǎn)線爬行,通過(guò)重復(fù)刷新技術(shù)達(dá)到動(dòng)畫效果,給用戶更逼真的感官。 (5)系統(tǒng)的開發(fā)可以采用Java語(yǔ)言來(lái)實(shí)現(xiàn); (6)在基本要求達(dá)到后,可進(jìn)
6、行創(chuàng)新設(shè)計(jì),如改善算法性能、友好的人機(jī)界面。3.3 設(shè)計(jì)方法和內(nèi)容3.3.1開發(fā)環(huán)境硬件環(huán)境:一臺(tái)清華同方電腦,其配置為:CPU: Intel(R) Core(TM) i5-4570 3.2GHz 內(nèi)存:4G 硬盤:500G 主板:4260LA-2922P軟件環(huán)境:Windows 7旗艦版版本2009 Service Pack 1,并且安裝了可供編程的eclipse-standard-kepler-SR1-win323.3.2設(shè)計(jì)方法賽跑的過(guò)程是兩個(gè)比賽對(duì)象并行前進(jìn)的過(guò)程,考慮到應(yīng)用需求,我們可以利用多線程技術(shù),所謂多線程就是指同時(shí)存在幾個(gè)執(zhí)行體,按幾條不同的執(zhí)行線索共同工作的情況,這與要求剛
7、好吻合,Java語(yǔ)言對(duì)多線程提供強(qiáng)大的支持。用直觀圖形描述龜兔賽跑前進(jìn)過(guò)程:每過(guò)一秒,兔子走過(guò)的文本框中增加三個(gè)“#”號(hào),烏龜走過(guò)的路程文本框中增加一個(gè)“#”號(hào)。跑完路程結(jié)束線程,并顯示各自跑完全程總共用的時(shí)間。3.3.3主體內(nèi)容一、設(shè)計(jì)分析第一步:設(shè)計(jì)良好游戲界面功能:實(shí)現(xiàn)基本的開始、退出游戲功能、選擇游戲模式等。基本步驟:在其上添加圖3.3.3.1 基本步驟1在實(shí)現(xiàn)過(guò)程中會(huì)遇到的問(wèn)題及解決方案:1、背景面板上加載圖片時(shí)需要重寫paintComponent方法2、布局必須合理設(shè)置(GridLayout不能改變組件的具體位置但可以縮放時(shí)相對(duì)位置不變。FlowLayout默認(rèn)是占滿第一行轉(zhuǎn)向第二
8、行,并且放大時(shí)相對(duì)位置改變。Null布局可以自由布置組件位置和大小,但不易實(shí)現(xiàn)窗口放大時(shí)相對(duì)大小隨之變化。)若設(shè)置不合理,就可能出現(xiàn)多種錯(cuò)誤。列如:無(wú)法插入背景圖片,組建不能顯現(xiàn),組件位置與設(shè)計(jì)不符等等。 3、添加背景面板監(jiān)聽重置各面板位置才能實(shí)現(xiàn)窗口放大時(shí)的相對(duì)位置不變第二步:線程類的設(shè)計(jì)功能:實(shí)現(xiàn)多只烏龜,兔子的多線程運(yùn)行具體步驟:圖3.3.3.2基本步驟2第二步會(huì)遇到的問(wèn)題及解決方案:1、建立兔子線程,繼承接口Runnable并正確的實(shí)現(xiàn)run()方法。同時(shí)要特別注意兔子在比賽中還要模擬睡覺的動(dòng)作。2、建立烏龜線程,繼承接口Runnable并實(shí)現(xiàn)其run()方法,要與兔子多線程運(yùn)行;3、
9、為了實(shí)現(xiàn)可選擇多只龜兔進(jìn)行賽跑,要實(shí)現(xiàn)多個(gè)兔子,烏龜線程,并能并發(fā)運(yùn)行。4、游戲中提供了模式選擇的功能,通過(guò)建立ItemSelect類來(lái)建立不同的游戲模式。二、各模塊的功能及程序說(shuō)明龜兔賽跑程序主要由以下幾個(gè)模塊構(gòu)成:模塊一:初始圖形界面模塊public class RRTT extends Applet implements ActionListener Graphics g; Panel panel; Label label1,label2,label3; Button button1,button2; RabTor1 rabTor1; public void init()/Applet中
10、的初始化函數(shù)有類中構(gòu)造函數(shù)的作用!最先調(diào)用! panel=new Panel();panel.setLayout(new FlowLayout();label1=new Label("歡迎使用該軟件,1.0版本,不足之處,請(qǐng)多多指教!");label2=new Label("*東瑞制作*程序員*陳杰*");label3=new Label();button1=new Button("進(jìn)入游戲");button2=new Button("退出游戲");button1.addActionListener(this);b
11、utton2.addActionListener(this);setLayout(new BorderLayout();panel.add(button1);panel.add(label3);panel.add(button2);add(label1,BorderLayout.NORTH);add(label2,BorderLayout.SOUTH);add(panel,BorderLayout.CENTER); public void actionPerformed(ActionEvent e) if(e.getSource()=button1) rabTor1=new RabTor1()
12、; /dispose();else if(e.getSource()=button2) System.exit(0); 該模塊主要是用來(lái)提供進(jìn)入該程序游戲的初始圖形用戶界面,顯示該程序的基本信息,提示用戶進(jìn)行操作。模塊二:兔子線程模塊該模塊主要是實(shí)現(xiàn)兔子運(yùn)行線程,類RabbitThread 繼承了接口Runnable并實(shí)現(xiàn)其方法run(),主要有兩個(gè)功能的實(shí)現(xiàn):1.來(lái)為兔子定義隨機(jī)速度x1=x1+(int)(Math.random()*30);2.兔子動(dòng)的實(shí)現(xiàn)方法if(threadName.equals("rabbit")&&x1<=800) int
13、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="烏龜跑這么慢,我先睡一會(huì)" str2="哼,別以為自己是兔子就了不起!你就睡吧!" rabbit = getImage( getCodeBase(),"4.jpg"); try t1=(int)(Math.random()*30000); T
14、hread.currentThread().sleep(t1); catch (InterruptedException e)模塊三:烏龜線程模塊該模塊主要是實(shí)現(xiàn)烏龜運(yùn)行線程,類TortoiseThread繼承了接口Runnable并實(shí)現(xiàn)其方法run(),主要功能的實(shí)現(xiàn):烏龜移動(dòng)實(shí)現(xiàn)的方法!else if(threadName.equals("tortoise")&&x2<=600) x2+=(int)(Math.random()*20); tor_road+=(int)(Math.random()*20); tor_time=tor_time+1;
15、if(x2>140&&x2<240) str2="tortoise" if(x2>255&&x2<=480) str2="tortoise" if(x2>480&&x1<580) str2="就快到終點(diǎn)了,我要堅(jiān)持下去,堅(jiān)持就是勝利!"通過(guò)隨機(jī)函數(shù)實(shí)現(xiàn)烏龜隨機(jī)速度爬行。模塊四:畫布界面的設(shè)置與布局class Imagecanvas extends Canvas Toolkit tool; Image image1; Imagecanvas() setS
16、ize(800,500); tool=getToolkit(); image1=tool.getImage("6.gif"); public void paint(Graphics g) g.drawImage(image1,10,10,image1.getWidth(this),image1.getHeight(this),this); public Image getImage() return image1; 三、操作方法及試驗(yàn)結(jié)果: (第一局比賽開始) (兔子領(lǐng)先) (兔子勝利) (第二局比賽開始) (兔子中途睡覺) (烏龜反超兔子,最終勝利)3.3.4設(shè)計(jì)體會(huì) 本
17、系統(tǒng)是一個(gè)基于多線程模式的龜兔賽跑小游戲,系統(tǒng)的規(guī)模很有限,功能實(shí)現(xiàn)也相對(duì)簡(jiǎn)單,但作為一個(gè)完整的系統(tǒng),在整個(gè)過(guò)程中我還是學(xué)到了不少的知識(shí),也對(duì)java語(yǔ)言有了較深的體會(huì)。通過(guò)本次課設(shè)試驗(yàn),我對(duì)java的熟練程度得到了很大的提升,對(duì)包括多線程在內(nèi)的java語(yǔ)言高級(jí)技術(shù)掌握的也更加熟練了,更對(duì)面向?qū)ο蟮姆治鏊枷耄嫦驅(qū)ο蟮脑O(shè)計(jì)方法有了直觀的體會(huì)。同時(shí),在游戲的制作過(guò)程中要用到很多課本上并未介紹到的知識(shí),例如多線程隊(duì)列事件等等,通過(guò)網(wǎng)絡(luò)學(xué)習(xí)和與老師同學(xué)的交流使得自己對(duì)該部分的知識(shí)有了更廣泛更深刻的體會(huì)。當(dāng)然本次課設(shè),通過(guò)我不斷的嘗試,不斷的修改錯(cuò)誤,解決問(wèn)題,終于明白了程序員生活中天堂與地獄的感覺是
18、什么了。雖然這個(gè)過(guò)程很苦,但我對(duì)java的熟練程度得到了很大的提升。同時(shí),在游戲的制作過(guò)程中要用到很多課本上并未介紹到的知識(shí),如當(dāng)我遇到如何在一個(gè)Japplet類中創(chuàng)建另外一個(gè)Applet類的對(duì)象并運(yùn)行線程的問(wèn)題時(shí),我糾結(jié)了很久沒能找到解決辦法,最終通過(guò)上網(wǎng)百度,不斷嘗試,不斷錯(cuò),在不斷改,終于解決了。通過(guò)網(wǎng)絡(luò)學(xué)習(xí)使得自己對(duì)該部分的知識(shí)有了更廣泛更深刻的體會(huì)。這次的課程設(shè)計(jì)時(shí)間有點(diǎn)短,僅有二周的時(shí)間。在調(diào)試過(guò)程中屢調(diào)屢敗的狀態(tài)下,老師給了我熱情的幫助,老師指導(dǎo)我們調(diào)試程序,說(shuō)哪些是錯(cuò)的,哪些是多余的,哪些是必要的,一個(gè)雜亂無(wú)章的程序被修改得有條不紊,很顯然結(jié)果也是最最正確的。本次系統(tǒng)的功能相對(duì)
19、還比較單一,只能選擇兩種游戲模式,并且游戲也相對(duì)單調(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)游戲界面;通過(guò)使用java中Jlabel,Jbutton,JtextArea,JcomboBox等swing組件來(lái)實(shí)現(xiàn)圖形用戶界面,同時(shí)通過(guò)設(shè)置布局,背景,字體等來(lái)豐富界面,最大程度的模擬龜兔賽跑的場(chǎng)景。2、能設(shè)置比賽時(shí)間,龜兔的數(shù)量等等。通過(guò)組合框組件的使用以及事件的訂閱來(lái)實(shí)現(xiàn)用戶對(duì)不同游戲模式的選擇,在本程序中只是簡(jiǎn)單的設(shè)計(jì)了兩種游戲模式供用戶選擇,也一定程度上實(shí)現(xiàn)了對(duì)比賽中龜兔
20、的數(shù)量,比賽時(shí)間等參數(shù)的設(shè)置。3、在任意時(shí)間段內(nèi)龜兔的速度是隨機(jī)的。為了模擬龜兔賽跑結(jié)果的不確定性,在游戲開始后烏龜和兔子的速度都是通過(guò)隨機(jī)函數(shù)產(chǎn)生的,當(dāng)然,我們會(huì)在保證兔子比烏龜速度要快,兔子在賽跑途中看到烏龜落后下會(huì)偷懶睡覺的前提下給予烏龜,兔子以隨機(jī)的速度,從而使得游戲的結(jié)果不確定,給用戶更多的游戲的真實(shí)感。4、開始比賽之后以動(dòng)畫顯示賽跑過(guò)程。用戶進(jìn)入游戲界面后,先選擇游戲模式,然后單擊開始按鈕,烏龜和兔子將會(huì)以隨機(jī)的速度開始朝終點(diǎn)線爬行,通過(guò)java中重復(fù)刷新技術(shù)達(dá)到動(dòng)畫效果,給用戶更逼真的感官。3.4.2 關(guān)鍵技術(shù)游戲中提供了模式選擇的功能,通過(guò)建立ItemSelect類來(lái)建立不同的
21、游戲模式。 建立兔子和烏龜線程,繼承接口Runnable并正確的實(shí)現(xiàn)run()方法。3.5結(jié)論程序的語(yǔ)法錯(cuò)誤很容易查找和修改,但找出了語(yǔ)法錯(cuò)誤并不代表程序已經(jīng)完成。很多編譯錯(cuò)誤是由于函數(shù)名或變量名等程序?qū)ο蟮钠磳戝e(cuò)誤引起的。在編寫程序的過(guò)程中,需要認(rèn)真仔細(xì),以免出現(xiàn)拼寫錯(cuò)誤,增加調(diào)試程序的工序,浪費(fèi)不必要的時(shí)間和精力。 在這個(gè)過(guò)程中,我收獲頗多,不僅理論知識(shí)掌握的更牢,實(shí)際動(dòng)手能力也有所提高,再次讓我感受到Java語(yǔ)言強(qiáng)大的功能,更激發(fā)了我Java語(yǔ)言的興趣。如果說(shuō)以前的編程僅僅是按照課本的要求進(jìn)行的,那這個(gè)課程設(shè)計(jì)難度就提高了一個(gè)級(jí)別,它讓們將所知道的知識(shí)聯(lián)系到了一起,更加顯示了程
22、序的強(qiáng)大。致謝首先我要感謝我的老師在課程設(shè)計(jì)上給予我們的指導(dǎo)和提供給我們的支持和幫助,這是我們能順利完成這次課程設(shè)計(jì)的主要原因,更重要的是老師幫我解決了許多技術(shù)上的難題,讓我們能把程序做得更加完善。在此期間,我不僅學(xué)到了許多新的知識(shí),而且也開闊了視野,提高了自己的設(shè)計(jì)能力。其次,我要感謝曾經(jīng)幫助過(guò)我的同學(xué),他們也為我解決了不少我不太明白的設(shè)計(jì)語(yǔ)言,和一些細(xì)節(jié)上的差錯(cuò)。本次設(shè)計(jì)是在高賢強(qiáng)老師的悉心指導(dǎo)下完成的,老師淵博的知識(shí),嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度,一絲不茍的工作作風(fēng),平易近人的性格都是我們學(xué)習(xí)的楷模。在論文的整理期間,高老師給了我們很多的意見和指導(dǎo),才使得論文得以順利的完成。最后再一次感謝所有在設(shè)計(jì)中
23、曾經(jīng)幫助過(guò)我的良師益友和同學(xué)。在此,我誠(chéng)心的對(duì)所有幫助過(guò)我的老師同學(xué)們說(shuō)一句:謝謝!參考文獻(xiàn)1 丁振凡Java語(yǔ)言使用教程. 北京郵件大學(xué)出版社,2006.9 2 丁振凡Java語(yǔ)言使用教程實(shí)驗(yàn)指導(dǎo). 北京郵件大學(xué)出版社,2006.9 3 Bruce Eckel Java編程思想. 機(jī)械工業(yè)出版社 2007.6 4 耿祥義 JAVA2實(shí)用教程.清華大學(xué)出版社 2009.55 陳國(guó)君 java 程序設(shè)計(jì)基礎(chǔ)(第二版) 清華大學(xué)出版社6 劉藝,吳英Java程序設(shè)計(jì)大學(xué)教程 M北京:科學(xué)出版社,2005年7 趙文靖.Java程序設(shè)計(jì)基礎(chǔ)與上機(jī)指導(dǎo).北京:清華大學(xué)出版社,2006年.8 吳其慶.Jav
24、a程序設(shè)計(jì)實(shí)例教程.北京:冶金工業(yè)出版社,2006年.9 耿祥義,張躍平Java基礎(chǔ)教程(第2版) M北京:清華大學(xué)出版社,2007年10 美Bruce Eckel. Thinking In Java.英文第4版.北京:機(jī)械工業(yè)出版社,200711 楊昭編著.二級(jí)Java語(yǔ)言程序設(shè)計(jì)教程.北京:中國(guó)水利水電出版社,200612 趙文靖編著.Java程序設(shè)計(jì)基礎(chǔ)與上機(jī)指導(dǎo).北京:清華大學(xué)出版社,200613 張海藩.軟件工程導(dǎo)論(第四、五版)M.北京:清華大學(xué)出版社, 2008. 14Cay S and Gary C. Java2核心技
25、術(shù)(卷 1: 基礎(chǔ)知識(shí))M.機(jī)械工業(yè)出版社,2003.15鄧光偉,李阿午,朱志.Java2核心技術(shù)(卷2:高級(jí)特性)M.機(jī)械工業(yè)出版社,2000.16Watson K,Nagel C,齊立波.C#入門經(jīng)典M.清華大學(xué)出版社,2002. 17張廣彬,孟紅蕊,張永寶.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;im
26、port 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.*;import java.applet.Applet;import java.applet.AudioClip;import .URL; SuppressWarnings( "unused", "serial" )class Imagecanvas
27、 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),image1.getHeight(this),this); public Image getImage() return image1; /*public class fra
28、me extends Frame implements ActionListenerPanel panel;Label label1,label2,label3;Button button1,button2; RabTor1 rabTor1;frame()panel=new Panel();panel.setLayout(new FlowLayout();label1=new Label("歡迎使用該軟件,1.0版本,不足之處,請(qǐng)多多指教!");label2=new Label("*東瑞制作*程序員*孫肖肖*");label3=new Label();b
29、utton1=new Button("進(jìn)入游戲");button2=new Button("退出游戲");button1.addActionListener(this);button2.addActionListener(this);/label1.setText("歡迎使用該軟件,1.0版本,不足之處,請(qǐng)多多指教!");/label2.setText("*東瑞制作*程序員*孫肖肖*");setLayout(new BorderLayout();panel.add(button1);panel.add(label3
30、);panel.add(button2);add(label1,BorderLayout.NORTH);add(label2,BorderLayout.SOUTH);add(panel,BorderLayout.CENTER);addWindowListener(new WindowAdapter() public void WindowClosing(WindowEvent e) System.exit(0); ); setBounds(300,200,300,200); setVisible(true); validate(); public void actionPerformed(Ac
31、tionEvent e)if(e.getSource()=button2) rabTor1=new RabTor1();*/package sxx;import java.applet.AudioClip;import java.awt.Color;import java.awt.Graphics;import java.awt.Image;import .URL;import javax.swing.JApplet; SuppressWarnings("serial")public class RabTor1 extends JApplet implements Runn
32、able 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;/圖片跑的路程! double rab_time=0.0,tor_time=0.0;/圖片移動(dòng)用的時(shí)間 String str1="rabbit",str2="tortoise"/給字符串付初值! setSize(800,400); /為什么沒用? p
33、ublic void init()/Applet中的初始化函數(shù)有類中構(gòu)造函數(shù)的作用!最先調(diào)用! backpic = getImage(getCodeBase(), "起跑.jpg");/將圖片對(duì)象與圖片 綁定! rabbit = getImage( getCodeBase(),"兔子.gif"); tortoise = getImage(getCodeBase(), "烏龜.jpg"); zhongdian = getImage(getCodeBase(), "烏龜贏了.png"); tortoise2 = get
34、Image(getCodeBase(),"小烏龜.jpg"); rabbit2=getImage(getCodeBase(),"兔子在前.jpg"); /rabbit3=getImage(getBase(),"3.jpg"); public void 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(
35、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.drawLine(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,
36、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, 80, 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); el
37、se 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)用! Thread rab = new Thread(this, "rabbit");/創(chuàng)建一個(gè)兔子線程,this表示在這個(gè)類中找.rabbit是線程的名子. Thread tor = new Thread(this, "tortoise"); rab.sta
38、rt();/線程對(duì)象調(diào)用start()方法!然后調(diào)用對(duì)應(yīng)的run()方法! tor.start(); /*public void stop() tryrab.stop(); rab=null; tor.stop(); tor=null; catch(Exception e) */ /為什么沒用? /public void destroy() / public void run()/此函數(shù)第三個(gè)調(diào)用! URL codebase=getCodeBase(); System.out.println(codebase); AudioClip audio1=getAudioClip(codebase,&
39、quot;龜兔賽跑.wav"); g.drawString("-背景音樂魯晶晶制作",30,30); audio1.loop(); boolean stop=false;/標(biāo)志,此函數(shù)的精典之處.控制兔子,龜什么時(shí)候停! while(!stop) try Thread.currentThread();Thread.sleep(1000);/當(dāng)前線程調(diào)用sleep()函數(shù). catch (InterruptedException ex) String threadName=Thread.currentThread().getName();/取得當(dāng)前線程的名子. if
40、(threadName.equals("rabbit")&&x1<=800)/兔子動(dòng)的實(shí)現(xiàn)方法! int t1=0,t2=0; str1="rabbit" x1=x1+(int)(Math.random()*30); rab_time=rab_time+1; rab_road+=(int)(Math.random()*25); if(x1>=120&&x1<=140&&x1<x2) str1="烏龜跑這么慢,我肯定能追上他!我先睡一會(huì)" str2="哼,
41、別以為自己是兔子就了不起!你就睡吧!" rabbit = getImage( getCodeBase(),"兔子睡覺.jpg"); if(x1>=120&&x1<=130) str1="烏龜跑這么慢,我先睡一會(huì)" 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.gif"); if(x
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 生物藥品的疾病模型構(gòu)建與藥物篩選考核試卷
- 重癥肺炎合并ARDS個(gè)案護(hù)理 2
- 5-14順序脈沖信號(hào)發(fā)生器
- 2-2復(fù)合邏輯運(yùn)算
- AIGC應(yīng)用基礎(chǔ)課件
- 統(tǒng)編版語(yǔ)文五年級(jí)下冊(cè)第19課《牧場(chǎng)之國(guó)》精美課件
- 泰山職業(yè)技術(shù)學(xué)院《藥理學(xué)實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 蕪湖市新蕪區(qū)2024-2025學(xué)年小升初總復(fù)習(xí)數(shù)學(xué)精練含解析
- 蘭州文理學(xué)院《醫(yī)學(xué)概論實(shí)驗(yàn)A》2023-2024學(xué)年第一學(xué)期期末試卷
- 新疆和田地區(qū)2025年下學(xué)期高三年級(jí)二調(diào)考試數(shù)學(xué)試題試卷含解析
- 第24課《詩(shī)詞曲五首-南鄉(xiāng)子 登京口北固亭有懷》課件共34張
- 山東省濰坊市2023-2024 學(xué)年高二下學(xué)期期中質(zhì)量監(jiān)測(cè)化學(xué)試題+帶答案
- 鐵路少年-練習(xí)及答案
- 《隧道工程》課件
- DB-T29-111-2018埋地鋼質(zhì)管道陰極保護(hù)技術(shù)規(guī)程
- 2024年化糞池清理合同協(xié)議書范本
- 企業(yè)業(yè)務(wù)賬號(hào)管理辦法
- YY 0793.2-2023血液透析和相關(guān)治療用液體的制備和質(zhì)量管理第2部分:血液透析和相關(guān)治療用水
- 手術(shù)患者轉(zhuǎn)運(yùn)交接及注意事項(xiàng)
- 思維障礙的診斷與治療方法
- 產(chǎn)房人文關(guān)懷護(hù)理課件
評(píng)論
0/150
提交評(píng)論