【java毕业设计】基于java+GUL的超级玛丽游戏GUL设计与实现(毕业论文+程序源码)——超级玛丽游戏
基于java+GUL的超級瑪麗游戲GUL設計與實現(畢業論文+程序源碼)
大家好,今天給大家介紹基于java+GUL的超級瑪麗游戲GUL設計與實現,文章末尾附有本畢業設計的論文和源碼下載地址哦。
文章目錄:
- 基于java+GUL的超級瑪麗游戲GUL設計與實現(畢業論文+程序源碼)
- 1、項目簡介
- 2、資源詳情
- 3、關鍵詞:
- 4、畢設簡介:
- 5、源碼下載:
1、項目簡介
“超級瑪麗”游戲是一個經典的游戲,它因操作簡單、娛樂性強而廣受歡迎。本游戲中通過總結和分析JAVA游戲的開發流程和代碼功能的設計,采用面向對象的設計模式,對游戲中的所有物體賦予對象的概念和屬性。開發了一款超級瑪麗游戲,該游戲主要分為窗體類、場景類、馬里奧類、敵人類、障礙物類等幾個類。在主程序運行的線程中,用戶控制的超級瑪麗隨方向鍵的操作而移動,并且可以實現馬里奧游戲中的一些基本功能,例如踩死敵人或者頂掉磚塊。本游戲采用雙緩存技術,解決了游戲過程中的閃屏問題。通過本游戲的開發,達到學習Java技術和熟悉軟件開發流程的目的。
本文在介紹Java相關技術和國內外發展現狀的基礎上,對“超級瑪麗”游戲的整個生命周期的各個開發階段進行了詳細地介紹。為了保證程序代碼的正確性和功能實現的可靠性,本文還介紹了游戲軟件的程序調試過程和功能測試結果。
超級瑪麗小游戲的JAVA程序,進入游戲后首先按空格鍵開始,利用方向鍵來控制的馬里奧的移動,同時檢測馬里奧與場景中的障礙物和敵人的碰撞,并判斷馬里奧的可移動性和馬里奧的生命值。當馬里奧通過最后一個場景后游戲結束。。
本系統擁有的角色如下:
(1)馬里奧
(2)障礙物
(3)敵人
2、資源詳情
項目難度:中等難度
適用場景:相關題目的畢業設計
配套論文字數:21903個字
包含內容:整套源碼+完整畢業論文+答辯PPT+輔導視頻+運行截圖
3、關鍵詞:
面向對象;Java;碰撞檢測;超級瑪麗4、畢設簡介:
提示:以下為畢業設計的簡略介紹,項目源碼及完整畢業論文下載地址見文末。
緒論
1.1背景以及現狀
Java并不是以游戲編程為目的而被開發的,事實上,游戲編程可能是Java創造者心中的最后一個目標。在過去,妨礙Java發展的是它的運行環境;瀏覽器和Java類庫一起從本質上決定了Java應該用來寫哪種類型的應用程序,而高速的游戲和圖象則不在其中。這給Java帶來了不好的影響,因為人們注意的不是語言,而是它的運行環境。現在,瀏覽器已經不能控制一切了,Java作為游戲編程語言的另一個機會到來了。Java在過去有一點超前于它的時代,當時市場的動力落后于Java,但是現在Java可以而且已經取得成功。
省略
1.2 Java語言的特點
Java引進虛擬機原理,并運行于虛擬機,實現不同平臺之間的Java接口。使用Java編寫的程序能在世界范圍內共享。Java的數據類型與機器無關。
Java的編程類似C++,但舍棄了C++的指針對存儲器地址的直接操作,程序運行時,內存由操作系統分配,這樣可以避免病毒通過指針入侵系統。它提供了安全管理器,防止程序的非法訪問。
Java吸收了C++面向對象的概念,將數據封裝于類中,實現了程序的簡潔性和便于維護性,使程序代碼可以只需一次編譯就可反復利用。
Java建立在TCP/IP網絡平臺上,提供了用HTTP和FTP協議傳送和接收信息的庫函數,使用其相關技術可以十分方便的構建分布式應用系統。
Java致力與檢查程序在編譯和運行時的錯誤,并自動回收內存,減少了內存出錯的可能性。Java取消了C語言的結構、指針、#define語句、多重繼承、goto語句、操作符、重載等不易被掌握的特性,提供垃圾收集器自動回收不用的內存空間。
1.3 系統運行環境及開發軟件:
開發環境:Windows 7;
(2)開發工具:eclipse;
(3)編程語言:Java語言;
1.4 可行性的分析
可行性研究的目的,就是用最小的代價在盡可能短的時間內確定問題是否能夠解決。要達到這個目的,必須分析幾種主要的可能解法的利弊,從而判斷原定的系統規模和目標是否現實,系統完成后所能帶來的效益是否大到值得投資開發這個系統的程度。因此,可行性研究實質上是要進行一次大大壓縮簡化了的系統分析和設計的過程,也就是在較高層次上以較抽象的方式進行的系統分析和設計的過程。
1.4.1 技術可行性
本游戲是在Windows 7環境下開發的,一般的機器配置就可以了,對機器本身沒有太高的要求,一般當前學校或個人電腦完全可滿足要求,環境只需裝上jdk 1.4或以上版本就行了,Java是現在全球最時髦的開發工具之一,它擁有一套龐大且完善的類庫,內置了其他語言需要靠庫甚至是操作系統才能支持的功能,擁有一個虛擬機。NeatBeans IDE 5.5是SUN公司開發的Java可視化集成開發工具,是目前最優秀的Java集成開發工具之一。
1.4.2 經濟可行性
由于本系統使用到的工具一般機器都具備,使用環境也很簡單,開發成本低,本課題研究的內容是涉及網絡的游戲對戰。
省略
1.4.3 操作可行性
由于在整個系統的開發過程中從操作簡便、界面美觀、靈活實用的用戶要求為出發點,界面設計時充分考慮玩家的感受,界面比較直觀,交互性很好,所以操作起來簡單明了。
2、需求分析
所謂系統分析,就是指在整個系統開發工程中,解決“做什么”的問題,把要解決哪些問題,滿足用戶哪些具體的信息需求調查分析清楚,從邏輯上或是說從信息處理的功能需求上提出系統的方案,即邏輯模型,為下一階段進行物理方案設計,解決怎么辦提供依據。
2.1 用戶需求分析
超級瑪麗這款游戲是很多人童年經典的回憶,是一種簡單的大眾的游戲,自從計算機實現以來,深受廣大電腦玩家的喜愛。并且隨著社會的快速發展,人們的生活節奏越來越快,人們對于童年的美好已經不愿意僅僅停留在回憶階段。所以利用java語言開發一款超級瑪麗游戲正是人們迫切需要的。
2.2功能需求分析
本系統主要是完成超級瑪麗游戲的基本操作。本系統需要滿足以下幾點要求:
(1) 在開始界面按空格鍵進入游戲。
(2) 利用方向鍵來控制馬里奧的運動。
(3) 碰撞檢測:
A.馬里奧在運動的過程中如果碰到障礙物則停止運動,在移動到懸崖上方是會掉下去,并失去一條生命。
B.對于有些敵人,如果馬里奧跳到敵人頭頂上,則敵人消失,否則馬里奧失去一條生命。
(4)馬里奧頂到金幣會增加分數,當馬里奧失去3條生命時游戲結束。
2.3界面設計需求分析
方圖片,對于較大的障礙物分割成多個60*60的小正方形。
3、系統概要設計
3.1系統模塊設計
首先在對于系統的需求進行了分析,因為設計者的最初是要做一款游戲,所以窗體類必不可少。接下來繼續分析,游戲中還需要背景類、障礙物類、敵人類、馬里奧類這及格類。其次為了游戲的流暢以及游戲中圖片調用的方便,專門為此再設計一個初始化類。
3.1.1窗體類
該類主要用于存放游戲的場景以及其他各類,并且實現KeyListener接口,用于從鍵盤的按鍵中讀取信息。該類中的一些屬性主要包括了用于存放所有場景的list集合 allBG,馬里奧類 mario,當前的場景 nowBG以及其他一些游戲中需要的標記等。而且在該類中,運用雙緩存的技術使得游戲的流暢度更高,解決了游戲中出現的閃屏問題。
Myframe
- allBG:List
- mario:Mario
- nowBG:BackGround
…
- main():void
- paint():void
- keyPressed():void
- kerReleased():void
…
3.1.2初始化類
用于存放游戲所需要的所有靜態文件,在游戲開始的時候將所有文件導入,提高游戲的運行速度。并且在該類中將所有需要用到的圖片進行分類,分為障礙物類,馬里奧類,敵人類以及背景圖片。當游戲運行時可以直接調用這些集合中的圖片進行遍歷,在調用的時候更加方便,而且可以使馬里奧或者敵人在移動的時候產生動態效果。
StaticValue
- allMarioImage:List
- startImage:BufferedImage
… - init():void
…
3.1.3背景類
該類表示馬里奧及障礙物和敵人所處的場景,并且將障礙物和敵人繪制到場景中。在該類中包括用于存放敵人和障礙物的list集合,以及當敵人或者障礙物被消滅后用于存放已經消失的敵人和障礙物的集合,這樣做是為了在馬里奧死亡時重置場景所用的。其次在該類中還使用了控制敵人移動的方法,是為了在程序之初控制敵人靜止,然后在玩家點擊空格以后在使得敵人開始移動。
BackGround
- bgImage:BufferedImage
- isOver:boolean
- isDown:boolean
- allEnemy:List
- removeEnemy:List
…
- enemyStartMove():void
- reset():void
…
3.1.4馬里奧類
用來控制馬里奧的行動,并且在該類中加入碰撞檢測,判斷馬里奧是否與障礙物或者敵人發生碰撞。該類中的屬性主要定義了馬里奧所在的場景,馬里奧的移動和跳躍的速度,以及馬里奧在移動過程中需要顯示的圖片。另外該類中還定義了玩家的生命值和所獲得的分數。并且在run()方法中還定義了當馬里奧到達最后一關的旗子時,玩家將失去對馬里奧的控制,剩下的由程序控制走到城堡,完整全部游戲。
Mario
- x:int
- y:int
- xmove:int
- ymove;int
- life:int
- isDead:boolean
…
- leftMove():void
- leftStop():void
- jump():void
- down():void
- dead():void
…
3.1.5障礙物類
繪制場景中所需要的障礙物,例如地面、磚塊、水管等等。該類中的屬性包括了障礙物的坐標,障礙物所需要顯示的圖片等。并且在該類中也定義了障礙物類的重置方法,當馬里奧死亡時,場景類會調用該方法。
Obstruction
- x:int
- y:int
- type:int
- starttype:int
- showImage:BufferedImage
…
- reset():void
- setImage():void
…
3.1.6敵人類
該類中主要設置了兩種敵人,一種是蘑菇怪,可以被馬里奧踩死,另一種是食人花,不能被踩死。該類中的屬性包括了敵人的坐標,敵人的初始坐標,需要顯示的圖片,以及敵人的移動方向和移動范圍等。敵人的初始坐標主要是為了當敵人執行重置方法后將敵人的位置還原。
Enemy
- x:int
- y:int
- startx:int
- starty:int
- showImage:BufferedImage
- upMax:int
- downMax:int
…
- reset():void
- dead():void
…
3.2系統流程設計:
4、系統詳細設計
4.1 設計目標
本軟件是針對超級瑪麗小游戲的JAVA程序,進入游戲后首先按空格鍵開始,利用方向鍵來控制的馬里奧的移動,同時檢測馬里奧與場景中的障礙物和敵人的碰撞,并判斷馬里奧的可移動性和馬里奧的生命值。當馬里奧通過最后一個場景后游戲結束。
4.2 系統模塊設計
本系統共包括6各類:
4.2.1窗體類
該類主要用于存放游戲的場景以及其他各類,并且實現KeyListener接口,用于從鍵盤的按鍵中讀取信息。該類中的一些屬性主要包括了用于存放所有場景的list集合 allBG,馬里奧類 mario,當前的場景 nowBG以及其他一些游戲中需要的標記等。而且在該類中,運用雙緩存的技術使得游戲的流暢度更高,解決了游戲中出現的閃屏問題。
4.2.2初始化類
用于存放游戲所需要的所有靜態文件,在游戲開始的時候將所有文件導入,提高游戲的運行速度。并且在該類中將所有需要用到的圖片進行分類,分為障礙物類,馬里奧類,敵人類以及背景圖片。當游戲運行時可以直接調用這些集合中的圖片進行遍歷,在調用的時候更加方便,而且可以使馬里奧或者敵人在移動的時候產生動態效果。
4.2.3背景類
該類表示馬里奧及障礙物和敵人所處的場景,并且將障礙物和敵人繪制到場景中。在該類中包括用于存放敵人和障礙物的list集合,以及當敵人或者障礙物被消滅后用于存放已經消失的敵人和障礙物的集合,這樣做是為了在馬里奧死亡時重置場景所用的。其次在該類中還使用了控制敵人移動的方法,是為了在程序之初控制敵人靜止,然后在玩家點擊空格以后在使得敵人開始移動。并且在第六個關卡處設置了一個隱形通關要點,只有當馬里奧頂到這個隱形磚塊時才會出現,馬里奧就可以借助這個磚塊通過關卡。
4.2.4馬里奧類
用來控制馬里奧的行動,并且在該類中加入碰撞檢測,判斷馬里奧是否與障礙物或者敵人發生碰撞。該類中的屬性主要定義了馬里奧所在的場景,馬里奧的移動和跳躍的速度,以及馬里奧在移動過程中需要顯示的圖片。另外該類中還定義了玩家的生命值和所獲得的分數。并且在run()方法中還定義了當馬里奧到達最后一關的旗子時,玩家將失去對馬里奧的控制,剩下的由程序控制走到城堡,完整全部游戲。
public class Mario implements Runnable{//坐標private int x;private int y;//定義瑪麗奧所在場景private BackGround bg;//加入線程private Thread t = null;為了玩家在游戲過程中的良好體驗,那么對于馬里奧的移動速度和跳躍速度就必須要定義好。所以該類里面還應當定義馬里奧的移動速度和跳躍速度,其本質就是馬里奧在移動過程中坐標加減的值。當然初始值為零,必須等到馬里奧構造的時候,再將這些屬性賦予相對應的值。在本類中還要定義游戲的分數以及馬里奧的生命數,這些都是必不可少的。//移動速度private int xmove = 0;//跳躍速度private int ymove = 0;//狀態private String status;//顯示圖片private BufferedImage showImage;//生命和分數private int score;private int life;在馬里奧這個類中,還要定義馬里奧的移動和跳躍方法,以便玩家在按下方向鍵后調用這些方法,來達到控制馬里奧的移動。下面是馬里奧向左移動的方法,其他方法同理。public void leftMove(){//移動速度xmove = -5;//改變狀態//如果當前已經是跳躍,應該保持原有狀態,不能再改變if(this.status.indexOf("jumping") != -1){this.status = "left-jumping";}else{this.status = "left-moving";}}......在定義馬里奧的跳躍方法的時候,不單單定義一個方法就行,而且還要判斷馬里奧的狀態。如果馬里奧是在地面或者是在障礙物的上方,那么馬里奧可以進行跳躍,如果馬里奧處于空中,那么馬里奧就不可以繼續跳躍。public void jump(){ //判斷馬里奧是否可以進行跳躍if(this.status.indexOf("jumping") == -1){if(this.status.indexOf("left") != -1){this.status = "left-jumping";}else{this.status = "right-jumping";}ymove = -5;upTime = 36;}}接下來就要寫馬里奧中的run()方法了,這個方法中的內容相對來說比較麻煩,因為要在這個方法中對馬里奧和障礙物或者敵人之間進行邏輯判斷,即所謂的碰撞檢測。首先在這個類中對馬里奧是否處于最后一個場景進行判斷,如果馬里奧處于最后一個場景,并且坐標大于520,那么說明馬里奧已經撞到的旗桿,這個時候馬里奧將不會由玩家控制。并且同時調用旗子的移動方法,使旗子進行下落,當旗子下落完畢后給馬里奧一個標記,馬里奧開始移動到城堡。當馬里奧的坐標大于780,即馬里奧到達城堡的門口的時候,這個時候游戲結束。public void run() {while(true){//判斷是否與障礙物碰撞//定義標記if(this.bg.isFlag() && this.x >= 520){this.bg.setOver(true);if(this.bg.isDown()){//降旗后瑪麗奧開始移this.status = "right-moving";if(this.x < 580){//向右this.x += 5;}if(this.x >= 780){//游戲結束this.setClear(true);}然后對當前馬里奧所處的場景中的所有障礙物進行遍歷,獲取到所有障礙物的坐標,通過障礙物的坐標和馬里奧的坐標的之間的關系的判斷,來決定馬里奧是否與障礙物發生了碰撞,并且通過判斷的結果來對馬里奧和障礙物的狀態進行相應的變化。 for(int i=0;i<this.bg.getAllObstruction().size();i++){Obstruction ob = this.bg.getAllObstruction().get(i);//不能向右移動if(ob.getX()==this.x+60&&(ob.getY()+50>this.y&&ob.getY()-50<this.y)){if(ob.getType() != 3){canRight = false;}}......當馬里奧撞到障礙物的時候,那么就要根據障礙物的類型進行接下來的判斷,如果是磚塊或者是問號的話,那么障礙物消失,馬里奧被彈回,即馬里奧的狀態由上升狀態變為下落狀態,并且將消失掉的障礙物放入相對應的消失的List集合當中。如果障礙物的類型為其他,比如說是石頭的話,那么障礙物不變,馬里奧直接被彈回。//判斷瑪麗奧跳躍時是否撞到障礙物if(ob.getY()==this.y-60&&(ob.getX()+50>this.x && ob.getX()-50<this.x)){//如果是磚塊if(ob.getType()==0){//移除磚塊this.bg.getAllObstruction().remove(ob);//保存到移除的障礙物中this.bg.getRemoveObstruction().add(ob);}為了游戲的可玩性,將會在游戲中加入一個隱藏的陷阱,或者是隱藏的通關點。這個隱藏的障礙物在游戲進行的時候不會顯示出來,當然馬里奧從他的左右兩邊過去的時候也不會觸發這個隱藏的障礙物,必須是從下方撞到這個障礙物時才會顯示出來。同時馬里奧由上升狀態變為下落狀態。而且他和磚塊障礙物相同,被頂到后會變為石頭,改變類型。//如果是問號||隱藏的磚塊if((ob.getType()==4 || ob.getType()==3) && upTime > 0){ob.setType(2);ob.setImage();}//馬里奧開始下落upTime = 0; 在游戲中敵人大致可以分為兩類。一類是蘑菇怪,這種敵人是可以被殺死的,當馬里奧從蘑菇怪的正上方踩到蘑菇怪時,那么蘑菇怪就會被消滅,同時馬里奧向上跳起一小段距離。而消失掉的蘑菇怪就會被放到消失掉的敵人的List集合中,等到重置的時候在調用出來。但是如果馬里奧從蘑菇怪的左右兩邊碰到蘑菇怪的話就會失去一條生命,并且重置游戲。第二類是食人花,這種敵人不會被馬里奧消滅掉,不論馬里奧從哪個方向去碰撞食人花,食人花都不會消失,而且如果馬里奧碰到了食人花,自身還會失去一條生命,并且游戲重置,當然前提是馬里奧沒有失去所有的生命值,否則的話游戲就結束。 首先馬里奧對于所有的敵人,如果從左右兩邊碰撞到敵人,那么馬里奧死亡,失去一條生命,游戲重置。//對敵人的判斷for(int i=0;i<this.bg.getAllEnemy().size();i++){Enemy e = this.bg.getAllEnemy().get(i);//對于所有的敵人都適用if((e.getX()+50>this.x && e.getX()-50<this.x) && (e.getY()+60>this.y && e.getY()-60<this.y)){//瑪麗奧死亡this.dead();}//這里開始區分敵人的類別,對于不同的敵人做出不同的反應if(e.getY()==this.y+60 && (e.getX()+60>this.x && e.getX()-60<this.x)){if(e.getType() == 1){e.dead();this.upTime = 10;this.ymove = -5;}else if(e.getType() == 2){this.dead();}}4.2.5障礙物類
繪制場景中所需要的障礙物,例如地面、磚塊、水管等等。該類中的屬性包括了障礙物的坐標,障礙物所需要顯示的圖片等。并且在該類中也定義了障礙物類的重置方法,當馬里奧死亡時,場景類會調用該方法。
4.2.6敵人類
該類中主要設置了兩種敵人,一種是蘑菇怪,可以被馬里奧踩死,另一種是食人花,不能被踩死。該類中的屬性包括了敵人的坐標,敵人的初始坐標,需要顯示的圖片,以及敵人的移動方向和移動范圍等。敵人的初始坐標主要是為了當敵人執行重置方法后將敵人的位置還原。
5、系統的實現
5.1游戲開發所需要的圖片
5.1.1馬里奧的所有圖片
這組圖片中包含了馬里奧的移動,跳躍以及死亡的圖片:
5.1.2游戲中障礙物的圖片
這組圖片中包含了游戲中的各種障礙物,以及最后通過關卡的旗幟圖片還有設置陷阱的隱形圖片:
A.地面及普通障礙物圖片
B.用于設置陷阱的隱形圖片
C.水管類圖片
D.最后場景中的旗幟圖片
5.1.3游戲中怪物的圖片
這組圖片中包含了游戲中所有的敵人圖片,以及敵人被消滅時的圖片:
A.食人花的圖片
B蘑菇怪的圖片以及被消滅時的圖片.
C.烏龜的圖片以及被消滅時的圖片
5.1.4游戲中的背景圖片
這組圖片中有一張游戲中的背景圖片(圖5.1)和一張馬里奧通關時的最后一關的背景圖片(圖5.2):
圖5.1
圖5.2
5.1.5游戲開始時的圖片
在游戲的最開始會顯示該圖片(圖5.3),然后玩家按空格鍵開始游戲,之后游戲才正式開始運行。
圖5.3
5.2游戲設計的界面
5.2.1 游戲邏輯展示
這一組圖片中包括了一些系統中的邏輯圖片,如馬里奧的控制移動示例圖片(圖5.4),玩家通過方向鍵控制馬里奧的移動、跳躍等功能;馬里奧與障礙物進行碰撞之后的效果圖片(圖5.5),這張圖片中顯示了馬里奧再與障礙物碰撞后,問號會消失變成石頭,而且磚塊會被撞碎;玩家控制游戲開始的圖片(圖5.6),游戲打開后并不會立即運行,必須等到玩家按空格鍵啟動游戲后游戲才會正式開始;當馬里奧失去所有的生命以后,游戲結束(圖5.7);如果馬里奧順利通過所有關卡,那么游戲同樣結束(圖5.8)。
圖5.4
圖5.5
圖5.6
圖5.7
圖5.8
5.2.1 游戲邏輯展示
這一組圖片中主要對游戲的關卡進行展示,其中包括第一關(圖5.9),馬里奧順利通過第一管來到第二關(圖5.10),第三關的場景(圖5.11),第四關的大懸崖場景(圖5.12),第五關的場景借鑒了魂斗羅(圖5.13),第六關的高墻(圖5.14),在這一個關卡中為了提升游戲的可玩性,加了一個隱藏的過關要點,只有找到這個要點才能通過(圖5.15),第七關也是最后一關的場景(圖5.16)。
圖5.9
圖5.10
圖5.11
圖5.12
圖5.13
圖5.14
圖5.15
圖5.16
6、系統測試
6.1 測試的意義
系統測試是為了發現錯誤而執行程序的過程,成功的測試是發現了至今尚未發現的錯誤的測試。 測試的目的就是希望能以最少的人力和時間發現潛在的各種錯誤和缺陷。應根據開發各階段的需求、設計等文檔或程序的內部結構精心設計測試用例,并利用這些實例來運行程序,以便發現錯誤。系統測試是保證系統質量和可靠性的關鍵步驟,是對系統開發過程中的系統分析系統設計和實施的最后復查。根據測試的概念和目的,在進行信息系統測試時應遵循以基本原則。
6.2 測試過程
省略
6.3 測試結果
程序運行正常,沒有發現什么太大的錯誤。
7、總結與展望
7.1 總結
省略
7.2 設計中的不足之處
省略
7.3 展望
省略
致 謝
省略
外文原文
省略
外文翻譯
省略
5、源碼下載:
本項目源碼及論文如下,有需要的朋友可以點擊進行下載。如果鏈接失效可點擊下方卡片掃碼自助下載。
| 本項目源碼 | 基于java+GUL的超級瑪麗游戲GUL設計與實現(源碼+文檔)_JAVA_GUL_超級瑪麗游戲GUL.zip |
總結
以上是生活随笔為你收集整理的【java毕业设计】基于java+GUL的超级玛丽游戏GUL设计与实现(毕业论文+程序源码)——超级玛丽游戏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网络互联复习(二) 精简版
- 下一篇: 单片机外围电路设计之五:三极管