You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Bowl_in/Sources/bowlin_project/lib/model/LastRound.dart

116 lines
2.2 KiB

import 'package:bowl_in/model/AbstractRound.dart';
import 'Player.dart';
class LastRound extends AbstractRound{
int? _thirdThrow;
LastRound(super.firstThrow, super.secondThrow, super.points, super.player, super.number, this._thirdThrow);
int? get thirdThrow => _thirdThrow;
set thirdThrow(int? value) {
_thirdThrow = value;
}
@override
bool computeNext(int val) {
if(firstThrow==null){
firstThrow=val;
if(previousRound?.isSpare() ?? false){
previousRound?.update(val);
}
return false;
}else if(secondThrow==null){
secondThrow=val;
if ((firstThrow??0)+(secondThrow??0)<10){
computePoints();
return true ;
}
return false;
}else if((firstThrow??0)+(secondThrow??0)>=10){
thirdThrow=val;
}
computePoints();
return true;
}
@override
void computePoints() {
points = (firstThrow??0)+(secondThrow??0)+(thirdThrow??0);
print("Compute points : " + points.toString());
if(previousRound?.isStrike()??false){
update(points??0);
}
unsubscribePreviousRound();
}
@override
bool shotIsStrike(){
if(firstThrow==null){
return true;
}else if(secondThrow==null){
return firstThrow==10;
}else{
return secondThrow==10;
}
}
@override
int getNbSpares() {
int nb = 0;
if(firstThrow!=10){
if((firstThrow??0)+(secondThrow??0)==10){
nb+=1;
}
}else{
if((thirdThrow??0)+(secondThrow??0)==10) {
nb+=1;
}
}
return nb;
}
@override
int getNbStrike() {
int nb = 0;
if(firstThrow==10){
nb+=1;
if(secondThrow==10){
nb+=1;
if(thirdThrow==10) {
nb+=1;
}
}
}else{
if(thirdThrow==10) {
nb+=1;
}
}
return nb;
}
@override
int getPinsKnockedDown() {
return (firstThrow??0)+(secondThrow??0)+(thirdThrow??0);
}
@override
int getMaxPinsThisShot() {
if(firstThrow==null){
return 10;
}else if(firstThrow==10 && secondThrow==null){
return 10;
}else if(secondThrow==null){
return 10 - (firstThrow??0);
}else if(secondThrow==10){
return 10;
}else{
return 10 - (secondThrow??0);
}
}
}