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
- Suit Open or Grand Open bid only allowed with Hand bid and implies that Schneider and Schwarz are announced
- Scoring
- Losses count double for non-Ramsch contracts
- Grand base value is 24
- Opponents must take 31 to avoid Schneider
- Declarer must collect at least 31 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
- 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 take 60 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
- Ramsch hand is played if nobody bids 18
- 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
make
The 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). This is a manual port of the C++ code over to JavaScript and uses HTML to provide a GUI. 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.
- 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.