Beispiel #1
0
    // =======================
    // private メソッド
    // =======================

    // =======================
    // public メソッド
    // =======================

    /**
     * {@inheritDoc}<br>
     * 攻撃側プレイヤー(atacker)のMPが魔法の消費MPに足りている場合は
     * @param attacker {@inheritDoc}
     * @param defender {@inheritDoc}
     */
    public override void Attack(Player activePlayer, List <Player> passiveMembers)
    {
        Debug.Log("Wizard Attack");

        //攻撃対象の決定
        Player passivePlayer = passiveMembers[0];

        if (passiveMembers.Count > 1)
        {
            passivePlayer = passiveMembers[UnityEngine.Random.Range(0, passiveMembers.Count - 1)];
        }

        //使用する魔法を決定する
        Magic UseMagic = this.attackMagic[UnityEngine.Random.Range(0, attackMagic.Length)];

        Debug.Log(string.Format("Wizard Attack {0}", UseMagic.GetName()));
        if (UseMagic.GetUseMP() <= this.mp)
        {
            Debug.Log("Wizard Attack 魔法使えるとき");
            UseMagic.effect(activePlayer, passivePlayer);
            return;
        }
        // 与えるダメージを求める
        LogText.AddLog(string.Format("{0} の 攻撃!", activePlayer.GetName()));
        int damage = activePlayer.CalcDamage(passivePlayer);

        // 求めたダメージを対象プレイヤーに与える
        LogText.AddLog(string.Format("{0} に {1} のダメージ!", passivePlayer.GetName(), damage));
        passivePlayer.Damage(damage);

        passivePlayer.Down();
    }
Beispiel #2
0
 /// <summary>
 /// PlayerのHPがゼロになったときに表示する
 /// </summary>
 public void Down()
 {
     if (this.hp == 0)
     {
         LogText.AddLog(string.Format("{0}は力尽きた...", this.name));
     }
 }
Beispiel #3
0
    void Update()
    {
        if (Network.peerType == NetworkPeerType.Disconnected)
        {
            LogText.AddLog("斷線中");
            ConnectServer();
        }
        if (Network.peerType == NetworkPeerType.Client)
        {
            LogText.AddLog("與SERVER保持連線中1");
        }
        if (Network.peerType == NetworkPeerType.Connecting)
        {
            LogText.AddLog("與SERVER保持連線中2");
        }

        LogText.AddLog("touchCount:(" + Input.touchCount + ")");

        if (Input.touchCount == 1)
        {
            onConnect = false;
            ConnectServer();
        }

        if (Input.touchCount == 2)
        {
            MasterServer.ClearHostList();
            MasterServer.RequestHostList("CardBoard");
        }
    }
Beispiel #4
0
    void ConnectServer()
    {
        if (onConnect)
        {
            return;
        }

        HostData[] datas = MasterServer.PollHostList();
        LogText.AddLog("datas " + datas);
        if (datas.Length > 0)
        {
            LogText.AddLog("datas.Length " + datas.Length);

            HostData data = datas [0];
            LogText.AddLog("ip:(" + data.ip + ") port(" + data.port + ")");

            if (data != null)
            {
                Network.Connect(data);
                onConnect = true;

                LogText.AddLog("Connect to server!");
            }
        }
    }
Beispiel #5
0
    public void UpdateBoardQuaternion(Quaternion quaternion)
    {
        if (quaternion == null)
        {
            return;
        }

        transform.localRotation = quaternion;
        LogText.AddLog("Do UpdateRotateBoard(" + quaternion + ") \r\n");
    }
Beispiel #6
0
    public void UpdateBall(Quaternion quaternion, Vector3 position)
    {
        if (quaternion == null || position == null)
        {
            return;
        }

        transform.localRotation = quaternion;
        transform.position      = position;
        LogText.AddLog("Do UpdateBall(quaternion:" + quaternion + ", position:" + position + ") \r\n");
    }
Beispiel #7
0
    // =======================
    // protected メソッド
    // =======================

    // =======================
    // private メソッド
    // =======================

    // =======================
    // public メソッド
    // =======================

    /**
     * 対称プレーヤーの体力を回復する
     * @param activePlayer {@inheritDoc}
     * @param passivePlayer {@inheritDoc}
     */
    public override void effect(Player activePlayer, Player passivePlayer)
    {
        // HPを 50 回復する

        activePlayer.UseMP(this.usemp);

        LogText.AddLog(string.Format("{0} の {1}!", activePlayer.GetName(), this.name));
        LogText.AddLog(string.Format("{0} の HP が  {1} 回復した!", passivePlayer.GetName(), this.recoverhp));

        passivePlayer.RecoverHP(this.recoverhp);
    }
Beispiel #8
0
    // =======================
    // protected メソッド
    // =======================

    // =======================
    // private メソッド
    // =======================

    // =======================
    // public メソッド
    // =======================

    /**
     * 対称プレーヤーに電撃を加える
     * @param activePlayer {@inheritDoc}
     * @param passivePlayer {@inheritDoc}
     */
    public override void effect(Player activePlayer, Player passivePlayer)
    {
        // MPが足りている場合の処理
        int damage = UnityEngine.Random.Range(10, 30);

        activePlayer.UseMP(this.usemp);

        LogText.AddLog(string.Format("{0} の {1}!", activePlayer.GetName(), this.name));
        LogText.AddLog($"{passivePlayer.GetName()} に {damage} のダメージ!");

        passivePlayer.Damage(damage);
    }
    public GameManager()
    {
        Debug.Log("GM Start");
        this.battleResult = 0;
        turnNumber        = 0;
        // プレイヤーの準備
        this.enemyMembers = new Party(BattleStart.enemyMembers);
        this.partyMembers = new Party(BattleStart.partyMembers);

        // 作戦の決定
        this.enemyMembers.ChangeStrategy(new DefaultStrategy());
        this.partyMembers.ChangeStrategy(new DefaultStrategy());

        string objectName = "StrategyName";

        Debug.Log("検索するオブジェクト名" + objectName);
        var content = GameObject.Find(objectName);

        Debug.Log(content);
        this.strategytext      = content.GetComponent <Text>();
        this.strategytext.text = "作戦 : バランスよく";

        LogText.Reset();
        StatusReflection();


        objectName = "Content";
        Debug.Log("検索するオブジェクト名" + objectName);
        content = GameObject.Find(objectName);
        logtext = content.GetComponentInChildren <Text>();


        // バトル開始の表示
        if (turnNumber == 0)
        {
            LogText.AddLog("=== バトル開始 ===");
        }
        turnNumber = 1;

        StatusPrint();
        logtext.text = LogText.GetLog();
        Debug.Log("パーティーのメンバー確認");
        foreach (Player p in this.partyMembers.GetMembers())
        {
            Debug.Log(p.GetName());
        }
        Debug.Log("エネミーのメンバー確認");
        foreach (Player p in this.enemyMembers.GetMembers())
        {
            Debug.Log(p.GetName());
        }
    }
Beispiel #10
0
    // =======================
    // Getter / Setter
    // =======================

    // =======================
    // protected メソッド
    // =======================
    // =======================
    // private メソッド
    // =======================
    // =======================
    // public メソッド
    // =======================

    /**
     * 対称プレーヤーに毒状態を付与する<br>
     * MPが足りない場合は、MPが足りないことを System.out で表示する<br>
     * MPが足りている場合 かつ 毒状態になっていない場合、毒状態にする<br>
     * MPが足りている場合 かつ 毒状態になっている場合、毒にかかっていることを System.out で表示する<br>
     * @param activePlayer {@inheritDoc}
     * @param passivePlayer {@inheritDoc}
     */
    public override void effect(Player activePlayer, Player passivePlayer)
    {
        // MPが足りている場合
        LogText.AddLog(string.Format("{0} の {1}!", activePlayer.GetName(), this.name));
        activePlayer.UseMP(this.usemp);
        // 毒にかかっているかの判定
        if (passivePlayer.isPoison() == false)
        {
            // 対称プレイヤーが毒にかかってない場合
            activePlayer.SetPoison(true);
            LogText.AddLog(string.Format("{0} は 毒 にかかった", passivePlayer.GetName()));
        }
        else
        {
            // 対称プレイヤーが毒にかかっている場合
            LogText.AddLog(string.Format("{0} は  すでに毒にかかっている", passivePlayer.GetName()));
        }
    }
Beispiel #11
0
    // =======================
    // Getter / Setter
    // =======================

    // =======================
    // protected メソッド
    // =======================
    // =======================
    // private メソッド
    // =======================
    // =======================
    // public メソッド
    // =======================

    /**
     * 防御側プレイヤーを確率で毒状態にする
     * @param activePlayer : 魔法を行使するプレイヤー
     * @param passivePlayer : 対象プレイヤー
     */
    public override void effect(Player activePlayer, Player passivePlayer)
    {
        // MPが足りている場合の処理
        // 魔法を行使する側のMPを使用する

        LogText.AddLog(string.Format("{0} の {1}!", activePlayer.GetName(), this.name));
        activePlayer.UseMP(this.usemp);
        // 魔法の成功判定をする
        if (RandomGenerator.RandomJudge(20))
        {
            // 判定に成功した時
            passivePlayer.SetParalyze(true);
            LogText.AddLog(string.Format("{0} は 麻痺 にかかった", passivePlayer.GetName()));
        }
        else
        {
            // 判定に失敗した時
            LogText.AddLog(string.Format("{0} には何も起こらなかった", passivePlayer.GetName()));
        }
    }
Beispiel #12
0
    // =======================
    // private メソッド
    // =======================

    // =======================
    // public メソッド
    // =======================

    /// <summary>
    /// <inheritdoc/>
    /// </summary>
    /// <param name="activePlayer"><inheritdoc/></param>
    /// <param name="passiveMembers"><inheritdoc/></param>
    public override void Attack(Player activePlayer, List <Player> passiveMembers)
    {
        //攻撃対象の決定
        Player passivePlayer = passiveMembers[0];

        if (passiveMembers.Count > 1)
        {
            passivePlayer = passiveMembers[UnityEngine.Random.Range(0, passiveMembers.Count - 1)];
        }

        // 与えるダメージを求める
        LogText.AddLog(string.Format("{0} の攻撃!", activePlayer.GetName()));
        int damage = activePlayer.CalcDamage(passivePlayer);

        // 求めたダメージを対象プレイヤーに与える
        LogText.AddLog(string.Format("{0}に {1} のダメージ!", passivePlayer.GetName(), damage));
        passivePlayer.Damage(damage);

        passivePlayer.Down();
    }
Beispiel #13
0
    /**
     * プレイヤー全員のステータスをパーティーごとに表示する
     */
    public void StatusPrint()
    {
        Debug.Log("GM StatusPrint");
        LogText.AddLog("== 敵パーティーのステータス ==");
        // パーティー1のステータスの表示
        for (int i = 0; i < 3; i++)
        {
            //			if (enemyMembers.GetMembers().get(i).GetHP() > 0) {
            LogText.AddLog(enemyMembers.GetMembers()[i].PrintStatus());
            //			}
        }

        LogText.AddLog("== 自パーティーのステータス ==");
        // パーティー2のステータスの表示
        for (int i = 0; i < partyMembers.GetMembers().Count; i++)
        {
            //			if (enemyMembers.GetMembers().get(i).GetHP() > 0) {
            LogText.AddLog(partyMembers.GetMembers()[i].PrintStatus());
            //			}
        }
    }
Beispiel #14
0
    public void Start()
    {
        Debug.Log("GM Start");
        this.battleResult = 0;
        turnNumber        = 0;
        // プレイヤーの準備
        enemyMembers = BattleStart.enemyMembers;
        partyMembers = BattleStart.partyMembers;

        aliveMembers = enemyMembers.GetMembers();
        aliveMembers.AddRange(partyMembers.GetMembers());

        enemyMembers.ChangeStrategy(new DefaultStrategy());
        partyMembers.ChangeStrategy(new DefaultStrategy());

        var content = GameObject.Find("StrategyName");

        this.strategytext      = content.GetComponent <Text>();
        this.strategytext.text = "作戦 : バランスよく";

        // 作戦の決定

        StatusReflection();

        string objectName = "Content";

        Debug.Log("検索するオブジェクト名" + objectName);
        content = GameObject.Find(objectName);
        logtext = content.GetComponentInChildren <Text>();
        // バトル開始の表示
        if (turnNumber == 0)
        {
            LogText.AddLog("=== バトル開始 ===");
        }
        turnNumber = 1;

        StatusPrint();
        logtext.text = LogText.GetLog();
    }
Beispiel #15
0
    // Update is called once per frame
    void Update()
    {
        if (Network.peerType == NetworkPeerType.Server)
        {
            LogText.AddLog("玩家數量:" + Network.connections.Length);
            Debug.Log("玩家數量:" + Network.connections.Length);

            if ((Input.touchCount > 0 || Input.GetKeyDown(KeyCode.R)) && Network.connections.Length > 0)
            {
                LogText.AddLog("重置球的位置");
                ball.transform.position = pos;
            }

            if (GetComponent <NetworkView> ())
            {
                if (ball != null)
                {
                    GetComponent <NetworkView> ().RPC("UpdateBall", RPCMode.Server, ball.transform.localRotation, ball.transform.position);
                }
                if (board != null)
                {
                    GetComponent <NetworkView> ().RPC("UpdateBoardQuaternion", RPCMode.Server, board.transform.localRotation);
                }
            }
        }
        else if (Network.peerType == NetworkPeerType.Disconnected)
        {
            Debug.Log("Server Start");
            Network.InitializeServer(99, 9997, !Network.HavePublicAddress());
            MasterServer.RegisterHost("CardBoard", "RollBall", "alpha 1.0");

            if (Network.peerType == NetworkPeerType.Server)
            {
                Debug.Log("玩家數量:" + Network.connections.Length);
                LogText.AddLog("玩家數量:" + Network.connections.Length);
            }
        }
    }
Beispiel #16
0
    /// <summary>
    /// 対象プレイヤー(target)に対して与えるダメージを計算する
    /// </summary>
    /// <param name="target">対象プレイヤー</param>
    /// <returns>ダメージ値(0~)</returns>
    public int CalcDamage(Player target)
    {
        int critical = UnityEngine.Random.Range(1, 100);
        int damage;

        // 剣を持っているかどうか

        // 会心の一撃かどうか
        if (GetLUCK() > critical)
        {
            LogText.AddLog("会心の一撃!");

            return(GetSTR());
        }

        damage = str - target.GetDEF();

        if (damage < 0)
        {
            return(0);
        }
        return(damage);
    }
Beispiel #17
0
    // =======================
    // Getter / Setter
    // =======================

    // =======================
    // protected メソッド
    // =======================

    // =======================
    // private メソッド
    // =======================

    // =======================
    // public メソッド
    // =======================

    /**
     * 対称プレーヤーに毒状態を付与する<br>
     * MPが足りない場合は、MPが足りないことを System.out で表示する<br>
     * MPが足りている場合 かつ 毒状態になっている場合、毒を解除するにする<br>
     * MPが足りている場合 かつ 麻痺状態になっている場合、麻痺状態を解除する<br>
     * @param activePlayer {@inheritDoc}
     * @param passivePlayer {@inheritDoc}
     */
    public override void effect(Player activePlayer, Player passivePlayer)
    {
        // MPが足りている場合
        LogText.AddLog(string.Format("{0} の {1}!", activePlayer.GetName(), this.name));
        activePlayer.UseMP(this.usemp);

        // 毒にかかっているかの判定
        if (passivePlayer.isPoison() == true)
        {
            // 対称プレイヤーが毒状態の場合
            activePlayer.SetPoison(false);
            LogText.AddLog(string.Format("{0} の 毒 が解除された!", passivePlayer.GetName()));
            return;
        }

        // 麻痺にかかっているかの判定
        if (passivePlayer.isParalyze() == true)
        {
            activePlayer.SetParalyze(false);
            LogText.AddLog(string.Format("{0} の 麻痺 が解除された!", passivePlayer.GetName()));
            return;
        }
    }
Beispiel #18
0
 void UpdateBoardQuaternion(Quaternion quaternion)
 {
     LogText.AddLog("Get UpdateRotateBoard(" + quaternion + ") \r\n");
     GameObject.FindObjectOfType <RemoteBoard>().UpdateBoardQuaternion(quaternion);
 }
Beispiel #19
0
 void UpdateBall(Quaternion quaternion, Vector3 position)
 {
     LogText.AddLog("Get UpdateBall(quaternion:" + quaternion + ", position:" + position + ") \r\n");
     GameObject.FindObjectOfType <RemoteBall>().UpdateBall(quaternion, position);
 }
Beispiel #20
0
    public void NextTurn()
    {
        Debug.Log("GameManager NextTurn ");



        // ==================================================
        // バトル処理
        // ==================================================

        LogText.AddLog(string.Format("- ターン{0} -{1}", turnNumber, System.Environment.NewLine));
        this.phaseNumber = 0;


        // 行動できる人間がいる間繰り返す
        while (0 < partyMembers.FastestMembers().Count + enemyMembers.FastestMembers().Count)
        {
            // Debug用
            Debug.Log("パーティーのメンバー確認");
            foreach (Player p in this.partyMembers.GetMembers())
            {
                Debug.Log(p.GetName());
            }
            Debug.Log("エネミーのメンバー確認");
            foreach (Player p in this.enemyMembers.GetMembers())
            {
                Debug.Log(p.GetName());
            }

            Debug.Log(string.Format("{0}={1}({2} + {3})", this.phaseNumber, partyMembers.FastestMembers().Count + enemyMembers.FastestMembers().Count, partyMembers.FastestMembers().Count, enemyMembers.FastestMembers().Count));

            // 未行動のプレイヤーで一番AGIが高いプレイヤーが攻撃する
            Player attacker = ComparateAGI(phaseNumber);

            // Debug用
            Debug.Log("パーティーのメンバー確認");
            foreach (Player p in this.partyMembers.GetMembers())
            {
                Debug.Log(p.GetName());
            }
            Debug.Log("エネミーのメンバー確認");
            foreach (Player p in this.enemyMembers.GetMembers())
            {
                Debug.Log(p.GetName());
            }

            // 攻撃するプレイヤーの攻撃できる対象を決める
            Party TargetParty = ContainsParty(attacker);

            Debug.Log(attacker.GetName());

            // paralyzeTurn 0 の時
            if (attacker.GetParalyzeTurn() == 0 && attacker.isParalyze())
            {
                Debug.Log("GameManager NextTurn 麻痺がとける時");
                LogText.AddLog(string.Format("{0} の麻痺がとれた!\n", attacker.GetName()));
                attacker.RecoveryParalyze();
            }

            LogText.AddLog(string.Format("▼ {0} の行動\n", attacker.GetName()));

            // 麻痺状態でない場合の処理
            if (!attacker.isParalyze())
            {
                Debug.Log("GameManager NextTurn 麻痺になってないとき");

                //どちらのパーティーに所属しているか
                if (enemyMembers.isExists(attacker))
                {
                    Debug.Log(string.Format("{0} は敵パーティーに所属している", attacker.GetName()));
                    attacker.Action(attacker, partyMembers);
                }
                else
                {
                    Debug.Log(string.Format("{0} は味方パーティーに所属している", attacker.GetName()));
                    attacker.Action(attacker, enemyMembers);
                }
            }
            else
            {
                Debug.Log("GameManager NextTurn 麻痺になっているとき");
                LogText.AddLog(string.Format("{0} は身体が麻痺して動けない!\n", attacker.GetName()));
            }

            if (TargetParty.isLose())
            {
                if (TargetParty == enemyMembers)
                {
                    this.battleResult = 1;
                }
                else
                {
                    this.battleResult = 2;
                }
                return;
            }

            if (attacker.isPoison())
            {
                Debug.Log("GameManager NextTurn 毒状態の時");
                attacker.ProcessPoison();
            }

            // 全滅してるかどうか
            // してたらゲーム終了
            if (TargetParty.isLose())
            {
                if (TargetParty == enemyMembers)
                {
                    this.battleResult = 0;
                }
                else
                {
                    this.battleResult = 1;
                }
            }


            attacker.ChangeActive(false);
            Debug.Log(string.Format("GameManager NextTurn ChangeActive : {0}", attacker.isActive()));
            attacker.ChangeParalyzeTurn();
            Debug.Log("GameManager NextTurn ChangeParalyzeTurn");
            LogText.AddLog("--------------------------------");
            this.phaseNumber++;
        }

        LogText.AddLog("=================================");

        // ターン終了時の処理
        foreach (Player p in enemyMembers.AttackTarget())
        {
            p.ChangeActive(true);
        }

        foreach (Player p in partyMembers.AttackTarget())
        {
            p.ChangeActive(true);
        }

        StatusReflection();

        logtext.text = LogText.GetLog();
        turnNumber++;
    }