Scoresheet for the card game Skat. Either three or four players are supported.
The initial version is text-based and is run from the command line.
A web-based version with similar functionality is in progress.
- Player #1 is the first dealer
- In four player games, the dealer sits out play for that hand
- Declaring
- Must play Hand in order to announce Schneider or Schwarz
- An Open bid (Suit or Grand) is only allowed with Hand bid and implies that Schneider and Schwarz are announced
- Null Open does not require Hand bid (see Null scoring below)
- Scoring
- Losses count double for non-Ramsch contracts
- Grand base value is 24
- Opponents must collect at least 31 card points to avoid Schneider
- Declarer must collect at least 31 card points to avoid Schneider
- Null scoring:
- Standard bid: 23
- Hand not Open: 35
- Open not Hand: 46
- Hand and Open: 59
- Ramsch
- There is no Bock during a Ramsch round
- A "nobody bids 18" Ramsch hand has Bock scoring during Bock round
- If Grand Hand is allowed during a Ramsch round, then:
- No Bock can be created, regardless of other settings
- Kontra/Rekontra is not allowed, regardless of other settings
- A player taking all tricks (Durchmarsch) scores +120 points
- If no single player takes all tricks, then the player who collects the most card points has those card points deducted
- More than one player can lose points in the case of a tie
- If a player takes zero tricks, the losing hand(s) score(s) double
- There is no Bock during a Ramsch round
- Bock round
- Scores double during a Bock round
- Kontra and Rekontra allowed
- Ramsch
- Ramsch hand is played if nobody bids 18
- Play a Ramsch round (3 or 4 hands, depending on number of players) after playing a Bock round
- During a Ramsch round, each player has a chance to bid a Grand Hand, in which case the declarer leads and the hand is scored as if it were a regular Grand Hand contract (with Bock and Kontra exceptions noted above)
- Entire game can be played as Ramsch rounds
- Bock round
- A new Bock round (3 or 4 hands, depending on number of players) is created in the following cases:
- For suit and Grand contracts:
- Declarer and opponents each collect 60 card points
- Raw hand score >= 120 (before Bock/Lose/Kontra/Re doubling)
- Successful Kontra (declarer loses)
- Any Rekontra (i.e. declarer says Re to opponent's Kontra)
- The contract results in a Schneider
- Only if current hand is not a Bock hand
- Two full non-Ramsch rounds of hands (starting with Player 1) without creating a Bock round
- For suit and Grand contracts:
- A maximum of one Bock round can be created per hand
- For example, a 120 raw hand score with a Schneider only creates 1 Bock round
- A new Bock round (3 or 4 hands, depending on number of players) is created in the following cases:
These rules are enforced by the players, not the scoresheet, so there is no code or configuration associated with them:
- An opponent must not have passed on an 18 bid in order to say Kontra
Create a GUI version.
Features that may be added in a future release:
- Saving the game to a file
- Configuration file with setup parameters (# of players, player names)
- Default name; if it exists, use it. Add default name to .gitignore
The code is fully text-based and should work on any modern Unix/Linux-based system. I have compiled and tested it on MacOS (clang versions 15.0.0 and 17.0.0) and Ubuntu 24 (GNU version 13.3.0).
To build:
cd src
makeThe executable is named skat-scoresheet and takes no arguments.
The code is tested with the GitHub action workflow Test.yml.
This workflow builds the code and then runs several test input files (test-*-input.txt) through the program and compares the output to files containing the expected output (test-*-output.txt).
A web-based version is in progress (see docs/index.html).
The web-based version was written with AI assistance using GitHub Copilot. Copilot was used to convert my C++ command line program to a web page using HTML with embedded CSS and JavaScript.
It is entirely run in the browser; there is no back-end processing involved.
The web page is published using GitHub Pages and can be accessed on github.io.
- Ramsch is not supported, regardless of whether it is a Ramsch round or a "nobody bids 18" Ramsch
- Null is not supported
- The web page could use some beautification and usability improvements
- The web version does not have any automated testing
- Skat Wikipedia
- Various rules and history references:
The software and other files in this repository are released under what is commonly called the MIT License. See the file LICENSE.txt in this repository.
The index.html file used for the web-based version was produced with the assistance of GitHub Copilot. Per GitHub's Terms of Service Section J, "GitHub does not claim ownership of your Input or Output."