![龜兔賽跑程序的設(shè)計(jì)報(bào)告_第1頁(yè)](http://file4.renrendoc.com/view/234f6662d26692723514b49d473bc585/234f6662d26692723514b49d473bc5851.gif)
![龜兔賽跑程序的設(shè)計(jì)報(bào)告_第2頁(yè)](http://file4.renrendoc.com/view/234f6662d26692723514b49d473bc585/234f6662d26692723514b49d473bc5852.gif)
![龜兔賽跑程序的設(shè)計(jì)報(bào)告_第3頁(yè)](http://file4.renrendoc.com/view/234f6662d26692723514b49d473bc585/234f6662d26692723514b49d473bc5853.gif)
![龜兔賽跑程序的設(shè)計(jì)報(bào)告_第4頁(yè)](http://file4.renrendoc.com/view/234f6662d26692723514b49d473bc585/234f6662d26692723514b49d473bc5854.gif)
![龜兔賽跑程序的設(shè)計(jì)報(bào)告_第5頁(yè)](http://file4.renrendoc.com/view/234f6662d26692723514b49d473bc585/234f6662d26692723514b49d473bc5855.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
..目錄TOC\o"1-3"\h\u15053前言 029208工程概況 1180842.1項(xiàng)目所用的時(shí)間 1118792.2項(xiàng)目負(fù)責(zé)人 122642.3項(xiàng)目指導(dǎo)人 116011正文 181453.1設(shè)計(jì)的目的和意義 1165283.2目標(biāo)與總體方案 1280453.3設(shè)計(jì)方法和內(nèi)容 2251163.3.1開(kāi)發(fā)環(huán)境2220923.3.2設(shè)計(jì)方法2304223.3.4設(shè)計(jì)體會(huì)814993.4設(shè)計(jì)創(chuàng)新與關(guān)鍵技術(shù) 838553.4.1設(shè)計(jì)創(chuàng)新8307463.4.2關(guān)鍵技術(shù)9309003.5結(jié)論 99891致謝 99426參考文獻(xiàn) 103264附錄 11..前言在科技日新月異的今天,電腦成為人的生活中不可缺少的一部分。作為計(jì)算機(jī)專(zhuān)業(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ī)有了更深的了解。Java是一種簡(jiǎn)單的,跨平臺(tái)的,面向?qū)ο蟮?分布式的,解釋的,健壯的安全的,結(jié)構(gòu)的中立的,可移植的,性能很優(yōu)異的多線(xiàn)程的,動(dòng)態(tài)的語(yǔ)言。當(dāng)1995年SUN推出Java語(yǔ)言之后,全世界的目光都被這個(gè)神奇的語(yǔ)言所吸引。Java不同于一般的編譯執(zhí)行計(jì)算機(jī)語(yǔ)言和解釋執(zhí)行計(jì)算機(jī)語(yǔ)言。它首先將源代碼編譯成二進(jìn)制字節(jié)碼<bytecode>,然后依賴(lài)各種不同平臺(tái)上的虛擬機(jī)來(lái)解釋執(zhí)行字節(jié)碼,從而實(shí)現(xiàn)了"一次編譯、到處執(zhí)行"的跨平臺(tái)特性。本次課設(shè)我選擇的是龜兔賽跑游戲的制作。這個(gè)游戲?qū)嶋H上主要是對(duì)我們JAVA學(xué)習(xí)中的線(xiàn)程部分的考察,尤其是多線(xiàn)程的定義,運(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)。工程概況2.1項(xiàng)目所用的時(shí)間從這個(gè)項(xiàng)目開(kāi)始到結(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é)生開(kāi)發(fā)一個(gè)龜兔賽跑游戲,主要是對(duì)學(xué)生多線(xiàn)程編程、游戲方案設(shè)計(jì)、游戲背景及動(dòng)漫制作等能力進(jìn)行培養(yǎng)鍛煉,同時(shí)還要求保證游戲有一個(gè)真實(shí)的操作界面和人性化操作設(shè)計(jì)。此外,學(xué)生通過(guò)該題目的設(shè)計(jì)過(guò)程,可以初步應(yīng)用軟件系統(tǒng)的開(kāi)發(fā)原理和開(kāi)發(fā)方法,全面培養(yǎng)軟件開(kāi)發(fā)過(guò)程中的分析、設(shè)計(jì)、編碼、測(cè)試及文檔規(guī)范書(shū)寫(xiě)的能力,得到軟件工程的訓(xùn)練,提高解決實(shí)際問(wèn)題的能力?!?有助于加深我們對(duì)Java程序設(shè)計(jì)這門(mén)課程的理解,我們?cè)谡n堂上學(xué)的都是基礎(chǔ)理論知識(shí),對(duì)于如何用程序語(yǔ)言來(lái)描述所學(xué)知識(shí)還是有一定的難度。通過(guò)課程設(shè)計(jì),我們可以真正理解其內(nèi)涵?!?有利于我們邏輯思維的鍛煉,程序設(shè)計(jì)能直接有效地訓(xùn)練學(xué)生的創(chuàng)新思維、培養(yǎng)分析問(wèn)題、解決問(wèn)題的能力。即使是一個(gè)簡(jiǎn)單的程序,依然需要學(xué)生有條不紊的構(gòu)思?!?有利于培養(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用圖形用戶(hù)界面實(shí)現(xiàn)游戲界面,同時(shí)通過(guò)設(shè)置布局,背景,字體等來(lái)豐富界面,最大程度的模擬龜兔賽跑的場(chǎng)景?!?能設(shè)置比賽時(shí)間,龜兔的數(shù)量等等,實(shí)現(xiàn)對(duì)比賽中龜兔的數(shù)量,比賽時(shí)間等參數(shù)的設(shè)置?!?在任意時(shí)間段內(nèi)龜兔的速度是隨機(jī)的,為了模擬龜兔賽跑結(jié)果的不確定性,在游戲開(kāi)始后烏龜和兔子的速度都是通過(guò)隨機(jī)函數(shù)產(chǎn)生的,保證兔子比烏龜速度要快,兔子在賽跑途中看到烏龜落后下會(huì)偷懶睡覺(jué)的前提下給予烏龜,兔子以隨機(jī)的速度,從而使得游戲的結(jié)果不確定,給用戶(hù)更多的游戲的真實(shí)感。〔4開(kāi)始比賽之后以動(dòng)畫(huà)顯示賽跑過(guò)程,用戶(hù)進(jìn)入游戲界面后,先選擇游戲模式,然后單擊開(kāi)始按鈕,烏龜和兔子將會(huì)以隨機(jī)的速度開(kāi)始朝終點(diǎn)線(xiàn)爬行,通過(guò)重復(fù)刷新技術(shù)達(dá)到動(dòng)畫(huà)效果,給用戶(hù)更逼真的感官?!?系統(tǒng)的開(kāi)發(fā)可以采用Java語(yǔ)言來(lái)實(shí)現(xiàn);〔6在基本要求達(dá)到后,可進(jìn)行創(chuàng)新設(shè)計(jì),如改善算法性能、友好的人機(jī)界面。3.3設(shè)計(jì)方法和內(nèi)容3.3.1開(kāi)發(fā)環(huán)境硬件環(huán)境:一臺(tái)清華同方電腦,其配置為:CPU:Intel<R>Core<TM>i5-45703.2GHz內(nèi)存:4G硬盤(pán):500G主板:4260LA-2922P軟件環(huán)境:Windows7旗艦版版本2009ServicePack1,并且安裝了可供編程的eclipse-standard-kepler-SR1-win323.3.2設(shè)計(jì)方法賽跑的過(guò)程是兩個(gè)比賽對(duì)象并行前進(jìn)的過(guò)程,考慮到應(yīng)用需求,我們可以利用多線(xiàn)程技術(shù),所謂多線(xiàn)程就是指同時(shí)存在幾個(gè)執(zhí)行體,按幾條不同的執(zhí)行線(xiàn)索共同工作的情況,這與要求剛好吻合,Java語(yǔ)言對(duì)多線(xiàn)程提供強(qiáng)大的支持。用直觀圖形描述龜兔賽跑前進(jìn)過(guò)程:每過(guò)一秒,兔子走過(guò)的文本框中增加三個(gè)"#"號(hào),烏龜走過(guò)的路程文本框中增加一個(gè)"#"號(hào)。跑完路程結(jié)束線(xiàn)程,并顯示各自跑完全程總共用的時(shí)間。3.3.3主體內(nèi)容一、設(shè)計(jì)分析第一步:設(shè)計(jì)良好游戲界面功能:實(shí)現(xiàn)基本的開(kāi)始、退出游戲功能、選擇游戲模式等?;静襟E:在其上添加圖基本步驟1在其上添加在實(shí)現(xiàn)過(guò)程中會(huì)遇到的問(wèn)題及解決方案:1、背景面板上加載圖片時(shí)需要重寫(xiě)paintComponent方法2、布局必須合理設(shè)置〔GridLayout不能改變組件的具體位置但可以縮放時(shí)相對(duì)位置不變。FlowLayout默認(rèn)是占滿(mǎn)第一行轉(zhuǎn)向第二行,并且放大時(shí)相對(duì)位置改變。Null布局可以自由布置組件位置和大小,但不易實(shí)現(xiàn)窗口放大時(shí)相對(duì)大小隨之變化。若設(shè)置不合理,就可能出現(xiàn)多種錯(cuò)誤。列如:無(wú)法插入背景圖片,組建不能顯現(xiàn),組件位置與設(shè)計(jì)不符等等。3、添加背景面板監(jiān)聽(tīng)重置各面板位置才能實(shí)現(xiàn)窗口放大時(shí)的相對(duì)位置不變第二步:線(xiàn)程類(lèi)的設(shè)計(jì)功能:實(shí)現(xiàn)多只烏龜,兔子的多線(xiàn)程運(yùn)行具體步驟:圖基本步驟2第二步會(huì)遇到的問(wèn)題及解決方案:1、建立兔子線(xiàn)程,繼承接口Runnable并正確的實(shí)現(xiàn)run<>方法。同時(shí)要特別注意兔子在比賽中還要模擬睡覺(jué)的動(dòng)作。2、建立烏龜線(xiàn)程,繼承接口Runnable并實(shí)現(xiàn)其run<>方法,要與兔子多線(xiàn)程運(yùn)行;3、為了實(shí)現(xiàn)可選擇多只龜兔進(jìn)行賽跑,要實(shí)現(xiàn)多個(gè)兔子,烏龜線(xiàn)程,并能并發(fā)運(yùn)行。4、游戲中提供了模式選擇的功能,通過(guò)建立ItemSelect類(lèi)來(lái)建立不同的游戲模式。二、各模塊的功能及程序說(shuō)明龜兔賽跑程序主要由以下幾個(gè)模塊構(gòu)成:模塊一:初始圖形界面模塊publicclassRRTTextendsAppletimplementsActionListener{Graphicsg;Panelpanel;Labellabel1,label2,label3;Buttonbutton1,button2;RabTor1rabTor1;publicvoidinit<>//Applet中的初始化函數(shù)有類(lèi)中構(gòu)造函數(shù)的作用!最先調(diào)用!{panel=newPanel<>; panel.setLayout<newFlowLayout<>>; label1=newLabel<"歡迎使用該軟件,1.0版本,不足之處,請(qǐng)多多指教!">; label2=newLabel<"*********東瑞制作*****程序員*****陳杰*********">; label3=newLabel<>; button1=newButton<"進(jìn)入游戲">; button2=newButton<"退出游戲">; button1.addActionListener<this>; button2.addActionListener<this>; setLayout<newBorderLayout<>>; panel.add<button1>; panel.add<label3>; panel.add<button2>; add<label1,BorderLayout.NORTH>; add<label2,BorderLayout.SOUTH>; add<panel,BorderLayout.CENTER>;} publicvoidactionPerformed<ActionEvente> { if<e.getSource<>==button1> {rabTor1=newRabTor1<>; //dispose<>; } elseif<e.getSource<>==button2> {System.exit<0>; } }}該模塊主要是用來(lái)提供進(jìn)入該程序游戲的初始圖形用戶(hù)界面,顯示該程序的基本信息,提示用戶(hù)進(jìn)行操作。模塊二:兔子線(xiàn)程模塊該模塊主要是實(shí)現(xiàn)兔子運(yùn)行線(xiàn)程,類(lèi)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>intt1=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í)間睡眠<0—30秒>str1="烏龜跑這么慢,我先睡一會(huì)";str2="哼,別以為自己是兔子就了不起!你就睡吧!";rabbit=getImage<getCodeBase<>,"4.jpg">;try{t1=<int><Math.random<>*30000>;Thread.currentThread<>.sleep<t1>;}catch<InterruptedExceptione>{}模塊三:烏龜線(xiàn)程模塊該模塊主要是實(shí)現(xiàn)烏龜運(yùn)行線(xiàn)程,類(lèi)TortoiseThread繼承了接口Runnable并實(shí)現(xiàn)其方法run<>,主要功能的實(shí)現(xiàn):烏龜移動(dòng)實(shí)現(xiàn)的方法!elseif<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>{str2="就快到終點(diǎn)了,我要堅(jiān)持下去,堅(jiān)持就是勝利!";}通過(guò)隨機(jī)函數(shù)實(shí)現(xiàn)烏龜隨機(jī)速度爬行。模塊四:畫(huà)布界面的設(shè)置與布局classImagecanvasextendsCanvas{Toolkittool;Imageimage1;Imagecanvas<>{setSize<800,500>;tool=getToolkit<>;image1=tool.getImage<"6.gif">;}publicvoidpaint<Graphicsg>{g.drawImage<image1,10,10,image1.getWidth<this>,image1.getHeight<this>,this>;}publicImagegetImage<>{returnimage1;}}三、操作方法及試驗(yàn)結(jié)果:〔第一局比賽開(kāi)始〔兔子領(lǐng)先〔兔子勝利〔第二局比賽開(kāi)始〔兔子中途睡覺(jué)〔烏龜反超兔子,最終勝利3.3.4設(shè)計(jì)體會(huì)本系統(tǒng)是一個(gè)基于多線(xiàn)程模式的龜兔賽跑小游戲,系統(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ì)包括多線(xiàn)程在內(nèi)的java語(yǔ)言高級(jí)技術(shù)掌握的也更加熟練了,更對(duì)面向?qū)ο蟮姆治鏊枷?面向?qū)ο蟮脑O(shè)計(jì)方法有了直觀的體會(huì)。同時(shí),在游戲的制作過(guò)程中要用到很多課本上并未介紹到的知識(shí),例如多線(xiàn)程隊(duì)列事件等等,通過(guò)網(wǎng)絡(luò)學(xué)習(xí)和與老師同學(xué)的交流使得自己對(duì)該部分的知識(shí)有了更廣泛更深刻的體會(huì)。當(dāng)然本次課設(shè),通過(guò)我不斷的嘗試,不斷的修改錯(cuò)誤,解決問(wèn)題,終于明白了程序員生活中天堂與地獄的感覺(jué)是什么了。雖然這個(gè)過(guò)程很苦,但我對(duì)java的熟練程度得到了很大的提升。同時(shí),在游戲的制作過(guò)程中要用到很多課本上并未介紹到的知識(shí),如當(dāng)我遇到如何在一個(gè)Japplet類(lèi)中創(chuàng)建另外一個(gè)Applet類(lèi)的對(duì)象并運(yùn)行線(xiàn)程的問(wèn)題時(shí),我糾結(jié)了很久沒(méi)能找到解決辦法,最終通過(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ì)還比較單一,只能選擇兩種游戲模式,并且游戲也相對(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、用圖形用戶(hù)界面實(shí)現(xiàn)游戲界面;通過(guò)使用java中Jlabel,Jbutton,JtextArea,JcomboBox等swing組件來(lái)實(shí)現(xiàn)圖形用戶(hù)界面,同時(shí)通過(guò)設(shè)置布局,背景,字體等來(lái)豐富界面,最大程度的模擬龜兔賽跑的場(chǎng)景。2、能設(shè)置比賽時(shí)間,龜兔的數(shù)量等等。通過(guò)組合框組件的使用以及事件的訂閱來(lái)實(shí)現(xiàn)用戶(hù)對(duì)不同游戲模式的選擇,在本程序中只是簡(jiǎn)單的設(shè)計(jì)了兩種游戲模式供用戶(hù)選擇,也一定程度上實(shí)現(xiàn)了對(duì)比賽中龜兔的數(shù)量,比賽時(shí)間等參數(shù)的設(shè)置。3、在任意時(shí)間段內(nèi)龜兔的速度是隨機(jī)的。為了模擬龜兔賽跑結(jié)果的不確定性,在游戲開(kāi)始后烏龜和兔子的速度都是通過(guò)隨機(jī)函數(shù)產(chǎn)生的,當(dāng)然,我們會(huì)在保證兔子比烏龜速度要快,兔子在賽跑途中看到烏龜落后下會(huì)偷懶睡覺(jué)的前提下給予烏龜,兔子以隨機(jī)的速度,從而使得游戲的結(jié)果不確定,給用戶(hù)更多的游戲的真實(shí)感。4、開(kāi)始比賽之后以動(dòng)畫(huà)顯示賽跑過(guò)程。用戶(hù)進(jìn)入游戲界面后,先選擇游戲模式,然后單擊開(kāi)始按鈕,烏龜和兔子將會(huì)以隨機(jī)的速度開(kāi)始朝終點(diǎn)線(xiàn)爬行,通過(guò)java中重復(fù)刷新技術(shù)達(dá)到動(dòng)畫(huà)效果,給用戶(hù)更逼真的感官。3.4.2關(guān)鍵技術(shù)游戲中提供了模式選擇的功能,通過(guò)建立ItemSelect類(lèi)來(lái)建立不同的游戲模式。建立兔子和烏龜線(xiàn)程,繼承接口Runnable并正確的實(shí)現(xiàn)run<>方法。3.5結(jié)論程序的語(yǔ)法錯(cuò)誤很容易查找和修改,但找出了語(yǔ)法錯(cuò)誤并不代表程序已經(jīng)完成。很多編譯錯(cuò)誤是由于函數(shù)名或變量名等程序?qū)ο蟮钠磳?xiě)錯(cuò)誤引起的。在編寫(xiě)程序的過(guò)程中,需要認(rèn)真仔細(xì),以免出現(xiàn)拼寫(xiě)錯(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)系到了一起,更加顯示了程序的強(qiáng)大。致謝首先我要感謝我的老師在課程設(shè)計(jì)上給予我們的指導(dǎo)和提供給我們的支持和幫助,這是我們能順利完成這次課程設(shè)計(jì)的主要原因,更重要的是老師幫我解決了許多技術(shù)上的難題,讓我們能把程序做得更加完善。在此期間,我不僅學(xué)到了許多新的知識(shí),而且也開(kāi)闊了視野,提高了自己的設(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í)的楷模。在論文的整理期間,高老師給了我們很多的意見(jiàn)和指導(dǎo),才使得論文得以順利的完成。最后再一次感謝所有在設(shè)計(jì)中曾經(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]BruceEckel《Java編程思想》.機(jī)械工業(yè)出版社2007.6[4]耿祥義《JAVA2實(shí)用教程》.清華大學(xué)出版社2009.5[5]陳國(guó)君《java程序設(shè)計(jì)基礎(chǔ)》〔第二版清華大學(xué)出版社[6]劉藝,吳英.《Java程序設(shè)計(jì)大學(xué)教程》[M].北京:科學(xué)出版社,20XX.[7]趙文靖.《Java程序設(shè)計(jì)基礎(chǔ)與上機(jī)指導(dǎo)》.北京:清華大學(xué)出版社,20XX.[8]吳其慶.《Java程序設(shè)計(jì)實(shí)例教程》.北京:冶金工業(yè)出版社,20XX.[9]耿祥義,張躍平.《Java基礎(chǔ)教程》〔第2版[M].北京:清華大學(xué)出版社,20XX.[10][美]BruceEckel.ThinkingInJava.英文第4版.北京:機(jī)械工業(yè)出版社,2007[11]楊昭編著.二級(jí)Java語(yǔ)言程序設(shè)計(jì)教程.北京:中國(guó)水利水電出版社,2006[12]趙文靖編著.Java程序設(shè)計(jì)基礎(chǔ)與上機(jī)指導(dǎo).北京:清華大學(xué)出版社,2006[13]張海藩.軟件工程導(dǎo)論<第四、五版>[M].北京:清華大學(xué)出版社,2008.[14]CaySandGaryC.Java2核心技術(shù)<卷1:基礎(chǔ)知識(shí)>[M].機(jī)械工業(yè)出版社,2003.[15]鄧光偉,李阿午,朱志.Java2核心技術(shù)<卷2:高級(jí)特性>[M].機(jī)械工業(yè)出版社,2000.[16]WatsonK,NagelC,齊立波.C#入門(mén)經(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.附錄源程序packagesxx;importjava.awt.Color;importjava.awt.Graphics;importjava.awt.Image;importjavax.swing.JApplet;importjava.awt.*;importjava.awt.event.*;importjava.util.Arrays;importjava.lang.*;importjava.applet.Applet;importjava.applet.AudioClip;.URL;SuppressWarnings<{"unused","serial"}> classImagecanvasextendsCanvas{Toolkittool;Imageimage1;Imagecanvas<>{setSize<800,500>;tool=getToolkit<>;image1=tool.getImage<"6.gif">;}publicvoidpaint<Graphicsg>{g.drawImage<image1,10,10,image1.getWidth<this>,image1.getHeight<this>,this>;}publicImagegetImage<>{returnimage1;}}/*publicclassframeextendsFrameimplementsActionListener{ Panelpanel; Labellabel1,label2,label3; Buttonbutton1,button2;RabTor1rabTor1; frame<> { panel=newPanel<>; panel.setLayout<newFlowLayout<>>; label1=newLabel<"歡迎使用該軟件,1.0版本,不足之處,請(qǐng)多多指教!">; label2=newLabel<"*****東瑞制作*****程序員*****孫肖肖******">; label3=newLabel<>; button1=newButton<"進(jìn)入游戲">; button2=newButton<"退出游戲">; button1.addActionListener<this>; button2.addActionListener<this>; //label1.setText<"歡迎使用該軟件,1.0版本,不足之處,請(qǐng)多多指教!">; //label2.setText<"*****東瑞制作*****程序員*****孫肖肖******">; setLayout<newBorderLayout<>>; panel.add<button1>; panel.add<label3>; panel.add<button2>; add<label1,BorderLayout.NORTH>; add<label2,BorderLayout.SOUTH>; add<panel,BorderLayout.CENTER>; addWindowListener<newWindowAdapter<>{ publicvoidWindowClosing<WindowEvente>{ System.exit<0>; } }>; setBounds<300,200,300,200>; setVisible<true>; validate<>;} publicvoidactionPerformed<ActionEvente> { if<e.getSource<>==button2> {rabTor1=newRabTor1<>; } }}*/packagesxx;importjava.applet.AudioClip;importjava.awt.Color;importjava.awt.Graphics;importjava.awt.Image;.URL;importjavax.swing.JApplet; SuppressWarnings<"serial"> publicclassRabTor1extendsJAppletimplementsRunnable { Graphicsg; inti=1; Imagebackpic,rabbit,tortoise,zhongdian,tortoise2,rabbit2; intx1=0,y1=80,j=0; intx2=0,y2=180;//圖片的位移! intrab_road=0,tor_road=0;//圖片跑的路程! doublerab_time=0.0,tor_time=0.0;//圖片移動(dòng)用的時(shí)間 Stringstr1="rabbit",str2="tortoise";//給字符串付初值! {setSize<800,400>; } ///為什么沒(méi)用??????????????????????????? publicvoidinit<>//Applet中的初始化函數(shù)有類(lèi)中構(gòu)造函數(shù)的作用!最先調(diào)用! { backpic=getImage<getCodeBase<>,"起跑.jpg">;//將圖片對(duì)象與圖片綁定! rabbit=getImage<getCodeBase<>,"兔子.gif">; tortoise=getImage<getCodeBase<>,"烏龜.jpg">; zhongdian=getImage<getCodeBase<>,"烏龜贏了.png">; tortoise2=getImage<getCodeBase<>,"小烏龜.jpg">; rabbit2=getImage<getCodeBase<>,"兔子在前.jpg">; //rabbit3=getImage<getBase<>,"3.jpg">; } publicvoidpaint<Graphicsg>//此函數(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<"-————背景音樂(lè)————孫肖肖制作",30,30>; g.drawLine<0,75,600,75>;//畫(huà)跑道 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,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>;} elseif<i==2> g.drawImage<tortoise2,600,180,60,60,this>; /*elseif<i==3> {intx3=245,y3=80; g.drawImage<rabbit2,600,80,60,60,this>; } else {intx4=490,y4=80; g.drawImage<rabbit2,x4,y4,60,60,this>; }*/ //System.out.println<j>; } publicvoidupdate<Graphicsg>//用不到! {} publicvoidstart<>//此函數(shù)第二個(gè)調(diào)用! { Threadrab=newThread<this,"rabbit">;//創(chuàng)建一個(gè)兔子線(xiàn)程,this表示在這個(gè)類(lèi)中找.rabbit是線(xiàn)程的名子. Threadtor=newThread<this,"tortoise">; rab.start<>;//線(xiàn)程對(duì)象調(diào)用start<>方法!然后調(diào)用對(duì)應(yīng)的run<>方法! tor.start<>; } /*publicvoidstop<> {try{rab.stop<>; rab=null; tor.stop<>; tor=null; } catch<Exceptione>{} }*///為什么沒(méi)用???????????? //publicvoiddestroy<> //{} publicvoidrun<>//此函數(shù)第三個(gè)調(diào)用! { URLcodebase=getCodeBase<>; System.out.println<codebase>; AudioClipaudio1=getAudioClip<codebase,"龜兔賽跑.wav">; g.drawString<"-————背景音樂(lè)————魯晶晶制作",30,30>; audio1.loop<>; booleanstop=false;//標(biāo)志,此函數(shù)的精典之處.控制兔子,龜什么時(shí)候停! while<!stop> { try { Thread.currentThread<>; Thread.sleep<1000>;//當(dāng)前線(xiàn)程調(diào)用sleep<>函數(shù). } catch<InterruptedExceptionex> {} StringthreadName=Thread.currentThread<>.getName<>;//取得當(dāng)前線(xiàn)程的名子. if<threadName.equals<"rabbit">&&x1<=800>//兔子動(dòng)的實(shí)現(xiàn)方法! {intt1=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="哼,別以為自己是兔子就了不起!你就睡吧!"; rabbit=getImage<getCodeBase<>,"兔子睡覺(jué).jpg">; } if<x1>=120&&x1<=130> { str1="烏龜跑這么慢,我先睡一會(huì)"; str2="哼,別以為自己是兔子就了不起!你就睡吧!"; rabbit=getImage<getCodeBase<>,"兔子睡覺(jué).jpg">; try { t1=<int><Math.random<>*30000>; Thread.currentThread<>; Thread.sleep<t1>; } catch<InterruptedExceptionex> {} rab_time+=<double>t1/1000; } if<x1>140> {rabbit=getImage<getCodeBase<>,"rabbit.gif">;} if<x1>=240&&x1<=250> {str1="烏龜跑這么慢,讓我再睡一會(huì)吧"; str2="哼,別以為自己是兔子就了不起!你就睡吧!"; rabbit=getImage<getCodeBase<>,"兔子睡覺(jué).jpg">; try { t2=<int><Math.random<>*20000>; Thread.currentThread<>; Thread.sleep<t2>; } catch<InterruptedExceptionex>
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 專(zhuān)利使用權(quán)許可合同范本
- 委托建設(shè)合同協(xié)議
- 專(zhuān)利權(quán)購(gòu)買(mǎi)合同模板
- 信用卡代還款借款合同范本
- 專(zhuān)項(xiàng)員工福利保障合同合作協(xié)議
- LED舞臺(tái)燈光租賃合同模板
- 二手聯(lián)排別墅買(mǎi)賣(mài)合同
- 個(gè)人與企業(yè)汽車(chē)租賃標(biāo)準(zhǔn)合同
- 個(gè)人兼職勞動(dòng)合同范本版
- 個(gè)人貸款合同范本及信用評(píng)估報(bào)告
- (康德一診)重慶市2025屆高三高三第一次聯(lián)合診斷檢測(cè) 英語(yǔ)試卷(含答案詳解)
- 2025年福建泉州文旅集團(tuán)招聘24人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 建筑行業(yè)砂石物資運(yùn)輸方案
- 腫瘤全程管理
- 桃李面包盈利能力探析案例11000字
- GB/Z 30966.71-2024風(fēng)能發(fā)電系統(tǒng)風(fēng)力發(fā)電場(chǎng)監(jiān)控系統(tǒng)通信第71部分:配置描述語(yǔ)言
- 2024年高中一年級(jí)數(shù)學(xué)考試題及答案
- 巨鹿二中骨干教師個(gè)人工作業(yè)績(jī)材料
- 《美的歷程》導(dǎo)讀課件
- 心電圖 (史上最完美)課件
- 建設(shè)工程施工合同糾紛處理課件
評(píng)論
0/150
提交評(píng)論