[新手必备]如何用c#写挂机游戏的回合制角色对战(1v多人对战部分)

上一篇文章,我们讲了1个角色vs另一个角色的代码该如何写,如果又忘记了的朋友,可以点击这里温故一下

那么,问题来了,1v1搞定了,但是如果打回合制游戏打boss的时候,boss带来了两个小弟,成了1打3,这可怎么办呢

同理,这其实和1v1是一样的做法,我们可以这样子理解:

  • 我方玩家1个人,敌方3人
  • 我方先攻击,随机选取敌方的一个目标进行攻击
  • 轮到地方,敌方每个人都会攻击我方
  • 然后又轮到我方,随机攻击敌方
  • 循环到有一方死光位置

把逻辑理清楚,我们也就明白我们代码该怎么写了

我的上一篇文章,讲的是单挑的逻辑,是这样子的:

  • 首先,回合+1
  • 第二,如果是a的回合,a攻击b,如果是b的回合,b攻击a
  • 第三,如果两个人中没有一个人死亡,同时没有到回合上限,循环前面两点
  • 第四,如果有人死了,那么没死的人赢了,死的人输了

所以说,1v1和1v多人的唯一区别就是,我方攻击的目标是对方随机的一人,对方全体成员都会攻击我方

这样子的代码,其实很好写

我们先创建一个协程,代码如下:

using System.Collections.Generic;
using System.Collection;
using UnityEngine;
public class PK : MonoBehaviour{
    IEnumerator Fight(Character a,  List<Character> enemies, float Duration)//1 vs n   
        {
            a.isTurn = true;//a goes first
            for (int i = 0; i < enemies.Count; i++)//set all enemies' turn false
            {
                enemies[i].isTurn = false;
            }
            int Round = 0;//set the round
            int IndexOfEnemy = 0;//set the index of enemies
        }
    }

在这里,我们给敌方角色设置的数组用的list,而不是直接Character[]

为什么要这样子呢,

首先,list是system.collections.generic里面的,所以大家请引用一下哈

其次,我们想一下,如果敌方角色死亡的话,我们是不是要把它从数组里移除,这里就体现List<T>的好处了,我们可以直接调用Remove方法移除数组中的某一项,而Character[]并不能直接移除

所以,综上所述,List<T>更适合我们使用

上面的代码里,我们有一个for循环在协程里,作用是把所有的敌方角色的回合设置为否,这样一来,就只用我方能够攻击

最下面创建的IndexOfEnemy的作用,是给敌方角色的数组设置一个指数,这样,我们就可以做到敌方按顺序一个个攻击我方,在后面的代码里我会对这个变量进行详细的解释

协程里在开始循环之前的部分我们写完了,接下来就是循环的部分了

循环的部分,我们要做到:

  • 判断我方还是敌方攻击,如果是敌方攻击&#
  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值