PHP网页游戏学习之Xnova(ogame)源码解读(十)
2023-06-13 09:15:32 时间
十三、建造总览(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); 下面我们看更新当前星球的建筑队列函数 functionUpdatePlanetBatimentQueueList(&$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函数,也不难。先从队列中解析出建筑数据;然后判断是否可以建造,如果可以就要计算建造资源等;如果不行就发送消息等;最后更新建筑完成的时间、剩余建筑队列和资源等。和上面的流程一样简单,拿下。
相关文章
- 自动驾驶3.0成“少数派游戏”,毫末智行凭什么跑在前面?
- JAVA能写大型游戏么?「建议收藏」
- qq登录钓鱼php网页,PHP+JS模仿登录钓鱼「建议收藏」
- 【二】MADDPG多智能体算法实现(parl)【追逐游戏复现】
- 猜数字游戏
- 【Android 应用开发】Android游戏音效实现
- 妙用Linux:快速启动PHP程序(linux如何启动php)
- Linux游戏:扫雷玩得开心(linux扫雷)
- PHP专业连接MySQL:实现快速代码.(php连接mysql数据库代码)
- 没有神剧加持的Netflix,能靠游戏走出中年危机吗?
- 英伟达发布465.89版显卡驱动程序 RTX30系台机显卡均支持BAR增强游戏性能
- 数据库PHP编程实现从Oracle数据库读取数据(php读取oracle)
- 学习PHP与MySQL:基础教程入门(php与mysql基础教程)
- PHP实现MySQL表格删除(php删除mysql表)
- PHP如何正确输出MySQL中文字符避免乱码?(php输出mysql乱码)
- 用Redis和PHP完成高效抢红包功能(redis抢红包php)
- PHP从Linux中读取文件的方法(php读取linux文件)
- 使用PHP操作MySQL数据库的基础——mysql类库(mysql类库php)
- 尽显英雄本色!AMD潘晓明专访:打造卓越游戏体验
- 优雅式PHP配置MySQL数据库(php 配置 mysql)
- PHP如何访问MS SQL服务器(php怎么访问mssql)
- PHP与MSSQL融合产生的丰盛果实(php和mssql环境)
- PHP与MSSQL的良好结合,发挥强大的功能(php和mssql)
- 一步一步教你PHP操作MSSQL的下载方法(php_mssql下载)
- PHP与MSSQL联动——更自由的数据空间(php mssql 空间)
- 使用PHP操作MSSQL -命令行之路(php mssql 命令)
- Linux下玩转游戏的脚本解密(linux 游戏脚本)
- Linux下快速搭建PHP环境一步到位(linux一键安装php环境)
- 尝试使用Redis提升游戏体验(游戏中的redis)
- 使用PHP连接Redis应用的指南(redis连接 php)
- ROG游戏手机5S Pro上手实测,骁龙888 Plus跑分95万刷新鲁大师记录!
- php网页游戏开发入门教程一(webgame+design)
- 让的PHP代码飞起来的40条小技巧(提升php效率)
- PHP网页游戏学习之Xnova(ogame)源码解读(一)
- PHP网页游戏学习之Xnova(ogame)源码解读(六)
- PHP网页游戏学习之Xnova(ogame)源码解读(十一)
- PHP网页游戏学习之Xnova(ogame)源码解读(十三)