Skip to content

Andy4495/skat-scoresheet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Skat Scoresheet

Build Check Markdown Links Test

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.

House Rules

The following house rules are not configurable

  • 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
  • Bock round
    • Scores double during a Bock round

The following house rules are configurable at the start of the game

  • 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
    • 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

Player-enforced rules

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

To-Do

Create a GUI version.

Future Features

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

Building

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.

Testing

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).

Web-based Version

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.

References

License

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.

About

Scoresheet for the Skat card game.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published