A Python3 assistant for playing darts. No dependencies.
GPL-3.0 License
A Python3 assistant (and library) for playing darts
Play with your friends and keep track of your darts scores!
pydartz
requires Python 3.8 or higher.
pip install --user -U pydartz
To enable sound support, either install additional dependencies
pip install --user -U pydartz[audio]
or set the PYDARTZ_MEDIA_PLAYER
environment variable (default: mpv
).
pipx install pydartz
v1.2
is the last version to support Python 2.v2.1.1
is the last version to support Python 3.6.v2.2.0
is the last version to support Python 3.7.Execute pydartz
in the command line to start a classic 501 game. The setup instructions should be self-explanatory.
When the game starts, the program expects a player's score as an input. There are various options:
66d
and hit enter. The suffix d
indicates that your done.b
and hit enter.When the game is finished (i.e. one player has won the specified number of legs), the program asks whether you want to play again. Answer
y
(YES) if you want a rematch using the same settingsn
(NO) if you want to play again but re-define the settingsq
(QUIT) if you want to quit the applicationpydartz
provides an API to include the dart assisting functionality into custom projects. Subclass communication.CommunicatorBase
, create a game.Game
object and run()
it! Note that this call blocks until the user decides to quit. You might decide to execute it in a separate thread.
Example: I have a Raspberry/Arduino/ROS project. The custom communicator uses a ROS publisher to forward information to an LCD, taking the limited character width into account. Input requests are implemented using ROS client calls to the server (the Arduino listening for keypresses).
I can see a GUI being built on top of the library.
The last visit has to be entered throw by throw. Otherwise, the evaluation of the total number of throws per visit is not correct!
For displaying player statistics, type pydartz --stats <player_name>
. You can put any number of names. Without any name, information of all players is printed.
Also, see the output of pydartz --help
.
Have fun!
Watch MVG casually nailing a 9 darter:
> pydartz
Nr of players: 1
Name of player 1: MVG
Start value: 501
Nr of legs: 1
MVG has 501 and three darts left.
MVG's score: 180
MVG has 321 and three darts left.
MVG's score: 180
MVG has 141 and three darts left.
Finish options:
T20 T19 D12
MVG's score: 60
MVG has 81 and two darts left.
Finish options:
T19 D12
T15 D18
MVG's score: 57
MVG has 24 and one dart left.
MVG's score: 24
MVG: 1
================================================================================
> pydartz -s MVG
MVG:
Legs won: 1
Average: 167.00
Highscore: 180
Finishes:
141: 1
Darters:
9-darter: 1
Get the source code
git clone https://github.com/pylipp/pydartz
cd pydartz
Install to a virtualenv
python3 -m venv .venv
source .venv/bin/activate
make install
make test
make coverage
make style-check
git tag
with new version number (scheme vX.Y.Z
)make release