All files Frame.ts

100% Statements 19/19
100% Branches 13/13
100% Functions 5/5
100% Lines 19/19

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46                  187x 187x 187x 187x 187x 187x       253x 88x 88x     253x 25x 25x         253x 253x       147x 147x       253x 147x 106x      
export class Frame {
  numero: number
  arremessos: number
  pinos_em_pe: number
  strike: boolean
  spare: boolean
  bonus: number
 
  constructor(numero: number) {
    this.numero = numero
    this.arremessos = 0
    this.pinos_em_pe = 10
    this.strike = false
    this.spare = false
    this.bonus = 0
  }
 
  adicionarBonus(pinos: number): void {
    if (this.arremessos === 0 && pinos === 10) {
      this.strike = true
      this.bonus = 2
    }
 
    if (this.arremessos === 1 && pinos === this.pinos_em_pe) {
      this.spare = true
      this.bonus = 1
    }
  }
 
  gravarArremesso(pinos: number): void {
    this.arremessos += 1
    this.pinos_em_pe -= pinos
  }
 
  gerarProximoFrame(): Frame {
    const proximo_frame: Frame = new Frame(this.numero + 1)
    return proximo_frame
  }
 
  permitirEncerrarFrame(): boolean {
    if (this.numero != 9 && (this.pinos_em_pe == 0 || this.arremessos === 2))
      return true
    return false
  }
}