Calcolatore del punteggio nel bowling a dieci birilli
Questo calcolatore trasforma la sequenza completa di una partita di bowling a dieci birilli nel punteggio ufficiale, frame per frame.
Esegui gratis nel browser
Inserisca i birilli abbattuti a ogni tiro, rappresenti gli strike con un solo tiro e collochi i bonus nel decimo frame. Il risultato mostra i punti di ogni frame, il progressivo dopo ciascuno e il totale finale. Le combinazioni impossibili vengono rifiutate anziché corrette senza avviso, perciò lo strumento è adatto a verificare referti, collaudare software e comprendere le regole dei bonus di strike e spare.
Inserisca tutti i dieci frame nel formato corretto
Fornisca esattamente dieci array di frame nell’ordine di gioco. Dal primo al nono, registri uno strike come [10]. Ogni frame senza strike deve avere due tiri, per esempio [7, 3] per uno spare oppure [7, 2] per un frame aperto. Anche gli zeri sono essenziali: nove birilli seguiti da un tiro a vuoto si scrivono [9, 0], non come un frame con un solo valore. Il decimo frame contiene i propri tiri bonus. Uno strike ne richiede due, come [10, 8, 1], mentre uno spare ne richiede uno, come [6, 4, 7]. Un decimo frame aperto contiene soltanto i due tiri ordinari. Ogni valore deve essere un intero da zero a dieci. Il calcolatore richiede una partita conclusa, perché strike e spare non possono ricevere un valore definitivo finché non sono noti i tiri successivi. Il raggruppamento per frame agevola il confronto con un referto cartaceo e conserva la sequenza cronologica necessaria per i bonus.
Comprenda strike, spare e decimo frame
Un frame aperto vale i birilli abbattuti al suo interno. Uno spare vale dieci più i birilli del tiro successivo, anche quando quel tiro appartiene al frame seguente. Uno strike vale dieci più i birilli dei due tiri successivi, che possono superare uno o due confini tra frame. Gli strike consecutivi quindi si combinano: il primo di una serie riceve i due strike seguenti come bonus e vale trenta. Il decimo frame è diverso soltanto perché deve fornire abbastanza tiri per risolvere il proprio bonus. I tiri aggiuntivi non costituiscono un undicesimo frame. Dopo uno strike i birilli vengono riposizionati. Se anche il secondo tiro del decimo è uno strike, l’ultimo può valere da zero a dieci. Se il secondo abbatte meno di dieci birilli, condivide il castello con il terzo e insieme non possono superare dieci. Dopo uno spare nel decimo, il bonus finale può abbattere fino a dieci nuovi birilli. Questi controlli impediscono di assegnare punti a sequenze plausibili in apparenza ma impossibili in pista.
Legga il risultato e utilizzi gli errori di convalida
La risposta offre tre viste coordinate della partita. total_score è il punteggio finale, da zero al massimo di trecento di una partita perfetta. frame_scores elenca i punti assegnati a ciascun frame dopo i bonus. cumulative_scores riporta il progressivo dopo ogni frame, come i totali annotati in un referto. Questa distinzione chiarisce perché uno strike possa valere più dei birilli visibili nella propria casella. Consente inoltre confronti automatici precisi: un’integrazione può individuare il primo frame in cui due sistemi divergono invece di confrontare soltanto il totale. Un input non valido genera un errore, mai un punteggio parziale. Tra gli errori comuni figurano meno di dieci frame, un secondo tiro dopo uno strike prima del decimo, oltre dieci birilli con lo stesso castello, un bonus obbligatorio omesso o un bonus aggiunto dopo un decimo frame aperto. Ogni calcolo API costa $0.002; la versione nel browser funziona localmente per verifiche manuali immediate.
Casi d'uso
Verificare un referto di lega
Ricalcoli ogni frame e confronti progressivi e totale prima di registrare il risultato.
Collaudare software di punteggio
Usi casi deterministici di strike, spare, frame aperti e decimi frame come test di regressione.
Insegnare il regolamento ufficiale
Mostri come uno o due tiri successivi cambiano il valore di uno spare o strike senza nascondere l’aritmetica.
Domande frequenti
Come si inserisce uno strike?
Usi un frame con un unico tiro da 10 dal primo al nono. Nel decimo includa nello stesso array anche i due tiri bonus.
Come si inserisce uno spare?
Usi due tiri che totalizzano 10. Uno spare nel decimo richiede anche il suo unico bonus come terzo valore.
Il calcolatore gestisce una partita perfetta?
Sì. Inserisca nove frame [10] e poi [10, 10, 10] nel decimo; il totale ufficiale è 300.
Perché il decimo frame è stato rifiutato?
Uno strike richiede due bonus, uno spare ne richiede uno e un frame aperto non ne ammette. I bonus devono rispettare il riposizionamento dei birilli.
Quanto costa un calcolo?
Ogni calcolo tramite API costa $0.002. Il calcolatore nel browser esegue localmente la stessa logica deterministica.
Posso inviare una partita ancora in corso?
No. Questa capacità richiede tutti i dieci frame e ogni tiro bonus necessario per definire il punteggio ufficiale.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/game/bowling-score-calculate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"frames":[[10],[7,3],[9,0],[10],[0,8],[8,2],[0,6],[10],[10],[10,8,1]]}'const res = await fetch("https://api.kit.forhosting.com/game/bowling-score-calculate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"frames": [
[
10
],
[
7,
3
],
[
9,
0
],
[
10
],
[
0,
8
],
[
8,
2
],
[
0,
6
],
[
10
],
[
10
],
[
10,
8,
1
]
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/game/bowling-score-calculate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"frames": [
[
10
],
[
7,
3
],
[
9,
0
],
[
10
],
[
0,
8
],
[
8,
2
],
[
0,
6
],
[
10
],
[
10
],
[
10,
8,
1
]
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/game/bowling-score-calculate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"frames":[[10],[7,3],[9,0],[10],[0,8],[8,2],[0,6],[10],[10],[10,8,1]]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"frames":[[10],[7,3],[9,0],[10],[0,8],[8,2],[0,6],[10],[10],[10,8,1]]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/game/bowling-score-calculate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"frames": [
[
10
],
[
7,
3
],
[
9,
0
],
[
10
],
[
0,
8
],
[
8,
2
],
[
0,
6
],
[
10
],
[
10
],
[
10,
8,
1
]
]
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "game.bowling_score_calculate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |