




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、JAVA課程設(shè)計(jì)之坦克大戰(zhàn) 課程設(shè)計(jì)任務(wù)書攀枝花學(xué)院 學(xué)生課程設(shè)計(jì)(論文)題 目: 基于JAVA的坦克大戰(zhàn) 學(xué) 生 姓 名: 楊 興 貴 學(xué) 號: 200910801085 所在院 (系): 計(jì)算機(jī)學(xué)院 專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 班 級: 2009級計(jì)本(2)班 指 導(dǎo) 教 師: 羅 學(xué) 剛 職稱: 2011年 5 月 26 日攀枝花學(xué)院教務(wù)攀枝花學(xué)院本科學(xué)生課程設(shè)計(jì)任務(wù)書題目基于Java的坦克大戰(zhàn)1、課程設(shè)計(jì)的目的通過本課程設(shè)計(jì)使學(xué)生能夠較全面的掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的有關(guān)概念和開發(fā)方法,以便能較全面地理解、掌握和綜合運(yùn)用所學(xué)的知識,提高自身的編程能力。2、課程設(shè)計(jì)的內(nèi)容和要求(包括原始數(shù)據(jù)
2、、技術(shù)要求、工作要求等)利用java socket實(shí)現(xiàn)局域網(wǎng)內(nèi)的UDP信息傳輸,實(shí)現(xiàn)簡單的Java坦克大戰(zhàn)項(xiàng)目。3、主要參考文獻(xiàn)1蔡昭權(quán). 利用Socket實(shí)現(xiàn)多線程通信程序J. 2004,(06)2仲宇, 顧國昌 , 張汝波. 應(yīng)用TCP/IP網(wǎng)關(guān)實(shí)現(xiàn)數(shù)據(jù)遠(yuǎn)程傳輸J. 3 姜志強(qiáng)編著. Java語言程序設(shè)計(jì) M.北京:電子工業(yè)出版社,20074 侯俊杰編著. Java語言應(yīng)用開發(fā)基礎(chǔ) M.5 孫更新編著. Java畢業(yè)設(shè)計(jì)指南與項(xiàng)目實(shí)踐 M. 北京:科技出版社,2007.4、課程設(shè)計(jì)工作進(jìn)度計(jì)劃序號時(shí)間(天)內(nèi)容安排備注11分析設(shè)計(jì)準(zhǔn)備周一22編程調(diào)試階段周二至周三31編寫課程設(shè)計(jì)報(bào)告周四4
3、1考核周五總計(jì)5(天)指導(dǎo)教師(簽字)日期年 月 日教研室意見:年 月 日學(xué)生(簽字): 接受任務(wù)時(shí)間: 年 月 日注:任務(wù)書由指導(dǎo)教師填課程設(shè)計(jì)(論文)指導(dǎo)教師成績評定表題目名稱基于Java的坦克大戰(zhàn)評分項(xiàng)目分值得分評價(jià)內(nèi)涵工作表現(xiàn)20%01學(xué)習(xí)態(tài)度6遵守各項(xiàng)紀(jì)律,工作刻苦努力,具有良好的科學(xué)工作態(tài)度。02科學(xué)實(shí)踐、調(diào)研7通過實(shí)驗(yàn)、試驗(yàn)、查閱文獻(xiàn)、深入生產(chǎn)實(shí)踐等渠道獲取與課程設(shè)計(jì)有關(guān)的材料。03課題工作量7按期圓滿完成規(guī)定的任務(wù),工作量飽滿。能力水平35%04綜合運(yùn)用知識的能力10能運(yùn)用所學(xué)知識和技能去發(fā)現(xiàn)與解決實(shí)際問題,能正確處理實(shí)驗(yàn)數(shù)據(jù),能對課題進(jìn)行理論分析,得出有價(jià)值的結(jié)論。05應(yīng)用文
4、獻(xiàn)的能力5能獨(dú)立查閱相關(guān)文獻(xiàn)和從事其他調(diào)研;能提出并較好地論述課題的實(shí)施方案;有收集、加工各種信息及獲取新知識的能力。06設(shè)計(jì)(實(shí)驗(yàn))能力,方案的設(shè)計(jì)能力5能正確設(shè)計(jì)實(shí)驗(yàn)方案,獨(dú)立進(jìn)行裝置安裝、調(diào)試、操作等實(shí)驗(yàn)工作,數(shù)據(jù)正確、可靠;研究思路清晰、完整。07計(jì)算及計(jì)算機(jī)應(yīng)用能力5具有較強(qiáng)的數(shù)據(jù)運(yùn)算與處理能力;能運(yùn)用計(jì)算機(jī)進(jìn)行資料搜集、加工、處理和輔助設(shè)計(jì)等。08對計(jì)算或?qū)嶒?yàn)結(jié)果的分析能力(綜合分析能力、技術(shù)經(jīng)濟(jì)分析能力)10具有較強(qiáng)的數(shù)據(jù)收集、分析、處理、綜合的能力。成果質(zhì)量45%09插圖(或圖紙)質(zhì)量、篇幅、設(shè)計(jì)(論文)規(guī)范化程度5符合本專業(yè)相關(guān)規(guī)范或規(guī)定要求;規(guī)范化符合本文件第五條要求。10
5、設(shè)計(jì)說明書(論文)質(zhì)量30綜述簡練完整,有見解;立論正確,論述充分,結(jié)論嚴(yán)謹(jǐn)合理;實(shí)驗(yàn)正確,分析處理科學(xué)。11創(chuàng)新10對前人工作有改進(jìn)或突破,或有獨(dú)特見解。成績指導(dǎo)教師評語指導(dǎo)教師簽名: 年月日摘 要系統(tǒng)擁有可視化的登錄界面,配有游戲幫助文檔,程序的編寫涵蓋J2SE基礎(chǔ)知識,包括典型的封裝、繼承、多態(tài)的實(shí)現(xiàn),同時(shí)結(jié)合了socket網(wǎng)絡(luò)編程、GUI圖形用戶界面的相關(guān)知識。項(xiàng)目集成了單機(jī)個(gè)人、網(wǎng)絡(luò)對戰(zhàn)兩個(gè)版本。單機(jī)版實(shí)現(xiàn)精彩的人機(jī)對戰(zhàn),電腦間隔性產(chǎn)生敵方坦克,玩家通過血塊持續(xù)攻擊。游戲進(jìn)行了后門設(shè)計(jì),玩家可以輕松穿越墻體攻擊敵方坦克。網(wǎng)絡(luò)版游戲中作為服務(wù)器的主機(jī)需提前啟動坦克服務(wù)器,服務(wù)器主線程將
6、接收的客戶端的數(shù)據(jù)包轉(zhuǎn)發(fā)到其他客戶端,實(shí)現(xiàn)客戶端游戲界面的實(shí)時(shí)更新。開始游戲后,主線程調(diào)用窗體對象的Paint方法進(jìn)行繪圖,畫面采用雙緩沖技術(shù)進(jìn)行刷新。坦克將在游戲開始時(shí)進(jìn)行初始化,并隨屏幕刷新的頻率而移動。關(guān)鍵字 坦克大戰(zhàn),C/S網(wǎng)絡(luò)體系,JAVA,Socket編程,GUIJAVA課程設(shè)計(jì)之坦克大戰(zhàn) 目 錄目 錄摘 要1 可行性研究11.1 可行性分析11.1.1 系統(tǒng)可行性11.1.2 技術(shù)可行性11.1.3 經(jīng)濟(jì)可行性11.1.4 操作可行性11.2 網(wǎng)絡(luò)游戲的發(fā)展11.3 系統(tǒng)的現(xiàn)實(shí)意義11.4 系統(tǒng)特點(diǎn)11.5 Java、C語言、C+主流技術(shù)比較11.6 本章小結(jié)12 系統(tǒng)需求分析1
7、2.1 系統(tǒng)運(yùn)行環(huán)境12.1.1 系統(tǒng)運(yùn)行的軟件環(huán)境12.1.2 系統(tǒng)運(yùn)行的硬件環(huán)境12.2 相關(guān)理論12.2.1 關(guān)于Eclipse的介紹12.2.2 J2SE框架12.3 系統(tǒng)功能需求12.3.1 主界面人性化功能12.3.2 人機(jī)對戰(zhàn)模式功能12.3.3 網(wǎng)絡(luò)對戰(zhàn)模式功能12.3.4 聯(lián)機(jī)通信機(jī)制12.3.5 Java圖形編程12.4 本章小結(jié)13 系統(tǒng)概要設(shè)計(jì)13.1系統(tǒng)功能設(shè)計(jì)13.1.1 坦克大戰(zhàn)總體功能設(shè)計(jì)13.1.2 TankClient類基本功能分析13.1.3 Tank類基本功能分析13.1.4 Missile類基本功能分析13.1.5 Explode類基本功能分析13.1
8、.6 服務(wù)器類基本功能分析13.1.7 信息傳送類基本功能分析13.2 本章小結(jié)14 系統(tǒng)詳細(xì)設(shè)計(jì)14.1 游戲主窗體實(shí)現(xiàn)14.2 單機(jī)游戲的實(shí)現(xiàn)14.3 聯(lián)機(jī)功能實(shí)現(xiàn)14.4 網(wǎng)絡(luò)模式主要代碼14.5 本章小結(jié)15 結(jié)論15.1 課程設(shè)計(jì)總結(jié)15.2 本程序需解決的有關(guān)技術(shù)問題15.3 展望1參 考 文 獻(xiàn)1JAVA課程設(shè)計(jì)之坦克大戰(zhàn) 可行性研究1 可行性研究1.1 可行性分析1.1.1 系統(tǒng)可行性人類進(jìn)入21世紀(jì),全球一體化,互聯(lián)網(wǎng)就起到重要的作用,而且隨著互聯(lián)網(wǎng)的不斷發(fā)展,信息技術(shù)逐漸發(fā)展壯大,將成為網(wǎng)絡(luò)經(jīng)濟(jì)的核心。其中計(jì)算機(jī)、網(wǎng)絡(luò)通信的發(fā)展最為迅速。在現(xiàn)今電子信息高速發(fā)展的時(shí)代,網(wǎng)絡(luò)游
9、戲已經(jīng)深入到人們的日常生活中,成為老少皆宜的娛樂方式。1.1.2 技術(shù)可行性Java語言自Sun公司于1995年5月正式發(fā)布以來,經(jīng)歷了出生、成長、成熟壯大的幾個(gè)階段,逐漸發(fā)展成為IT領(lǐng)域里的主流計(jì)算模式,使用Java開發(fā)工具方便,容易實(shí)現(xiàn)。Java對開發(fā)網(wǎng)絡(luò)產(chǎn)品有它自己獨(dú)特的優(yōu)勢,網(wǎng)絡(luò)游戲也是其開發(fā)產(chǎn)物之一。本系統(tǒng)開發(fā)過程是利用Java編程語言和eclipse集成開發(fā)環(huán)境配合使用來實(shí)現(xiàn)的,它是基于TCP/UDP協(xié)議和Socket編程技術(shù),建立以C/S為結(jié)構(gòu)模式的娛樂性游戲平臺。1.1.3 經(jīng)濟(jì)可行性本設(shè)計(jì)的開發(fā)是基于JDK5.0和eclipse3.2的,因?yàn)樗鼈兌际敲赓M(fèi)而且開源的軟件,所以實(shí)
10、現(xiàn)本設(shè)計(jì)的成本就有所降低。隨著計(jì)算機(jī)、網(wǎng)絡(luò)通訊和信息技術(shù)的迅猛發(fā)展以及人類精神生活品質(zhì)的提高,國際、國內(nèi)的各種各樣的大型綜合游戲網(wǎng)站如雨后春筍般的發(fā)展起來。一款好的游戲帶來的經(jīng)濟(jì)效益可以說是不可估量的,比如現(xiàn)在網(wǎng)上最流行的魔獸世界、征途等大型網(wǎng)絡(luò)版游戲。本游戲既可單機(jī)運(yùn)行,也可以是聯(lián)機(jī)版多人同時(shí)在線對戰(zhàn)。1.1.4 操作可行性本設(shè)計(jì)是一個(gè)網(wǎng)絡(luò)版的游戲平臺,只是模擬了現(xiàn)在社會上的一些網(wǎng)絡(luò)游戲的部分功能,所以操作簡易,玩家不需要了解內(nèi)部流程,只是和一般其他的網(wǎng)絡(luò)游戲一樣的操作即可開始游戲。相對于開發(fā)者而言,整個(gè)系統(tǒng)形成主要由JDK5.0虛擬環(huán)境和eclipse3.2共同完成,無需更多復(fù)雜的工具和服
11、務(wù)器支持。1.2 網(wǎng)絡(luò)游戲的發(fā)展在今天,借助于數(shù)字、電子、網(wǎng)絡(luò)、創(chuàng)意、編劇、美工、音樂等等“先進(jìn)”的道具,網(wǎng)絡(luò)游戲?qū)τ谌藗儸F(xiàn)實(shí)生活的虛擬達(dá)到了一個(gè)全新的境界,并且則在這新的境界上還原了游戲的本源-人與人的互動。網(wǎng)絡(luò)游戲滿足了現(xiàn)代社會必須的溝通需求,無疑它應(yīng)該是適合所有人的。在軍事模擬對抗演習(xí)中,大型游戲機(jī)既可以模擬作戰(zhàn)現(xiàn)場的地形、軍力部署、天氣等情況,還可以進(jìn)行多兵種戰(zhàn)術(shù)技能對抗訓(xùn)練;在國防訓(xùn)練方面,大型游戲機(jī)可以模擬坦克操縱、導(dǎo)彈發(fā)射、飛機(jī)駕駛、艦艇巡航等多種訓(xùn)練任務(wù);在醫(yī)療培訓(xùn)方面,大型游戲機(jī)擁有的全息三維立體投影技術(shù),可以逼真地展示人體的各部分構(gòu)造和器官等。1.3 系統(tǒng)的現(xiàn)實(shí)意義游戲本身
12、是一種娛樂方式,能帶給人們無盡的樂趣,而且游戲行業(yè)的發(fā)展還將會帶動眾多周邊產(chǎn)業(yè),如五金、塑料、機(jī)械、電子、 顯像管,高端機(jī)型甚至使用了40英寸以上的大屏幕背投、液晶顯示器等,這些顯像設(shè)備不但要依賴國內(nèi)眾多顯像管生產(chǎn)企業(yè)提供支持,更要針對游戲的內(nèi)容進(jìn)行深入開發(fā)和優(yōu)化,以適應(yīng)游戲內(nèi)容的飛速發(fā)展和變化,大大突破了傳統(tǒng)家電類顯像設(shè)備的限制,對國內(nèi)顯像管制造企業(yè)的發(fā)展、創(chuàng)新具有極大的推動作用,大型游戲機(jī)的外部框體制造涉及工業(yè)設(shè)計(jì)、模具加工、五金加工、塑料成形、特殊印刷等工藝流程,由此帶動了一大批相關(guān)的零部件生產(chǎn)制造企業(yè),而這些企業(yè)均為生產(chǎn)密集型企業(yè),大幅度增加了勞動就業(yè)的需求。1.4 系統(tǒng)特點(diǎn)本系統(tǒng)的坦
13、克大戰(zhàn)是基于Java語言設(shè)計(jì)開發(fā)的,具有高超的人工智能,精美的圖形處理,支持單機(jī)運(yùn)行和網(wǎng)絡(luò)對戰(zhàn)的坦克射擊游戲。比之前網(wǎng)絡(luò)上實(shí)現(xiàn)的游戲更加方便,快捷,智能。游戲基本玩法較簡單,游戲可一人電腦作戰(zhàn),每次電腦方有坦克10輛,游戲以消滅全部敵方坦克過關(guān)為目的。在這過程中,坦克有機(jī)會得到血塊來添加生命值,從而變得更加強(qiáng)大,也能利用各種有利地形來阻擊敵人。游戲進(jìn)行了后門程序設(shè)計(jì)可以輕松穿越墻體攻擊敵方坦克。還有給玩家坦克設(shè)置超級炮彈,當(dāng)電腦方坦克數(shù)量過多時(shí),玩家坦克可以發(fā)射超級炮彈打擊敵方。主要新增的功能簡單羅列如下:(1)屏幕左上方顯示游戲狀態(tài),當(dāng)玩家方坦克數(shù)全為零時(shí)則游戲結(jié)束;(2)一般坦克只可在空地
14、中或草叢中行走,不可通過墻面等障礙物;(3)游戲中打壞敵方坦克后,可能會在隨機(jī)位置隨機(jī)出現(xiàn)血塊獎勵(lì),坦克經(jīng)過該位置可獲得相應(yīng)加生命值獎勵(lì);(4)玩家坦克的游戲資格和電腦坦克不同。1.5 Java、C語言、C+主流技術(shù)比較Java 語言是一種跨平臺,適合于分布式計(jì)算環(huán)境的面向?qū)ο缶幊陶Z言。JAVA現(xiàn)在主要用在WEB開發(fā),手機(jī)游戲及一些平臺游戲的開發(fā),因?yàn)樗哂泻芎玫目缙脚_性,在手機(jī)等各種電子產(chǎn)品上應(yīng)用非常廣泛。C語言是一種面向過程編程,這就使得Java具有重用的特性,在開發(fā)速度上比C語言更快,但是在運(yùn)行速度上卻是C更快,因?yàn)镃屬于底層語言,它比JAVA更加親近機(jī)器,所以在許多系統(tǒng)開發(fā)上一般是用C
15、語言。 C+多用于游戲引擎、反病毒、硬件驅(qū)動以及一些對運(yùn)行效率要求比較高的應(yīng)用程序,比如數(shù)據(jù)庫管理系統(tǒng)。 C+語言在提供強(qiáng)大的功能的同時(shí)也提高了程序含BUG的可能性。 C+為了照顧大量的C語言使用者,而兼容了C,使得自身僅僅成為了帶類的C語言,多多少少影響了其面向?qū)ο蟮膹氐仔浴?.6 本章小結(jié)本章主要介紹了網(wǎng)絡(luò)游戲在國內(nèi)外發(fā)展的現(xiàn)狀,現(xiàn)如今,網(wǎng)絡(luò)游戲市場的重新定位是最迫切需要解決的問題。本系統(tǒng)主要的現(xiàn)實(shí)意義,與其他游戲的區(qū)別和完善的一些功能。本文用Java語言、C語言、C+三種主流編程技術(shù)比較,闡述了使用Java語言編程的原因。32JAVA課程設(shè)計(jì)之坦克大戰(zhàn) 系統(tǒng)需求分析2 系統(tǒng)需求分析2.1
16、 系統(tǒng)運(yùn)行環(huán)境2.1.1 系統(tǒng)運(yùn)行的軟件環(huán)境(1)網(wǎng)絡(luò)服務(wù)器操作系統(tǒng):Windows XP或以上系統(tǒng);(2)開發(fā)工具:eclipse3.2或以上;(3)運(yùn)行環(huán)境:J2SDK 1.6以上;(4)編程語言:Java語言;2.1.2 系統(tǒng)運(yùn)行的硬件環(huán)境(1)CPU:Intel或者兼容微處理器,奔騰166MHz及其以上;(2)內(nèi)存:最低32MB,可以運(yùn)行圖形界面的Java Application;最低48MB,可以運(yùn)行Java Applet;內(nèi)存不足,將會導(dǎo)致系統(tǒng)(尤其是服務(wù)器)的性能大幅下降;(3)硬盤:242 MB到80 GB及其以上;(4)圖形顯示卡:無要求;(5)網(wǎng)卡:普通網(wǎng)卡,3Com Of
17、ficeConnect 10/100兆位網(wǎng)卡;2.2 相關(guān)理論2.2.1 關(guān)于Eclipse的介紹Eclipse是一個(gè)主要針對Java項(xiàng)目開發(fā)所設(shè)計(jì)的(綜合性集成開發(fā)環(huán)境-Integrated Development Emironment,IDE),最早是由Object Technologics International這家公司開發(fā),該公司于1996年被IBM并購后,將Eclipse改為Open Source software。它最大的特點(diǎn)是:采用了插件的結(jié)構(gòu),通過下載安裝不同的插件,就可以實(shí)現(xiàn)不同類型的程序開發(fā)。利用eclipse開發(fā)項(xiàng)目,是可以提高項(xiàng)目的開發(fā)效率,因?yàn)樗坏梢韵駛鹘y(tǒng)的一
18、些編輯器一樣編寫代碼,而且還有自動找錯(cuò)/糾錯(cuò)功能、Debug調(diào)試和代碼自動生成等一些重要的功能,這使項(xiàng)目開發(fā)的效率得到了提升。Eclipse可以作為其他開發(fā)工具的平臺。工作區(qū)被存儲在磁盤上,并且對其他人是可見的。Eclipse3.2的大多數(shù)新特性都是Eclipse用戶需求的直接結(jié)果。2.2.2 J2SE框架Java主要分三大類:第一是服務(wù)器端,這里就有了J2EE企業(yè)版;第二是桌面PC,這一類用的是J2SE標(biāo)準(zhǔn)版;第三就是掌上電腦、移動設(shè)備,用的都是J2ME。但是,大部分非企業(yè)級軟件還是在J2SE上開發(fā)的比較多。首先,這是因?yàn)楹芏嗟膽?yīng)用軟件都是在J2SE上開發(fā)的;其次,J2SE是和J2EE兼容的
19、,企業(yè)版是在標(biāo)準(zhǔn)版上的擴(kuò)充,在J2SE的版本上開發(fā)的軟件,拿到企業(yè)的平臺上是一樣可以運(yùn)行的;再次,一般開發(fā)還是在J2SE的環(huán)境上,只是說J2ME提供微型版的一個(gè)環(huán)境。在J2SE上虛擬出一個(gè)環(huán)境,開發(fā)出來的應(yīng)用軟件是可以拿到微型版上運(yùn)行的。跨平臺:J2SE是一個(gè)具有綜合性能的平臺,能使一個(gè)完整的、可縮放的高性能應(yīng)用配置在任何種類的平臺上。J2SE特點(diǎn):支持Web服務(wù): J2SE對SSL、LDAP等業(yè)界標(biāo)準(zhǔn)技術(shù)也給予支持,因此保證了在不同平臺、系統(tǒng)和環(huán)境間的互操作能力。J2SE支持XML技術(shù)和一整套安全服務(wù),因此為基于各類標(biāo)準(zhǔn)的可互操作應(yīng)用與服務(wù)的創(chuàng)建奠定了重要基礎(chǔ)。有了J2SE與Java Web
20、 Services Developer Pack的結(jié)合,開發(fā)商就能創(chuàng)建、測試和配置Web服務(wù)了。完整性:J2SE還是一個(gè)完整的開發(fā)環(huán)境。開發(fā)商可基于這一環(huán)境創(chuàng)建功能豐富的交互式應(yīng)用。這些應(yīng)用可以配置在任何平臺上。J2SE具有新的GUI控制功能、快速的Java 2DT圖形功能、支持國際化與本地化擴(kuò)展和新的配置選項(xiàng),并對Windows XP提供擴(kuò)展支持??傊琂2SE是多種不同風(fēng)格軟件的開發(fā)基礎(chǔ),包括客戶端Java小程序和應(yīng)用程序,以及獨(dú)立的服務(wù)器應(yīng)用程序等。J2SE版還是J2ME的基礎(chǔ),是J2EE執(zhí)行程序的推動力。2.3 系統(tǒng)功能需求2.3.1 主界面人性化功能(1)具有游戲歡迎界面(2)游戲幫
21、助文檔(3)實(shí)現(xiàn)游戲單機(jī)/網(wǎng)絡(luò)的便捷選擇(4)具有服務(wù)器設(shè)置選項(xiàng)2.3.2 人機(jī)對戰(zhàn)模式功能(1)能夠發(fā)射子彈打擊敵人(2)敵人能夠移動(3)能夠模擬爆炸(4)能夠產(chǎn)生障礙(5)能夠增長生命(6)能夠使用超級子彈2.3.3 網(wǎng)絡(luò)對戰(zhàn)模式功能(1)添加網(wǎng)絡(luò)功能(2)能夠自主分組并選擇角色(3)能夠?qū)崿F(xiàn)本機(jī)服務(wù)器設(shè)置2.3.4 聯(lián)機(jī)通信機(jī)制網(wǎng)絡(luò)編程,簡單地理解就是兩臺計(jì)算機(jī)相互通信。其基本模型就是C/S模型,也就是通信雙方中的一方必須提供一個(gè)固定的位置,而另一方只需要知道這個(gè)固定的位置,并且建立兩者之間的聯(lián)系,然后完成數(shù)據(jù)交換。這里提供固定位置的一方通常稱為服務(wù)器,而建立聯(lián)系的一方稱為客戶端。So
22、cket(中文意思為插座),基于客戶機(jī)/服務(wù)器的Soctet通信模式如圖2.1所示:創(chuàng)建Socket類的對象指定服務(wù)器端公認(rèn)的Socket地址和端口在Socket上監(jiān)聽客戶端的鏈接請求接收客戶端的請求信息解釋并處理請求信息向服務(wù)器發(fā)出請求向服務(wù)器端發(fā)送鏈接請求創(chuàng)建Socket類對象客戶端將處理結(jié)果返回給客戶端接收服務(wù)結(jié)果服務(wù)請求服務(wù)響應(yīng)服務(wù)器端圖2.1 基于客戶機(jī)/服務(wù)器的Soctet通信模式圖當(dāng)客戶程序需要與服務(wù)器程序通訊的時(shí)候,客戶程序在客戶機(jī)創(chuàng)建一個(gè)Socket對象,Socket類有幾個(gè)構(gòu)造函數(shù)。兩個(gè)常用的構(gòu)造函數(shù)是 Socket(InetAddress addr, int port)
23、和 Socket(String host, int port),兩個(gè)構(gòu)造函數(shù)都創(chuàng)建了一個(gè)基于Socket的連接服務(wù)器端流套接字的流套接字。兩個(gè)函數(shù)都通過參數(shù)port獲得服務(wù)器的端口號。假設(shè)已經(jīng)建立連接了,網(wǎng)絡(luò)API將在客戶端基于Socket的流套接字中捆綁客戶程序的IP地址和任意一個(gè)端口號,否則兩個(gè)函數(shù)都會拋出一個(gè)IOException對象。如果創(chuàng)建了一個(gè)Socket對象,那么它可能通過調(diào)用Socket的 getInputStream()方法從服務(wù)程序獲得輸入流讀傳送來的信息,也可能通過調(diào)用Socket的 getOutputStream()方法獲得輸出流來發(fā)送消息。在讀寫活動完成之后,客戶程序
24、調(diào)用close()方法關(guān)閉流和流套接字。2.3.5 Java圖形編程Java中的Graphics類是用于繪圖和顯示格式化文本的工具類。在Java程序中繪圖必須在一個(gè)窗口(容器)中進(jìn)行,繪圖窗體經(jīng)常被設(shè)計(jì)為一個(gè)組件容器。一般首先在一個(gè)面板中進(jìn)行繪制,然后再將這個(gè)面板添加到顯示窗口中去。Graphics類是在Java.awt包中申明,顯示格式化文本和繪圖時(shí)通過調(diào)用Graphics類的draw()方法實(shí)現(xiàn)的,例如drawString(String),drawLine()等。繪圖采用的坐標(biāo)系是原點(diǎn)在左上角,縱軸向下以像素為單位的坐標(biāo)系。2.4 本章小結(jié)在本章節(jié)中首先介紹了該系統(tǒng)的運(yùn)行環(huán)境,值的注意的是
25、軟件環(huán)境的配置,因?yàn)檎麄€(gè)系統(tǒng)都是在虛擬環(huán)境下運(yùn)行的,所以虛擬環(huán)境對于整個(gè)設(shè)計(jì)的調(diào)試和運(yùn)行至關(guān)重要;其次對開發(fā)工具Eclipse3.2的簡單介紹,利用eclipse開發(fā)項(xiàng)目,是可以提高項(xiàng)目的開發(fā)效率。還有是對一些技術(shù)理論,J2SE框架,Java語言,系統(tǒng)運(yùn)行所支持的操作系統(tǒng),聯(lián)機(jī)通信機(jī)制及Java圖形編程等理論做了簡單的介紹,為本系統(tǒng)后期實(shí)現(xiàn)圖形化界面和網(wǎng)絡(luò)通信做了理論支持。JAVA課程設(shè)計(jì)之坦克大戰(zhàn) 系統(tǒng)概要設(shè)計(jì)3 系統(tǒng)概要設(shè)計(jì)3.1系統(tǒng)功能設(shè)計(jì)3.1.1 坦克大戰(zhàn)總體功能設(shè)計(jì)初 始 化游戲模式對 戰(zhàn)對 戰(zhàn)隨機(jī)產(chǎn)生敵方坦克玩家坦克判斷勝負(fù)玩家一玩家二玩家一玩家二敵方坦克我方坦克判斷勝負(fù)結(jié) 束選
26、擇角色,填寫信息坦克大戰(zhàn)游戲主要實(shí)現(xiàn)玩家參加游戲的整個(gè)流程,用戶登陸游戲客戶端選擇游戲模式,可分為單機(jī)模式和網(wǎng)絡(luò)對戰(zhàn)模式,選擇單機(jī)模式可以直接進(jìn)入游戲狀態(tài);選擇網(wǎng)絡(luò)對戰(zhàn)模式,在啟動服務(wù)器后,玩家需要選擇自己的角色,用戶名和ID等玩家相關(guān)資料,成功后使用其賬號進(jìn)行登錄游戲(只有成功登錄的玩家才能參與網(wǎng)絡(luò)對戰(zhàn)游戲功能);登陸玩家就可以通過控制鍵盤操作,加入對戰(zhàn)游戲。整個(gè)網(wǎng)絡(luò)版坦克大戰(zhàn)游戲流程圖如圖3.1所示:圖3.1 網(wǎng)絡(luò)坦克大戰(zhàn)游戲流程3.1.2 TankClient類基本功能分析TankClient類是整個(gè)系統(tǒng)的核心部分,它承擔(dān)整個(gè)系統(tǒng)的所有可實(shí)現(xiàn)功能的調(diào)度工作。 是整個(gè)游戲運(yùn)行的場所。Tan
27、kClient類設(shè)計(jì)流程圖如圖3.2所示:開始初始化坦克對戰(zhàn)雙方玩家坦克由鍵盤控制移動發(fā)射炮彈碰撞檢測(坦克和子彈)不處理同角色坦克產(chǎn)生爆炸不同角 色坦克判斷勝負(fù)結(jié)束圖3.2 TankClient類設(shè)計(jì)流程TankClient類是主類,通過調(diào)用其他類中封裝的方法來使整個(gè)系統(tǒng)運(yùn)行起來,下面顯示TankClient與各個(gè)類之間的關(guān)系如圖3.3所示:TankClient類(主類)Tank類(我方)Tank類(敵方)New參數(shù)1New參數(shù)2調(diào)用Missile類打中調(diào)用Explode類產(chǎn)程爆炸判斷勝負(fù)鍵盤控制移動鍵盤控制移動打擊圖3.3 游戲系統(tǒng)類關(guān)聯(lián)圖3.1.3 Tank類基本功能分析Tank(坦克)
28、類中,封裝了一些變量屬性,包括坦克自己的大?。╓IDTH,HRIGHT),運(yùn)動速度(SPRRD_X:在x軸方向的速度;SPEED_Y:在Y軸方向的速度)、生命值控制(life)、坦克編號(id)、坦克名(name)、方向控制(dir)、生死控制(live)、好壞控制(good)的變量等。Tank類中沒有main函數(shù),不是主類,它當(dāng)中只封裝一些變量屬性和靜態(tài)方法,被TankClient類調(diào)用來實(shí)現(xiàn)坦克的一系列動作。Tank類中的主要方法羅列如下:(1)getRect()方法public Rectangle getRect() return new Rectangle(x, y, this.WID
29、TH, this.HEIGHT);Rectangle類是碰撞檢測的輔助類,通過得到子彈的x,y坐標(biāo)和寬高度,檢測兩個(gè)矩形是否碰撞(相交);(2)draw()方法:負(fù)責(zé)將所有的活動在屏幕上畫出來;(3)move()方法:主要負(fù)責(zé)控制坦克的移動,包括8個(gè)方向(左,左上,上,右上,右,右下,下,左下)的控制以及給坦克一個(gè)移動的速度;(4)keyPressed()方法:設(shè)定使用鍵盤的“”“”“”“”鍵控制坦克移動;(5)keyReleased()方法:處理按鍵抬起事件,抬起“CTRL”鍵時(shí),發(fā)射炮彈并加入新炮彈,能夠逐一發(fā)射每一發(fā)炮彈、抬起“A”鍵可以發(fā)射超級炮彈等功能;(6)locationDire
30、ction()方法:定義了炮筒方向,可以向八個(gè)方向發(fā)射炮彈;(7)fire()方法:處理發(fā)送子彈的方法;(8)bumpWithWall()方法:主要負(fù)責(zé)處理坦克撞墻事件;(9)bumpWithTank()方法:主要到負(fù)責(zé)處理坦克和坦克相撞事件;3.1.4 Missile類基本功能分析Misslile(子彈)類和Tank類一樣,只封裝一些變量屬性和靜態(tài)方法,主要變量包括:子彈自己的大小(WIDTH,HRIGHT),運(yùn)動速度(SPRRD_X:在x軸方向的速度;SPEED_Y:在Y軸方向的速度)、子彈標(biāo)示(ID)、所屬坦克的id號(TankId用于網(wǎng)絡(luò)版)等。Misslie類持有一個(gè)TankClie
31、nt類(大管家)的引用tc,TankClient類要執(zhí)行發(fā)射炮彈操作時(shí)調(diào)用Missile類中的方法。Misslie類中的主要方法如下:draw()方法:負(fù)責(zé)畫出子彈的所有活動;move()方法:先判斷方向再移動,并給它一定的移動速度;getRect()方法:負(fù)責(zé)取得子彈的外切方形,為碰撞檢測做準(zhǔn)備;hitTan()方法:檢測子彈是否撞到坦克,若撞到返回true,否則返回false;hitTanks()方法:檢測是否撞到一系列坦克中的一個(gè);hitWall()方法:檢測子彈和墻是否相撞。3.1.5 Explode類基本功能分析Explode(爆炸)類也是一個(gè)只封裝自己的變量和方法的外部包裝類,沒有
32、main方法,供TankClient主類需要時(shí)調(diào)用它的draw()方法,當(dāng)子彈擊中坦克時(shí)需要產(chǎn)生爆炸。使用11張圖片重疊現(xiàn)實(shí)爆炸效果如3.4圖所示:圖3.4 爆炸圖3.1.6 服務(wù)器類基本功能分析TankServer類TankClient 1類類TankClient 2類類New參數(shù)1New參數(shù)2調(diào)用Missile類調(diào)用Explode類產(chǎn)程爆炸判斷勝負(fù)Tank類(我方)Tank類(敵方)打中打擊TankServer(服務(wù)器)類主要負(fù)責(zé)在網(wǎng)絡(luò)對戰(zhàn)游戲時(shí)維護(hù)各個(gè)在線玩家的基本信息,并動態(tài)的維護(hù)玩家列表。聯(lián)機(jī)模式下類關(guān)系圖如圖3.5所示:3.5 聯(lián)機(jī)模式類關(guān)聯(lián)圖3.1.7 信息傳送類基本功能分析信息
33、傳送類就是用來封裝客戶端和服務(wù)器端的交互信息。將網(wǎng)絡(luò)中傳遞的眾多信息封裝成可序列化的類,將會使程序有很好的可擴(kuò)展性。3.2 本章小結(jié)本章首先對整個(gè)游戲設(shè)計(jì)進(jìn)行了可行性分析,其次對游戲要達(dá)到怎么樣的需求,要實(shí)現(xiàn)哪些功能做以及實(shí)現(xiàn)這些功能設(shè)計(jì)到的類,最后再詳細(xì)的介紹了系統(tǒng)要實(shí)現(xiàn)這些功能所涉及到的各個(gè)類之間的關(guān)系JAVA課程設(shè)計(jì)之坦克大戰(zhàn) 系統(tǒng)詳細(xì)設(shè)計(jì)4 系統(tǒng)詳細(xì)設(shè)計(jì)4.1 游戲主窗體實(shí)現(xiàn)TankClient類負(fù)責(zé)畫出游戲主窗體,它是整個(gè)游戲運(yùn)行和所有活動的場所。登陸主窗口后,主界面上包括單機(jī)個(gè)人、網(wǎng)絡(luò)對戰(zhàn)、小小幫助、啟動服務(wù)器選項(xiàng) ,根據(jù)用戶意愿選擇游戲類型,“幫助”下拉菜單條中有游戲說明和游戲操
34、作,方便用戶了解游戲規(guī)則。除此之外,本設(shè)計(jì)優(yōu)點(diǎn)是TankClient類還封裝了一個(gè)update()方法,使用雙緩沖消除閃爍現(xiàn)象。因?yàn)樗⑿轮禺嬵l率太快,paint()方法還沒有完成,會造成逐條顯示,影響系統(tǒng)的運(yùn)行,所以解決辦法是創(chuàng)建一個(gè)虛擬屏幕,在屏幕的后面,在要畫的將所有的東西畫在虛擬屏幕上,也就是內(nèi)存上,畫完之后一次性將虛擬屏幕上的內(nèi)容貼到屏幕上,這樣就消除了閃爍現(xiàn)象,用戶的眼睛便感覺不到閃爍了。 TankClient類是整個(gè)系統(tǒng)的“大管家”,當(dāng)要執(zhí)行某動作時(shí),“大管家”只需要調(diào)用各個(gè)類中封裝好的方法,讓被調(diào)用的類自己去執(zhí)行它自己的方法,這更體現(xiàn)了面向?qū)ο蟮乃枷搿S螒蛑鞔绑w界面如圖4.1所示
35、:圖4.1 游戲主窗口預(yù)覽效果圖游戲幫助文檔設(shè)計(jì):圖4.2 游戲幫助文檔4.2 單機(jī)游戲的實(shí)現(xiàn)游戲運(yùn)行主界面,在下拉菜單中選擇單機(jī)游戲進(jìn)入單人模式,通過鍵盤控制坦克運(yùn)動,相互對戰(zhàn),當(dāng)被打中時(shí)產(chǎn)生一個(gè)爆炸,屏幕左上方顯示游戲信息:子彈數(shù)目(出界就死亡)、爆炸數(shù)目、敵方坦克數(shù)目、玩家坦克生命值。其效果圖如圖4.2所示:玩家坦克,上方紅色小方框?yàn)樯担?dāng)被擊中一次時(shí)生命值減20墻血塊:用于添加生命值圖4.3 單機(jī)游戲模式主界面圖實(shí)現(xiàn)虛擬屏幕消除閃爍的關(guān)鍵代碼如下:public void update(Graphics g) /利用雙緩沖消除閃爍的效果if(offScreenImage = null
36、) offScreenImage = this.createImage(GAME_WIDTH, GAME_HEIGHT);Graphics gOffScreen = offScreenImage.getGraphics();Color c = gOffScreen.getColor();gOffScreen.setColor(Color.BLACK);gOffScreen.fillRect(0, 0, GAME_WIDTH, GAME_HEIGHT);gOffScreen.setColor(c);paint(gOffScreen);g.drawImage(offScreenImage,0,0,
37、null);坦克圖片技術(shù):private static Toolkit tk = Toolkit.getDefaultToolkit();private static Image tankImages = null;private static Map<String, Image> imgs = new HashMap<String, Image>();/定義HashMap,又來盛裝坦克的游戲用圖,8個(gè)方向static tankImages = new Image tk.getImage(Tank.class.getClassLoader().getResource(&
38、quot;images/tankL.gif"),/指定坦克游戲用圖的文件目錄tk.getImage(Tank.class.getClassLoader().getResource("images/tankLU.gif"),/本項(xiàng)目中坦克圖片存放于項(xiàng)目文件之下的images包中tk.getImage(Tank.class.getClassLoader().getResource("images/tankU.gif"),tk.getImage(Tank.class.getClassLoader().getResource("images/
39、tankRU.gif"),tk.getImage(Tank.class.getClassLoader().getResource("images/tankR.gif"),tk.getImage(Tank.class.getClassLoader().getResource("images/tankRD.gif"),tk.getImage(Tank.class.getClassLoader().getResource("images/tankD.gif"),tk.getImage(Tank.class.getClassLoad
40、er().getResource("images/tankLD.gif");imgs.put("L", tankImages0);imgs.put("LU", tankImages1);imgs.put("U", tankImages2);imgs.put("RU", tankImages3);imgs.put("R", tankImages4);imgs.put("RD", tankImages5);imgs.put("D", tan
41、kImages6);imgs.put("LD", tankImages7);玩家可以使用超級炮彈,可同時(shí)向八個(gè)方向發(fā)射炮彈,效果如圖4.3所示:超級子彈,A控制,8個(gè)方向圖4.4 發(fā)射超級炮彈坦克圖片調(diào)用:switch(ptDir) /游戲進(jìn)行時(shí),根據(jù)方向調(diào)用相應(yīng)的坦克圖片case L:g.drawImage(imgs.get("L"), x, y, null);break;case LU:g.drawImage(imgs.get("LU"), x, y, null);break;case U:g.drawImage(imgs.get
42、("U"), x, y, null);break;case RU:g.drawImage(imgs.get("RU"), x, y, null);break;case R:g.drawImage(imgs.get("R"), x, y, null);break;case RD:g.drawImage(imgs.get("RD"), x, y, null);break;case D:g.drawImage(imgs.get("D"), x, y, null);break;case LD:g.dra
43、wImage(imgs.get("LD"), x, y, null);break;move();4.3 聯(lián)機(jī)功能實(shí)現(xiàn)在本系統(tǒng)的實(shí)現(xiàn)過程中,在支持網(wǎng)絡(luò)對戰(zhàn)的服務(wù)器類的定義中需要使用ServerSocket類來響應(yīng)多個(gè)客戶端連接請求,server服務(wù)器上需要兩大協(xié)議,一個(gè)是TCP,用來接收客戶端;另一個(gè)是UDP,用來轉(zhuǎn)發(fā)游戲的數(shù)據(jù)。Server類系統(tǒng)模型圖如圖4.5所示:serverTCPListenerUDPListener接收客戶端連接轉(zhuǎn)發(fā)游戲數(shù)據(jù)圖4.5 Server類系統(tǒng)簡單模型圖網(wǎng)絡(luò)游戲模式下,游戲主要在客戶端運(yùn)行,啟動客戶端時(shí)玩家首先要填寫信息之后才能加入到游戲中去
44、,先啟動服務(wù)器,紅色小方塊表示確定服務(wù)器已連接。如圖4.6所示:圖4.6 服務(wù)器主機(jī)想啟動服務(wù)圖4.7 服務(wù)器啟動成功進(jìn)入網(wǎng)絡(luò)模式,輸入信息:IP、Port,若是客戶端玩家,需要填入主機(jī)IP,和Port;主機(jī)服務(wù)器只需填寫UDP Port。游戲主界面圖如圖4.7所示:圖4.8 網(wǎng)絡(luò)版游戲玩家信息欄圖4.9 多個(gè)玩家連入填寫好玩家信息,登陸后游戲主界面,進(jìn)入游戲后,通過玩家坦克上方的ID號(單雙數(shù))和顏色(藍(lán)紅)來區(qū)分?jǐn)秤选S螒蚪缑孀笊辖秋@示游戲的基本信息,戰(zhàn)坦克數(shù)等,如圖4.8所示:圖4.10 登陸網(wǎng)絡(luò)模式主界面圖中模擬多個(gè)客戶端進(jìn)行游戲時(shí)各客戶端的實(shí)時(shí)運(yùn)行情況,如圖4.9所示:圖4.11 網(wǎng)
45、絡(luò)版游戲?qū)?zhàn)實(shí)時(shí)顯示圖由于由一臺電腦模擬多個(gè)客戶端,所以只能操作當(dāng)前窗口新建的坦克!網(wǎng)絡(luò)版運(yùn)行時(shí),若是實(shí)驗(yàn)室電腦,會出現(xiàn)下面情況:由于部分電腦的端口已經(jīng)被使用,所用可用地址會很少,造成程序不能編譯運(yùn)行,如圖:圖4.12 端口地址資源過少4.4 網(wǎng)絡(luò)模式主要代碼網(wǎng)絡(luò)模式設(shè)計(jì)主要代碼如下:TankServer(服務(wù)器)類代碼片段如下:import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import .DatagramPacket;import .DatagramSocke
46、t;import .InetSocketAddress;import .ServerSocket;import .Socket;import .SocketException;import java.util.ArrayList;import java.util.List;/* * 坦克游戲的服務(wù)器 * author mashibing * */public class TankServer private static int ID = 100;/* * TCP的監(jiān)聽端口 */public static final int TCP_PORT = 8888; /TCP的監(jiān)聽端口/* * UDP
47、的監(jiān)聽端口 */public static final int UDP_PORT = 6666; /UDP的監(jiān)聽端口List<Client> clients = new ArrayList<Client>();/* * 啟動服務(wù)器 * */public void start() new Thread(new UDPThread().start();ServerSocket ss = null;try ss = new ServerSocket(TCP_PORT); catch (IOException e) e.printStackTrace();while (true
48、) /鏈接TCPSocket s = null;try s = ss.accept();DataInputStream dis= new DataInputStream(s.getInputStream();String IP = s.getInetAddress().getHostAddress();int udpPort = dis.readInt();Client c = new Client(IP, udpPort);clients.add(c);DataOutputStream dos=new DataOutputStream(s.getOutputStream();dos.writ
49、eInt(ID+);/ s.close();System.out.println("A Client Connect! Addr- "+ s.getInetAddress() + ":" + s.getPort()+ "-UDP Port:" + udpPort); catch (IOException e) e.printStackTrace(); finally if (s != null) try s.close();s = null; catch (IOException e) e.printStackTrace();publ
50、ic static void main(String args) new TankServer().start();private class Client String IP;int udpPort;public Client(String IP, int udpPort) this.IP = IP;this.udpPort = udpPort;private class UDPThread implements Runnable /建立一個(gè)UDP的接受和轉(zhuǎn)發(fā)線程byte buf = new byte1024;public void run() DatagramSocket ds = nul
51、l;try ds = new DatagramSocket(UDP_PORT); catch (SocketException e) e.printStackTrace();System.out.println("UDP thread started at port :" + UDP_PORT);while (ds != null) DatagramPacket dp = new DatagramPacket(buf, buf.length);try ds.receive(dp); /接受數(shù)據(jù)包for (int i = 0; i < clients.size(); i
52、+) /分別轉(zhuǎn)發(fā)給其他客戶端Client c = clients.get(i);dp.setSocketAddress(new InetSocketAddress(c.IP,c.udpPort); /得到將要轉(zhuǎn)發(fā)的客戶端的IP地址和端口ds.send(dp);System.out.println("a packet received!"); catch (IOException e) e.printStackTrace();4.5 本章小結(jié)本章主要介紹了該系統(tǒng)的實(shí)現(xiàn)和運(yùn)行,分別敘述了在單機(jī)模式和網(wǎng)絡(luò)對戰(zhàn)模式下游戲的運(yùn)行和調(diào)試過程。在單機(jī)模式下,玩家的游戲發(fā)射火力要比電腦隨機(jī)產(chǎn)生的坦克能力稍強(qiáng)一些,當(dāng)分?jǐn)?shù)值達(dá)到一定時(shí),玩家可以發(fā)射超級炮彈。網(wǎng)絡(luò)模式下,注意一定要先啟動服務(wù)器,只有啟動服務(wù)器后,各個(gè)玩家才能加入游戲。到此為止,本設(shè)計(jì)基本完成預(yù)期效果。JAVA課程設(shè)計(jì)之坦克大戰(zhàn) 結(jié) 論5 結(jié)論5.1
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025的裝修施工合同范本
- 《2025設(shè)備租賃合同的訂立程序內(nèi)容》
- 2025存量房買賣合同標(biāo)準(zhǔn)版
- 2025正式員工勞動合同范本
- 2025深圳個(gè)人租房合同范本簡化版
- 2025合作開發(fā)合同范本
- 2025年股權(quán)投資合作合同協(xié)議書樣本
- 2025年上海市房屋買賣居間合同樣本
- 2025雇傭合同范本模板
- 2025年購買合同范本
- 基于多源異構(gòu)數(shù)據(jù)的地質(zhì)知識圖譜構(gòu)建與應(yīng)用
- 2024年戰(zhàn)略規(guī)劃咨詢服務(wù)合同
- 2024年領(lǐng)導(dǎo)干部任前廉政知識考試測試題庫及答案
- 《公共資源交易主體信用評價(jià)實(shí)施指南》編制說明
- 2024年度山東省國家電網(wǎng)招聘之管理類測試卷(含答案)
- 煤礦防突專項(xiàng)設(shè)計(jì)(樣本)
- 紹興銀行社會招聘真題
- 《儲水式電熱水器的安全使用年限》
- DB1303T375-2024起重機(jī)械使用管理制度編制指南
- 路燈安裝工程項(xiàng)目實(shí)施重點(diǎn)、難點(diǎn)和解決方案
- 山西省云時(shí)代技術(shù)有限公司筆試題庫
評論
0/150
提交評論