Ios 如何在带有读线的交换机中创建循环

Ios 如何在带有读线的交换机中创建循环,ios,swift,Ios,Swift,我必须为我的在线课程制作一个游戏,它显示在控制台上。这是一个两名玩家的游戏,每个团队有3个角色。我正在努力,如何在我的开关中循环“强制”玩家选择1、2或3(它象征着他的团队的角色)来攻击敌人团队,我的代码如下: func chooseChar(charac: inout[Character]){ let choice = readLine() var attacker: Character switch choice { case

我必须为我的在线课程制作一个游戏,它显示在控制台上。这是一个两名玩家的游戏,每个团队有3个角色。我正在努力,如何在我的开关中循环“强制”玩家选择1、2或3(它象征着他的团队的角色)来攻击敌人团队,我的代码如下:

func chooseChar(charac: inout[Character]){
        let choice = readLine()
        var attacker: Character

        switch choice {
        case "1":
            attacker = self.playerTeam[0]
            charac.append(attacker)
        case "2":
            attacker = self.playerTeam[1]
            charac.append(attacker)
        case "3":
            attacker = self.playerTeam[2]
            charac.append(attacker)

        default: print("choose between 1 2 3")
        }

}
实际上,当玩家选择示例4时,它将进入默认状态,我的代码将停止

有人有主意吗?对不起,我的英语不好


谢谢

根据您的要求,您可以在默认情况下调用相同的函数(使用递归)(这将使您的代码一直运行,直到出现任何case1、case2或case3),或者您可以在默认情况下设置一个参数,并在开关外部进行检查并根据该参数进行操作。

根据您的要求,您可以在默认情况下调用相同的函数(使用递归)(这将使您的代码一直运行,直到出现任何case1、case2或case3),或者您可以在默认情况下设置一个参数,并在开关外部进行检查,然后根据该参数进行操作。

使用经典的C方式和add while(true)使这样的操作更简单

func chooseChar(charac: inout[Character]){
    while (true){
        let choice = readLine()
        var attacker: Character

        switch choice {
        case "1":
            attacker = self.playerTeam[0]
            charac.append(attacker)
            return
        case "2":
            attacker = self.playerTeam[1]
            charac.append(attacker)
            return
        case "3":
            attacker = self.playerTeam[2]
            charac.append(attacker)
            return
        default: print("choose between 1 2 3")
        }
    }
}

使用经典的C方式并添加while(true)使事情变得更简单

func chooseChar(charac: inout[Character]){
    while (true){
        let choice = readLine()
        var attacker: Character

        switch choice {
        case "1":
            attacker = self.playerTeam[0]
            charac.append(attacker)
            return
        case "2":
            attacker = self.playerTeam[1]
            charac.append(attacker)
            return
        case "3":
            attacker = self.playerTeam[2]
            charac.append(attacker)
            return
        default: print("choose between 1 2 3")
        }
    }
}

在开关块周围(而不是开关块内部)添加循环。然后仅当选择不是默认情况时才退出循环。尝试将验证(将选择限制为小于或等于3)应用于从用户处获取选择的输入字段。确定,但如何限制读线()的选择?在开关块周围添加循环,而不是在其内部。然后仅当选择不是默认情况时才退出循环。尝试将验证(将选择限制为小于或等于3)应用于从用户处获得选择的输入字段。好的,但如何限制readline()的选择?