PHP網頁遊戲學習之Xnova(ogame)源碼解讀(十)_PHP教程

來源:互聯網
上載者:User
十三、 建造總覽(buildings.php)

從這篇文章開始,對xnova的研究重點放在流程上面,其實就是大量的函數;至於頁面的構造將不再仔細解釋。

buildings.php檔案不只是處理建築金屬礦產等,而是包括了建築、研究、造船廠、防禦四個功能;通過傳遞不同的參數來決定進入哪個功能,所以這個檔案其實是一個導航檔案。下面我們簡單解釋下這個檔案。

//更新當前星球的建築隊列,比較複雜UpdatePlanetBatimentQueueList ( $planetrow, $user );//處理目前使用者的科技研究HandleTechnologieBuild ( $planetrow, $user );//下面是根據參數進入不同的功能頁面//造船廠頁面case 'fleet':FleetBuildingPage ( $planetrow, $user );//研究頁面case 'research':ResearchBuildingPage ( $planetrow, $user, $IsWorking['OnWork'], $IsWorking['WorkOn'] );//防禦頁面case 'defense':DefensesBuildingPage ( $planetrow, $user );//剩下的自然是建築頁面default:BatimentBuildingPage ( $planetrow, $user ); 下面我們看更新當前星球的建築隊列函數function UpdatePlanetBatimentQueueList ( &$CurrentPlanet, &$CurrentUser ) { $RetValue = false; //判斷是否有建築隊列,欄位b_building_id儲存建築隊列 if ( $CurrentPlanet['b_building_id'] != 0 ) { //進入迴圈,開始處理隊列 while ( $CurrentPlanet['b_building_id'] != 0 ) {  //如果當前建造的建築時間小於time的話,就處理,欄位b_building儲存建築到期的時間  if ( $CurrentPlanet['b_building'] <= time() ) {  //先更新下星球的資源,以後再解析  PlanetResourceUpdate ( $CurrentUser, $CurrentPlanet, $CurrentPlanet['b_building'], false );  //處理掉當前的建築,並把當前建築欄位清空;代碼很多,其實比較簡單  $IsDone = CheckPlanetBuildingQueue( $CurrentPlanet, $CurrentUser );  //如果前面處理成功,這裡就要處理隊列中的下一個建築,包括扣除資源  if ( $IsDone == true ) {   SetNextQueueElementOnTop ( $CurrentPlanet, $CurrentUser );  }  } else {  $RetValue = true;  break;  } } } return $RetValue;} 

我們繼續下去,跟蹤入CheckPlanetBuildingQueue函數,這個函數代碼挺多,其實簡單;我不寫注釋了,說下流程。先從欄位b_building_id解析出來建築的種類、建築或拆除、結束建築的時間等;然後更新該建築的等級,升級或者降級;更新星球的最大空間和使用空間;更新當前建築的時間為0和更新當前的剩餘建築隊列。不難吧,呵呵。

接下來處理隊列中的下一個建築,跟蹤SetNextQueueElementOnTop函數,也不難。先從隊列中解析出建築資料;然後判斷是否可以建造,如果可以就要計算建造資源等;如果不行就發送訊息等;最後更建立築完成的時間、剩餘建築隊列和資源等。和上面的流程一樣簡單,拿下。

http://www.bkjia.com/PHPjc/824836.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/824836.htmlTechArticle十三、 建造總覽(buildings.php) 從這篇文章開始,對xnova的研究重點放在流程上面,其實就是大量的函數;至於頁面的構造將不再仔細解釋...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.