Vary required round sum by player count

3 players → -105, 4-6 → -110, 7-8 → -100. Adds requiredRoundSum()
to scoring.ts and threads it through isRoundScoreValid and the sum
display in EnterScores.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-28 23:19:05 -05:00
parent 8cd4bba4fd
commit 906f106b26
2 changed files with 12 additions and 4 deletions
+8 -1
View File
@@ -2,8 +2,15 @@ export function isIndividualScoreValid(n: number): boolean {
return n % 5 === 0 && n <= 110
}
export function requiredRoundSum(playerCount: number): number {
if (playerCount === 3) return -105
if (playerCount >= 7) return -100
return -110
}
export function isRoundScoreValid(scores: number[]): boolean {
return scores.every(isIndividualScoreValid) && scores.reduce((a, b) => a + b, 0) === -110
return scores.every(isIndividualScoreValid)
&& scores.reduce((a, b) => a + b, 0) === requiredRoundSum(scores.length)
}
// Returns totals[i][j] = cumulative score for player j after round i.
+4 -3
View File
@@ -2,7 +2,7 @@ import { useState } from 'react'
import PageFrame from '../components/PageFrame'
import PrimaryButton from '../components/PrimaryButton'
import HelpModal from '../components/HelpModal'
import { isIndividualScoreValid, isRoundScoreValid } from '../game/scoring'
import { isIndividualScoreValid, isRoundScoreValid, requiredRoundSum } from '../game/scoring'
import { type GameState } from '../types'
import styles from './EnterScores.module.css'
import sharedStyles from '../styles/shared.module.css'
@@ -33,6 +33,7 @@ export default function EnterScores({ game, onSubmit, onBack, initialValues }: P
}))
}
const target = requiredRoundSum(game.players.length)
const parsed = values.map(v => parseInt(v, 10))
const fieldError = values.map((v, i) => v !== '' && (isNaN(parsed[i]) || !isIndividualScoreValid(parsed[i])))
const allFilled = parsed.every(n => !isNaN(n))
@@ -66,8 +67,8 @@ export default function EnterScores({ game, onSubmit, onBack, initialValues }: P
/>
</div>
))}
<p className={`${styles.sumLine}${sum === -110 ? ` ${styles.sumValid}` : ''}`}>
Sum: {sum} / 110
<p className={`${styles.sumLine}${sum === target ? ` ${styles.sumValid}` : ''}`}>
Sum: {sum} / {target}
</p>
</PageFrame>
)