项目音之国度进入了尾声,需要临时加上一个团队探索系统。
本身的逻辑控制并不复杂,比较麻烦的是这个系统并不是我写的,在合并代码的时候可能会造成很大麻烦。
所以为了让之后的人比较容易的合成代码,大多数的概念首先进行接口的抽象。
代码如下:
using UnityEngine; using System.Collections; using explorerModeConig; namespace explorerModeConig { public interface player { bool isLife (); void myturn (); void getboss (boss _b); void addyourPoint (int _x); int getyourPoint (); bool isAttackEnd(); } public interface boss { void bossturn(); bool isAttackEnd (); bool isAttack(); void behurt(player _p); bool isLife(); void getgamer (player[] _ps); } public interface computeResult { void End_count (bool _isWin,player[] _ps,int[] _ls); } } public class explorerMode : MonoBehaviour { // Use this for initialization public player[] _p; public boss _b; public computeResult _cr; public float TimeOneturn; private float timer; private int temp_turn=0; bool game_start; bool game_end; bool isWin=false; void Start () { game_start = false; game_end = false; isWin = false; } // Update is called once per frame void Update () { if(!game_start) { bool gamer=true; for(int i=0;i<_p.Length;i++) { if(!_p[i].isLife()) { gamer = false; break; } } if(gamer) { game_start = true; for(int i=0;i<_p.Length;i++) { _p [i].getboss (_b); } _b.getgamer (_p); } } if (game_end) { int[] points=new int[_p.Length]; for(int i=0;i<_p.Length;i++) { points [i] = _p [i].getyourPoint (); } _cr.End_count (isWin,_p,points); Destroy (this); } if(game_start&&!game_end) { bool isEnd = true; for(int i=0;i<_p.Length;i++) { if(_p[i].isLife()) { isEnd = false; break; } } if(!isEnd) { if(!_b.isLife()) { isEnd = true; isWin = true; } } if(isEnd) { game_end = true; goto allend; } if (timer < TimeOneturn) { timer += Time.deltaTime; } else { timer = 0.0f; temp_turn++; temp_turn = temp_turn % (_p.Length+1); } if (temp_turn < _p.Length) { if (!_p [temp_turn].isAttackEnd ()&&_p[temp_turn].isLife()) { _p [temp_turn].myturn (); } else { timer = 0.0f; temp_turn++; temp_turn = temp_turn % (_p.Length + 1); } } else { if (!_b.isAttackEnd ()&&!_b.isLife()) { _b.bossturn (); } else { timer = 0.0f; temp_turn++; temp_turn = temp_turn % (_p.Length + 1); } } } allend: Debug.Log ("end"); } }比如boss、player、以及结算方式,这里并不知道原先的人是怎么写的,所以我们可以先将其抽象出来,定义好我们需要的方法接口,先用抽象的东西写好流程控制,具体实现的时候,合代码的人只需要让原先已经实现过的这些类实现一下我的接口,并在初始化的时候将实际的实现类对象传进来,就可以比较容易合成几个不同的人写的代码。
逻辑方面很普通,就是一个正常的回合制游戏的流程控制。