



版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、塔里木大學(xué)信息工程學(xué)院課程設(shè)計(jì)目錄前言 .1工程概況 .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)與總體方案 .23.3設(shè)計(jì)方法和內(nèi)容 .23.3.1開(kāi)發(fā)環(huán)境 .23.3.2設(shè)計(jì)方法 .23.3.4設(shè)計(jì)體會(huì) .83.4設(shè)計(jì)創(chuàng)新與關(guān)鍵技術(shù) .93.4.1設(shè)計(jì)創(chuàng)新 .93.4.2關(guān)鍵技術(shù) .93.5結(jié)論 .9致謝 .10參考文獻(xiàn) .10附錄 .11塔里木大學(xué)信息工程學(xué)院課程設(shè)計(jì)前言在科技日新月異的今天,電腦成為人的生活中不可缺少的一部分。作為計(jì)算機(jī)專(zhuān)業(yè)的學(xué)生,應(yīng)該充分利用所學(xué)知識(shí),把實(shí)際問(wèn)題轉(zhuǎn)移到電腦上去,通過(guò)電腦的編程
2、,使復(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)異的多線程的,動(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è)游戲
3、實(shí)際上主要是對(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)。工程概況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è)
4、計(jì)要求學(xué)生開(kāi)發(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)的開(kāi)發(fā)原理和開(kāi)發(fā)方法,全面培養(yǎng)軟件開(kāi)發(fā)過(guò)程中的分析、第1頁(yè)共20頁(yè)塔里木大學(xué)信息工程學(xué)院課程設(shè)計(jì)設(shè)計(jì)、編碼、測(cè)試及文檔規(guī)范書(shū)寫(xiě)的能力,得到軟件工程的訓(xùn)練,提高解決實(shí)際問(wèn)題的能力。( 1)有助于加深我們對(duì) Java 程序設(shè)計(jì)這門(mén)課程的理解,我們?cè)谡n堂上學(xué)的都是基礎(chǔ)理論知識(shí),對(duì)于如何用程序語(yǔ)言來(lái)描述所學(xué)知識(shí)還是有一定的難度。通過(guò)課程設(shè)計(jì),我們可以真正理解其內(nèi)涵。( 2)有利于我們邏輯思
5、維的鍛煉,程序設(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)用圖形用戶(hù)界面實(shí)現(xiàn)游戲界面,同時(shí)通過(guò)設(shè)置布局,背景,字體等來(lái)豐富界面,最大程度的模擬龜兔賽跑的場(chǎng)景。( 2)能設(shè)置比賽時(shí)間,龜兔的數(shù)量等等,實(shí)現(xiàn)對(duì)比賽中龜兔的數(shù)量,比賽時(shí)間等參數(shù)的設(shè)置。( 3)在任意時(shí)間段內(nèi)龜兔的
6、速度是隨機(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)線爬行,通過(guò)重復(fù)刷新技術(shù)達(dá)到動(dòng)畫(huà)效果,給用戶(hù)更逼真的感官。( 5)系統(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)容開(kāi)發(fā)環(huán)境硬件
7、環(huán)境:一臺(tái)清華同方電腦,其配置為:CPU: Intel(R) Core(TM) i5-4570 3.2GHz內(nèi)存: 4G 硬盤(pán): 500G 主板: 4260LA-2922P軟 件 環(huán) 境 : Windows 7旗 艦 版 版 本2009ServicePack1 , 并 且 安 裝 了 可 供 編 程 的eclipse-standard-kepler-SR1-win32設(shè)計(jì)方法賽跑的過(guò)程是兩個(gè)比賽對(duì)象并行前進(jìn)的過(guò)程,考慮到應(yīng)用需求,我們可以利用多線程技術(shù),所謂多線程就是指同時(shí)存在幾個(gè)執(zhí)行體,按幾條不同的執(zhí)行線索共同工作的情況,這與要求剛好吻合,Java 語(yǔ)言對(duì)多線程提供強(qiáng)大的支持。用直觀圖形描述
8、龜兔賽跑前進(jìn)過(guò)程:每過(guò)一秒,兔子走過(guò)的文本框中增加三個(gè)“#”號(hào),烏龜走過(guò)的路程文本框中增加一個(gè)“#”號(hào)。跑完路程結(jié)束線程,并顯示各自跑完全程總共用的時(shí)間。主體內(nèi)容一、設(shè)計(jì)分析第2頁(yè)共20頁(yè)塔里木大學(xué)信息工程學(xué)院課程設(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)是占滿第一行轉(zhuǎn)向第二行,并且放大時(shí)相對(duì)位置改變。Null布局可以自
9、由布置組件位置和大小,但不易實(shí)現(xiàn)窗口放大時(shí)相對(duì)大小隨之變化。)若設(shè)置不合理,就可能出現(xiàn)多種錯(cuò)誤。列如: 無(wú)法插入背景圖片,組建不能顯現(xiàn),組件位置與設(shè)計(jì)不符等等。3 、添加背景面板監(jiān)聽(tīng)重置各面板位置才能實(shí)現(xiàn)窗口放大時(shí)的相對(duì)位置不變第二步:線程類(lèi)的設(shè)計(jì)功能:實(shí)現(xiàn)多只烏龜,兔子的多線程運(yùn)行具體步驟:第3頁(yè)共20頁(yè)塔里木大學(xué)信息工程學(xué)院課程設(shè)計(jì)圖基本步驟 2第二步會(huì)遇到的問(wèn)題及解決方案:1、建立兔子線程,繼承接口Runnable 并正確的實(shí)現(xiàn)run() 方法。同時(shí)要特別注意兔子在比賽中還要模擬睡覺(jué)的動(dòng)作。2、建立烏龜線程,繼承接口Runnable 并實(shí)現(xiàn)其run() 方法,要與兔子多線程運(yùn)行;3、為了
10、實(shí)現(xiàn)可選擇多只龜兔進(jìn)行賽跑,要實(shí)現(xiàn)多個(gè)兔子,烏龜線程,并能并發(fā)運(yùn)行。4、游戲中提供了模式選擇的功能,通過(guò)建立ItemSelect類(lèi)來(lái)建立不同的游戲模式。二、各模塊的功能及程序說(shuō)明龜兔賽跑程序主要由以下幾個(gè)模塊構(gòu)成:模塊一:初始圖形界面模塊public class RRTT extends Applet implements ActionListenerGraphics g;Panel panel;Label label1,label2,label3;Button button1,button2;RabTor1 rabTor1;public void init()/Applet中的初始化函數(shù)有類(lèi)
11、中構(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();第4頁(yè)共20頁(yè)塔里木大學(xué)信息工程學(xué)院課程設(shè)計(jì)button1=new Button("進(jìn)入游戲 ");button2=new Button("退出游戲 ");button1.addA
12、ctionListener(this);button2.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)rab
13、Tor1=new RabTor1();/dispose();else if(e.getSource()=button2) System.exit(0);該模塊主要是用來(lái)提供進(jìn)入該程序游戲的初始圖形用戶(hù)界面,顯示該程序的基本信息,提示用戶(hù)進(jìn)行操作。模塊二:兔子線程模塊該模塊主要是實(shí)現(xiàn)兔子運(yù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")&am
14、p;&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í)間睡眠(0 30 秒)str1=" 烏龜跑這么慢,我先睡一會(huì)"str2="哼,別以為自己是兔子就了不起!你就睡吧!"rabbit = getImage( getCodeBase(),"4.jpg");try t1=(int)(Math.
15、random()*30000); Thread.currentThread().sleep(t1);第5頁(yè)共20頁(yè)塔里木大學(xué)信息工程學(xué)院課程設(shè)計(jì)catch (InterruptedException e)模塊三:烏龜線程模塊該模塊主要是實(shí)現(xiàn)烏龜運(yùn)行線程,類(lèi) 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+=(in
16、t)(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è)置與布局class Imagecanvas extends CanvasToolki
17、t 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;第6頁(yè)共20頁(yè)塔里木大學(xué)信息工程學(xué)院課程設(shè)計(jì)三、操作方法及試驗(yàn)結(jié)果:(第一局比賽開(kāi)始)(兔
18、子領(lǐng)先)第7頁(yè)共20頁(yè)塔里木大學(xué)信息工程學(xué)院課程設(shè)計(jì)(兔子勝利)(第二局比賽開(kāi)始)(兔子中途睡覺(jué))(烏龜反超兔子,最終勝利)設(shè)計(jì)體會(huì)本系統(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í),在游戲第8頁(yè)共20頁(yè)塔里木大學(xué)信息工程學(xué)院課程設(shè)計(jì)的制作過(guò)程中要用到很多課本上并未介紹到的知識(shí),例如多線
19、程隊(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)行線程的問(wèn)題時(shí),我糾結(jié)了很久沒(méi)能找到解決辦法,最終通過(guò)上網(wǎng)百度,不斷嘗試,不斷錯(cuò),在不斷改,終于解決了。通過(guò)網(wǎng)絡(luò)學(xué)習(xí)使得自己對(duì)該部分的知識(shí)有了更廣泛更深刻的體會(huì)。這次的課程設(shè)計(jì)時(shí)間有點(diǎn)短,僅有二周的
20、時(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ù)設(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)豐富界面,
21、最大程度的模擬龜兔賽跑的場(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)入游戲界面后,先選擇游戲模
22、式,然后單擊開(kāi)始按鈕,烏龜和兔子將會(huì)以隨機(jī)的速度開(kāi)始朝終點(diǎn)線爬行,通過(guò) java 中重復(fù)刷新技術(shù)達(dá)到動(dòng)畫(huà)效果,給用戶(hù)更逼真的感官。關(guān)鍵技術(shù)游戲中提供了模式選擇的功能,通過(guò)建立ItemSelect類(lèi)來(lái)建立不同的游戲模式。建立兔子和烏龜線程,繼承接口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)手能力
23、也有所提高,再次讓我感受到Java 語(yǔ)言強(qiáng)大的功能,更激發(fā)了我Java 語(yǔ)言的興趣。如果說(shuō)以前的編程僅僅是按照課本的要求進(jìn)行的,那這個(gè)課程設(shè)計(jì)難度就提高了一個(gè)級(jí)別,它讓們將所知道的知第9頁(yè)共20頁(yè)塔里木大學(xué)信息工程學(xué)院課程設(shè)計(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ì)
24、語(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.92 丁振凡 Java 語(yǔ)言使用教程實(shí)驗(yàn)指導(dǎo) . 北京郵件大學(xué)出版社, 2006.93 Bruce EckelJava 編程思想 .機(jī)械工業(yè)出版社2007.64 耿祥義 JAV
25、A2實(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 吳其慶 . Java 程序設(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ǔ)言程序
26、設(shè)計(jì)教程 . 北京:中國(guó)水利水電出版社, 200612 趙文靖編著 .Java 程序設(shè)計(jì)基礎(chǔ)與上機(jī)指導(dǎo) . 北京:清華大學(xué)出版社, 200613 張海藩 . 軟件工程導(dǎo)論 ( 第四、五版 )M. 北京 : 清華大學(xué)出版社 , 2008.14Cay SandGaryC.Java2 核心技術(shù) ( 卷1:基礎(chǔ)知識(shí) )M.機(jī)械工業(yè)出版社,2003.15 鄧光偉 , 李阿午 , 朱志 .Java2 核心技術(shù) ( 卷 2: 高級(jí)特性 )M. 機(jī)械工業(yè)出版社 ,2000.16WatsonK,NagelC, 齊立波 .C# 入門(mén)經(jīng)典 M. 清華大學(xué)出版社,2002.17 張廣彬 , 孟紅蕊,張永寶 .C+課程
27、設(shè)計(jì)案例精編 M. 清華大學(xué)出版社, 2005.18 朱喜福 .C+ 程序設(shè)計(jì) M. 人民郵電出版社, 2005.19 宛延闿 . 實(shí)用 C+程序設(shè)計(jì)教程 M. 機(jī)械工業(yè)出版社, 2006.第10頁(yè)共20頁(yè)塔里木大學(xué)信息工程學(xué)院課程設(shè)計(jì)附錄源程序package sxx;SuppressWarnings( "unused", "serial" )class Imagecanvas extends CanvasToolkit tool;Image image1;Imagecanvas() setSize(800,500); tool=getToolkit()
28、;第11頁(yè)共20頁(yè)塔里木大學(xué)信息工程學(xué)院課程設(shè)計(jì)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 frame extends Frame implements ActionListener Panel panel;Label label1,label2,
29、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();button1=new Button("進(jìn)入游戲 ");button2=new Button("退出游戲 "
30、;);button1.addActionListener(this);button2.addActionListener(this);/label1.setText("歡迎使用該軟件,1.0版本,不足之處,請(qǐng)多多指教!");/label2.setText("*東瑞制作 *程序員 *孫肖肖 *");setLayout(new BorderLayout();panel.add(button1);panel.add(label3);panel.add(button2);add(label1,BorderLayout.NORTH);add(label2,Bord
31、erLayout.SOUTH);add(panel,BorderLayout.CENTER);addWindowListener(new WindowAdapter()public void WindowClosing(WindowEvent e)System.exit(0););setBounds(300,200,300,200);setVisible(true);validate();第12頁(yè)共20頁(yè)塔里木大學(xué)信息工程學(xué)院課程設(shè)計(jì)public void actionPerformed(ActionEvent e)if(e.getSource()=button2) rabTor1=new R
32、abTor1();*/package sxx;SuppressWarnings("serial")public class RabTor1 extends JApplet implements RunnableGraphics 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
33、.0;/圖片移動(dòng)用的時(shí)間String str1="rabbit",str2="tortoise"/給字符串付初值! setSize(800,400);/為什么沒(méi)用?public void init()/Applet中的初始化函數(shù)有類(lèi)中構(gòu)造函數(shù)的作用! 最先調(diào)用 !backpic = getImage(getCodeBase(), "起跑 .jpg");/將圖片對(duì)象與圖片綁定 !rabbit = getImage( getCodeBase(),"兔子 .gif");tortoise = getImage(getCod
34、eBase(), "烏龜 .jpg");zhongdian = getImage(getCodeBase(), "烏龜贏了 .png");tortoise2 = getImage(getCodeBase(),"小烏龜 .jpg");rabbit2=getImage(getCodeBase(),"兔子在前 .jpg");/rabbit3=getImage(getBase(),"3.jpg");第13頁(yè)共20頁(yè)塔里木大學(xué)信息工程學(xué)院課程設(shè)計(jì)public void paint(Graphics g)/
35、此函數(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.drawLin
36、e(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);else if(i=2)g.drawImage(to
37、rtoise2, 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);*/public void update(Graphics g)/用不到!public void start()/此函數(shù)第二個(gè)調(diào)用!Thread rab = new Thread(this, "rabbit");/創(chuàng)建一個(gè)兔子線程,this表示在這
38、個(gè)類(lèi)中找 .rabbit是線程的名子.Thread tor = new Thread(this, "tortoise");rab.start();/線程對(duì)象調(diào)用start()方法 ! 然后調(diào)用對(duì)應(yīng)的run() 方法 !tor.start();/*public void stop() tryrab.stop();第14頁(yè)共20頁(yè)塔里木大學(xué)信息工程學(xué)院課程設(shè)計(jì)rab=null;tor.stop();tor=null;catch(Exception e)*/為什么沒(méi)用?/public void destroy()/ public void run()/此函數(shù)第三個(gè)調(diào)用!URL c
39、odebase=getCodeBase();AudioClip audio1=getAudioClip(codebase,"龜兔賽跑 .wav");g.drawString("-背景音樂(lè)魯晶晶制作",30,30);audio1.loop();boolean stop=false;/標(biāo)志 , 此函數(shù)的精典之處. 控制兔子 , 龜什么時(shí)候停 !while(!stop)tryThread.currentThread();Thread.sleep(1000);/當(dāng)前線程調(diào)用sleep()函數(shù) .catch (InterruptedException ex)Str
40、ing threadName=Thread.currentThread().getName();/取得當(dāng)前線程的名子 .if(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<
41、;x2)str1="烏龜跑這么慢,我肯定能追上他!我先睡一會(huì)"str2="哼,別以為自己是兔子就了不起!你就睡吧!"rabbit = getImage( getCodeBase(),"兔子睡覺(jué) .jpg");if(x1>=120&&x1<=130)str1="烏龜跑這么慢,我先睡一會(huì)"str2="哼,別以為自己是兔子就了不起!你就睡吧!"rabbit = getImage( getCodeBase(),"兔子睡覺(jué) .jpg");第15頁(yè)共20頁(yè)塔里
42、木大學(xué)信息工程學(xué)院課程設(shè)計(jì)tryt1=(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(x1>=240&&x1<=250) str1="烏龜跑這么慢,讓我再睡一會(huì)吧 "str2="哼,別以為自己是兔子就了不起!你就睡吧!"rabbit = getImage( getCodeBase(),"兔子睡覺(jué) .jpg");tryt2=(int)(Mat
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 員工離職后的關(guān)懷計(jì)劃
- 小班生活習(xí)慣培養(yǎng)的工作重點(diǎn)計(jì)劃
- 2025年金屬探測(cè)器項(xiàng)目發(fā)展計(jì)劃
- 2025年股權(quán)融資顧問(wèn)之股權(quán)私募項(xiàng)目總協(xié)調(diào)人暨財(cái)務(wù)顧問(wèn)協(xié)議
- 折線統(tǒng)計(jì)圖(教案)青島版五年級(jí)上冊(cè)數(shù)學(xué)
- 培訓(xùn)費(fèi)退款協(xié)議(2025年版)
- 保安班長(zhǎng)工作總結(jié)報(bào)告
- 做銷(xiāo)售的工作簡(jiǎn)歷模板
- 酒店評(píng)價(jià)員工的評(píng)語(yǔ)
- 物業(yè)供應(yīng)鏈公司合作協(xié)議
- JTG-D82-2009公路交通標(biāo)志和標(biāo)線設(shè)置規(guī)范
- DZ∕T 0248-2014 巖石地球化學(xué)測(cè)量技術(shù)規(guī)程(正式版)
- 生物農(nóng)藥與生物防治學(xué)智慧樹(shù)知到期末考試答案章節(jié)答案2024年浙江農(nóng)林大學(xué)
- 淋巴結(jié)結(jié)核的個(gè)案護(hù)理
- 基于STM32的智能掃地機(jī)器人設(shè)計(jì)
- 山東省青島市嶗山區(qū)育才學(xué)校2023-2024學(xué)年下學(xué)期奇點(diǎn)計(jì)劃選拔考試八年級(jí)物理試卷
- 賠償協(xié)議書(shū)工程質(zhì)量問(wèn)題賠償
- 海洋農(nóng)場(chǎng)與海洋牧場(chǎng)
- 2023年常德煙草機(jī)械有限責(zé)任公司招聘考試真題及答案
- 北師大版二年級(jí)數(shù)學(xué)下冊(cè)全冊(cè)教材解讀分析完整課件
- 名著《駱駝祥子》閱讀任務(wù)單 統(tǒng)編版語(yǔ)文七年級(jí)下冊(cè)
評(píng)論
0/150
提交評(píng)論