击鼓传花

41 阅读1分钟
class Queue {
    queueArr: any[]
    constructor(items: any[]) {
        this.queueArr = items
    }
    // 入队
    push(items) {
        this.queueArr.push(items)
    }
    // 出队
    shift() {
        this.queueArr.shift()
    }
    // 获取第一个
    getFirst() {
        return this.queueArr[0]
    }
    // 判断是否为空
    isEmpty() {
        return this.queueArr.length == 0
    }
    // ‘’
    toString() {
        return this.queueArr.toString()
    }
}

// 击鼓传花
let gamers = ['zs', 'ls', 'ww', 'll', 'zq']

// gamers 为游戏者  timer为击鼓次数
function passGame(gamers: string[], timer: number): void {
    // 创建队列
    const queue = new Queue(gamers)
    // 遍历次数
    for (let index = 0; index < timer-1; index++) {
        queue.push(queue.getFirst())    //第一个出队 进入队列最后
        queue.shift()                   //第一个出队 
    }
    
    console.log(`淘汰了${queue.getFirst()}`);
    queue.shift()                       //此时第一个为中花者,第一个出队
    console.log(`还剩下${queue}`);
    
}

passGame(gamers,6)
passGame(gamers,6)