龜兔賽跑程序設計報告全解_第1頁
龜兔賽跑程序設計報告全解_第2頁
龜兔賽跑程序設計報告全解_第3頁
龜兔賽跑程序設計報告全解_第4頁
龜兔賽跑程序設計報告全解_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

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

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

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

5、利于培養(yǎng)嚴謹認真的學習態(tài)度,在程序設計的過程中,當我們輸入程序代碼的時候,如果不夠認真細心,那么就可能導致語法錯誤,從而無法得出運行結(jié)果。那么,這個我們反復調(diào)試,反復修改的過程,其實也是對我們認真嚴謹治學的一個鍛煉。3.2 目標與總體方案( 1 )用圖形用戶界面實現(xiàn)游戲界面,同時通過設置布局,背景,字體等來豐富界面,最大程度的模擬龜兔賽跑的場景。( 2 )能設置比賽時間,龜兔的數(shù)量等等,實現(xiàn)對比賽中龜兔的數(shù)量,比賽時間等參數(shù)的設置。( 3 )在任意時間段內(nèi)龜兔的速度是隨機的,為了模擬龜兔賽跑結(jié)果的不確定性,在游戲開始后烏龜和兔子的速度都是通過隨機函數(shù)產(chǎn)生的,保證兔子比烏龜速度要快,兔子在賽跑途

6、中看到烏龜落后下會偷懶睡覺的前提下給予烏龜, 兔子以隨機的速度, 從而使得游戲的結(jié)果不確定, 給用戶更多的游戲的真實感。( 4 )開始比賽之后以動畫顯示賽跑過程,用戶進入游戲界面后,先選擇游戲模式,然后單擊開始按鈕,烏龜和兔子將會以隨機的速度開始朝終點線爬行,通過重復刷新技術(shù)達到動畫效果,給用戶更逼真的感官。( 5 )系統(tǒng)的開發(fā)可以采用Java 語言來實現(xiàn);( 6 )在基本要求達到后,可進行創(chuàng)新設計,如改善算法性能、友好的人機界面。3.3 設計方法和內(nèi)容3.3.1 開發(fā)環(huán)境硬件環(huán)境:一臺清華同方電腦,其配置為: CPU: Intel(R) Core(TM) i5-4570 3.2GHz 內(nèi)存:

7、 4G 硬盤: 500G 主板: 4260LA-2922P軟 件 環(huán) 境 : Windows 7 旗 艦 版 版 本 2009 Service Pack 1 , 并 且 安 裝 了 可 供 編 程 的 eclipse-standard-kepler-SR1-win323.3.2 設計方法賽跑的過程是兩個比賽對象并行前進的過程,考慮到應用需求,我們可以利用多線程技術(shù),所謂多線程就是指同時存在幾個執(zhí)行體,按幾條不同的執(zhí)行線索共同工作的情況, 這與要求剛好吻合, Java 語言對 多線程提供強大的支持。用直觀圖形描述龜兔賽跑前進過程:每過一秒,兔子走過的文本框中增加三個“# ”號,烏龜走過的路程文本

8、框中增加一個“# ”號。跑完路程結(jié)束線程,并顯示各自跑完全程總共用的時間。3.3.3 主體內(nèi)容一、設計分析第一步:設計良好游戲界面功能:實現(xiàn)基本的開始、退出游戲功能、選擇游戲模式等?;静襟E:huttoii烏他株簽兔子續(xù)選擇裔提示模式信息呈現(xiàn)用于選擇不同的比一 模式退出按鈕圖3.3.3.1 基本步驟1在實現(xiàn)過程中會遇到的問題及解決方案:1、背景面板上加載圖片時需要重寫 paintComponent方法2、布局必須合理設置 (GridLayout不能改變組件的具體位置但可以縮放時相對位置不變。FlowLayout默認是占滿第一行轉(zhuǎn)向第二行,并且放大時相對位置改變。 Null布局可以自由布置組件位

9、置和大小, 但不 易實現(xiàn)窗口放大時相對大小隨之變化。 )若設置不合理,就可能出現(xiàn)多種錯誤。歹U如:無法插入背景圖片, 組建不能顯現(xiàn),組件位置與設計不符等等。3、添加背景面板監(jiān)聽重置各面板位置才能實現(xiàn)窗口放大時的相對位置不變第二步:線程類的設計功能:實現(xiàn)多只烏龜,兔子的多線程運行具體步驟:圖3.3.3.2 基本步驟2第二步會遇到的問題及解決方案:1、建立兔子線程,繼承接口 Runnable并正確的實現(xiàn)run()方法。同時要特別注意兔子在比賽中還要 模擬睡覺的動作。2、建立烏龜線程,繼承接口 Runnable并實現(xiàn)其run()方法,要與兔子多線程運行;3、為了實現(xiàn)可選擇多只龜兔進行賽跑,要實現(xiàn)多個

10、兔子,烏龜線程,并能并發(fā)運行。4、游戲中提供了模式選擇的功能,通過建立ItemSelect類來建立不同的游戲模式。二、各模塊的功能及程序說明龜兔賽跑程序主要由以下幾個模塊構(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中的初始化函數(shù)有類中構(gòu)造函數(shù)的作用!最先調(diào)用! pan

11、el=new Panel();panel.setLayout(new FlowLayout();label1=new Label("歡迎使用該軟件,1.0版本,不足之處,請多多指教! ");label2=new Label("*東瑞制作* 程序員* 陳杰 *) label3=new Label();button1=new Button("進入游戲");button2=new Button("退出游戲");button1.addActionListener(this);button2.addActionListener(thi

12、s);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();/dispose();else if(e.getSourc

13、e()=button2) System.exit(0);該模塊主要是用來提供進入該程序游戲的初始圖形用戶界面,顯示該程序的基本信息,提示用戶進行操作。模塊二:兔子線程模塊該模塊主要是實現(xiàn)兔子運行線程,類 RabbitThread 繼承了接口 Runnable 并實現(xiàn)其方法run() ,主要有兩個功能的實現(xiàn):1. 來為兔子定義隨機速度x1=x1+(int)(Math.random()*30);2. 兔子動的實現(xiàn)方法if(threadName.equals("rabbit")&&x1<=800)int t1=0,t2=0;str1="rabbit

14、"x1=x1+(int)(Math.random()*30);rab_time=rab_time+1;rab_road+=(int)(Math.random()*25);3. 兔子獲得一個隨機的時間睡眠(0 30 秒 )str1=" 烏龜跑這么慢,我先睡一會 "str2=" 哼,別以為自己是兔子就了不起!你就睡吧! "rabbit = getImage( getCodeBase(),"4.jpg");try t1=(int)(Math.random()*30000);Thread.currentThread().sleep(

15、t1);catch (InterruptedException e)模塊三:烏龜線程模塊該模塊主要是實現(xiàn)烏龜運行線程,類 TortoiseThread 繼承了接口 Runnable 并實現(xiàn)其方法run() ,主要功能的實現(xiàn):烏龜移動實現(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;if(x2>140&&x2<

16、;240) str2="tortoise" if(x2>255&&x2<=480) str2="tortoise" if(x2>480&&x1<580) str2=" 就快到終點了,我要堅持下去,堅持就是勝利! "通過隨機函數(shù)實現(xiàn)烏龜隨機速度爬行。模塊四:畫布界面的設置與布局class Imagecanvas extends CanvasToolkit tool;Image image1;Imagecanvas() setSize(800,500);tool=getToolkit

17、();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;三、操作方法及試驗結(jié)果:(兔子領(lǐng)先)(第一局比賽開始)(兔子勝利)(第二局比賽開始)(兔子中途睡覺)(烏龜反超兔子,最終勝利)3.3.4設計體會本系統(tǒng)是一個基于多線程模式的龜兔賽跑小游戲,系統(tǒng)的規(guī)模很有限,功能實現(xiàn)也相對簡單,

18、但 作為一個完整的系統(tǒng),在整個過程中我還是學到了不少的知識,也對 java語言有了較深的體會。通過本次課設試驗,我對java的熟練程度得到了很大的提升,對包括多線程在內(nèi)的java語言高級技術(shù)掌握的也更加熟練了,更對面向?qū)ο蟮姆治鏊枷耄嫦驅(qū)ο蟮脑O計方法有了直觀的體會。同時,在游戲 的制作過程中要用到很多課本上并未介紹到的知識,例如多線程隊列事件等等,通過網(wǎng)絡學習和與老師同 學的交流使得自己對該部分的知識有了更廣泛更深刻的體會。當然本次課設,通過我不斷的嘗試,不斷的 修改錯誤,解決問題,終于明白了程序員生活中天堂與地獄的感覺是什么了。雖然這個過程很苦,但我對 java的熟練程度得到了很大的提升。

19、同時,在游戲的制作過程中要用到很多課本上并未介紹到的知識,如 當我遇到如何在一個 Japplet類中創(chuàng)建另外一個 Applet類的對象并運行線程的問題時,我糾結(jié)了很久沒 能找到解決辦法,最終通過上網(wǎng)百度,不斷嘗試,不斷錯,在不斷改,終于解決了。通過網(wǎng)絡學習使得自 己對該部分的知識有了更廣泛更深刻的體會。這次的課程設計時間有點短,僅有二周的時間。在調(diào)試過程 中屢調(diào)屢敗的狀態(tài)下,老師給了我熱情的幫助,老師指導我們調(diào)試程序,說哪些是錯的,哪些是多余的, 哪些是必要的,一個雜亂無章的程序被修改得有條不紊,很顯然結(jié)果也是最最正確的。本次系統(tǒng)的功能相對還比較單一,只能選擇兩種游戲模式,并且游戲也相對單調(diào),

20、缺乏趣味性,離一 個真正的游戲軟件還相差很遠,以后如有時間,可以考慮去做一個真正的游戲軟件。3.4 設計創(chuàng)新與關(guān)鍵技術(shù)3.4.1 設計創(chuàng)新1、用圖形用戶界面實現(xiàn)游戲界面;通過使用 java 中 Jlabel , Jbutton , JtextArea , JcomboBox 等 swing 組件來實現(xiàn)圖形用戶界面,同時通過設置布局,背景,字體等來豐富界面,最大程度的模擬龜兔賽跑的場景。2、能設置比賽時間,龜兔的數(shù)量等等。通過組合框組件的使用以及事件的訂閱來實現(xiàn)用戶對不同游戲模式的選擇,在本程序中只是簡單的設計了兩種游戲模式供用戶選擇,也一定程度上實現(xiàn)了對比賽中龜兔的數(shù)量,比賽時間等參數(shù)的設置。

21、3、在任意時間段內(nèi)龜兔的速度是隨機的。為了模擬龜兔賽跑結(jié)果的不確定性, 在游戲開始后烏龜和兔子的速度都是通過隨機函數(shù)產(chǎn)生的, 當然,我們會在保證兔子比烏龜速度要快,兔子在賽跑途中看到烏龜落后下會偷懶睡覺的前提下給予烏龜,兔子以隨機的速度,從而使得游戲的結(jié)果不確定,給用戶更多的游戲的真實感。4、開始比賽之后以動畫顯示賽跑過程。用戶進入游戲界面后,先選擇游戲模式,然后單擊開始按鈕,烏龜和兔子將會以隨機的速度開始朝終點線爬行,通過java 中重復刷新技術(shù)達到動畫效果,給用戶更逼真的感官。3.4.2 關(guān)鍵技術(shù)游戲中提供了模式選擇的功能,通過建立ItemSelect 類來建立不同的游戲模式。 建立兔子和

22、烏龜線程,繼承接口 Runnable 并正確的實現(xiàn)run() 方法。3.5 結(jié)論程序的語法錯誤很容易查找和修改,但找出了語法錯誤并不代表程序已經(jīng)完成。很多編譯錯誤是由于函數(shù)名或變量名等程序?qū)ο蟮钠磳戝e誤引起的。 在編寫程序的過程中, 需要認真仔細, 以免出現(xiàn)拼寫錯誤,增加調(diào)試程序的工序, 浪費不必要的時間和精力。 在這個過程中, 我收獲頗多, 不僅理論知識掌握的更牢,實際動手能力也有所提高,再次讓我感受到 Java 語言強大的功能,更激發(fā)了我Java 語言的興趣。如果說以前的編程僅僅是按照課本的要求進行的,那這個課程設計難度就提高了一個級別,它讓們將所知道的知識聯(lián)系到了一起,更加顯示了程序的強

23、大。致謝首先我要感謝我的老師在課程設計上給予我們的指導和提供給我們的支持和幫助,這是我們能順利完成這次課程設計的主要原因,更重要的是老師幫我解決了許多技術(shù)上的難題,讓我們能把程序做得更加完善。在此期間,我不僅學到了許多新的知識,而且也開闊了視野,提高了自己的設計能力。其次,我要感謝曾經(jīng)幫助過我的同學, 他們也為我解決了不少我不太明白的設計語言,和一些細節(jié)上的差錯。本次設計是在高賢強老師的悉心指導下完成的,老師淵博的知識,嚴謹?shù)闹螌W態(tài)度,一絲不茍的工作作風,平易近人的性格都是我們學習的楷模。在論文的整理期間,高老師給了我們很多的意見和指導,才使得論文得以順利的完成。最后再一次感謝所有在設計中曾經(jīng)

24、幫助過我的良師益友和同學。在此,我誠心的對所有幫助過我的老師同學們說一句:謝謝!參考文獻1 丁振凡 Java 語言使用教程 . 北京郵件大學出版社, 2006.92 丁振凡 Java 語言使用教程實驗指導 . 北京郵件大學出版社, 2006.93 Bruce Eckel Java 編程思想 . 機械工業(yè)出版社2007.64耿祥義JAVA2實用教程.清華大學出版社 2009.55 陳國君 java 程序設計基礎(第二版) 清華大學出版社6 劉藝,吳英 Java 程序設計大學教程 M 北京:科學出版社, 2005 年7 趙文靖 . Java 程序設計基礎與上機指導 . 北京:清華大學出版社, 20

25、06 年 .8 吳其慶 . Java 程序設計實例教程 . 北京:冶金工業(yè)出版社, 2006 年 .9 耿祥義,張躍平 Java 基礎教程(第2 版) M 北京:清華大學出版社, 2007 年10 美Bruce Eckel. Thinking In Java. 英文第4版.北京:機械工業(yè)出版社,200711 楊昭編著 . 二級 Java 語言程序設計教程. 北京:中國水利水電出版社, 200612 趙文靖編著.Java 程序設計基礎與上機指導 . 北京:清華大學出版社, 200613 張海藩 . 軟件工程導論( 第四、五版)M. 北京 : 清華大學出版社,2008.14Cay S and Ga

26、ry C. Java2 核心技術(shù) (卷 1: 基礎知識 )M. 機械工業(yè)出版社 ,2003.15 鄧光偉 , 李阿午 , 朱志 .Java2 核心技術(shù) (卷 2: 高級特性 )M. 機械工業(yè)出版社 ,2000.16Watson K,NagelC,齊立波.C#入門經(jīng)典M.清華大學出版社,2002.17張廣彬,孟紅蕊,張永寶.C+課程設計案例精編M.清華大學出版社,2005.18朱喜福.C+程序設計M.人民郵電出版社,2005.19宛延闿.實用C+和序設af教程M.機械工業(yè)出版社,2006.附錄源程序package sxx;import java.awt.Color;import java.awt

27、.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 extends Canva

28、sToolkit 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 frame extends Frame implem

29、ents ActionListenerPanel panel;Label label1,label2,label3;Button button1,button2;RabTor1 rabTor1;frame()panel=new Panel(); panel.setLayout(new FlowLayout();label1=new Label(" 歡迎使用該軟件,1.0 版本,不足之處,請多多指教! ");label2=new Label("* 東瑞制作 * 程序員 * 孫肖肖 *");label3=new Label();button1=new But

30、ton("進入游戲");button2=new Button("退出游戲");button1.addActionListener(this);button2.addActionListener(this);/label1.setText(" 歡迎使用該軟件,1.0 版本,不足之處,請多多指教! ");/label2.setText("* 東瑞制作 * 程序員 * 孫肖肖 *");setLayout(new BorderLayout();panel.add(button1);panel.add(label3);pan

31、el.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(ActionEvent e

32、)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 Runnable Graphic

33、s 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;/ 圖片移動用的時間String str1="rabbit",str2="tortoise"/給字符串付初值! setSize(800,400);/為什么沒用?public void init()/

34、Applet 中的初始化函數(shù)有類中構(gòu)造函數(shù)的作用 ! 最先調(diào)用backpic = getImage(getCodeBase(), " rabbit = getImage( getCodeBase()," tortoise = getImage(getCodeBase(), " zhongdian = getImage(getCodeBase(), " tortoise2 = getImage(getCodeBase()," rabbit2=getImage(getCodeBase()," /rabbit3=getImage(getBa

35、se(),"3.jpg");public void paint(Graphics g)/ this.g=g;起跑 .jpg");/ 將圖片對象與圖片 綁定 !兔子 .gif");烏龜 .jpg");烏龜贏了 .png");小烏龜 .jpg");兔子在前 .jpg");此函數(shù)第四個調(diào)用 !setSize(760,360);if(i=1) g.drawImage(backpic, 0, 0, 800, 600, this);g.setColor(Color.green);g.fillRect(0, 0, 1600, 8

36、00);/填充矩形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, 60, this);g.drawStri

37、ng(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); else int x4=490,y4=80;g.drawIm

38、age(rabbit2,x4,y4,60,60,this);*/System.out.println(j);public void update(Graphics g)/用不到!public void start()/此函數(shù)第二個調(diào)用 !Thread rab = new Thread(this, "rabbit");/創(chuàng)建一個兔子線程,this 表示在這個類中找 .rabbit 是線程的名子.Thread tor = new Thread(this, "tortoise");rab.start();/線程對象調(diào)用 start() 方法 ! 然后調(diào)用對應的

39、 run() 方法 !tor.start(); /*public void stop() tryrab.stop();rab=null;tor.stop();tor=null;catch(Exception e)*/為什么沒用?/public void destroy() / public void run()/此函數(shù)第三個調(diào)用 !URL codebase=getCodeBase();System.out.println(codebase);AudioClip audio1=getAudioClip(codebase,"龜兔賽跑 .wav");g.drawString(&q

40、uot;- 背景音樂魯晶晶制作 ",30,30);audio1.loop();boolean stop=false;/標志 , 此函數(shù)的精典之處. 控制兔子 , 龜什么時候停!while(!stop) tryThread.currentThread();Thread.sleep(1000);/ 當前線程調(diào)用 sleep() 函數(shù) .catch (InterruptedException ex) String threadName=Thread.currentThread().getName();/取得當前線程的名子.if(threadName.equals("rabbit&

41、quot;)&&x1<=800)/兔子動的實現(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="烏龜跑這么慢,我肯定能追上他!我先睡一會"str2="哼,別以為自己是兔子就了不起!你就睡吧!"rabbit = getI

42、mage( 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(),"r

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論