Home >Backend Development >PHP Tutorial >Xnova (ogame) source code interpretation for PHP web game learning (13)_PHP tutorial
16. Shipbuilding and defense (FleetBuildingPage.php and DefensesBuildingPage.php pages)
Let’s talk about the shipyard page first. In fact, there is no real shipbuilding in this page. It just saves the ships to be built and their quantity in the database; the code for generating ships is in another function. Next we start to analyze this page, and also follow the previous ideas, first explain the code that constructs the page.
First determine whether there is a shipyard on this planet. If not, of course, you will be prompted.
The following uses loop statements to construct the construction page for each type of ship. I don’t think this code needs to be explained in detail.
The next step is to display the list of ships being built. The script needs to dynamically display it, which is actually an illusion; even if it shows that there are ships built, if it is not refreshed, it will not be in the database. Note that there are two important fields here: b_hangar_id holds the list of ships to be built; b_hangar holds the time remaining since the last update, in seconds.
Use the function ElementBuildListBox() to construct a script for building a ship. You can read the function code yourself. It is not difficult, as long as you understand the two fields I mentioned earlier.
Finally output the shipyard page.
Now we are back to the front. The player enters the number of ships to be built and enters this code.
1. Obtain the code and quantity of the ship to be built
2. Determine whether the manufactured quantity exceeds the allowed maximum value. If it exceeds the allowed maximum value, take the maximum value
3. If the manufacturing quantity is not zero, determine whether manufacturing is allowed
4. Then get the maximum value that the current resources can produce
5. Set resource consumption and time consumption
6. Finally update the planet data, including the field b_hangar_id for reducing resources and building ships, and post the code as follows:
if ($Count >= 1) { $CurrentPlanet['metal'] -= $Ressource['metal']; $CurrentPlanet['crystal'] -= $Ressource['crystal']; $CurrentPlanet['deuterium'] -= $Ressource['deuterium']; $CurrentPlanet['b_hangar_id'].= "". $Element .",". $Count .";"; }
The shipyard page is completed, now let’s look at the defense page. The basic logic of this page is the same as that of the shipyard, so I won’t write it down here. The difference is that there are more logical restrictions, which are listed as follows:
1. When constructing the defense unit page, codes 407 and 408 are large and small defense shields. Please note that there can only be one
2. In the manufacturing code after the player inputs the quantity, codes 502 and 503 are interceptor missiles and interstellar missiles. Pay attention to the quantity relationship between the two missiles and the number of missiles in the manufacturing list
3. Also use the field b_hangar_id to save
The shipbuilding and defense page has been briefly explained. The most important manufacturing code is in another function, which will be analyzed in the next chapter.