Skip to main content

Codenames board game logic implementation in python.

Project description

Codenames

Pipeline PyPI version

Code infrastructure for the Codenames board game.

Installation

pip install codenames

Usage

Here is a simple example of players implementation for CLI:

import logging
import sys

from codenames.boards.builder import generate_board
from codenames.game.move import Guess, Hint
from codenames.game.player import Guesser, Hinter
from codenames.game.runner import GameRunner
from codenames.game.state import GuesserGameState, HinterGameState

logging.basicConfig(level=logging.INFO, format="%(message)s", stream=sys.stdout)


# Implement basic players

class CLIHinter(Hinter):
    def pick_hint(self, game_state: HinterGameState) -> Hint:
        print(game_state.board.printable_string)
        hint_word = input("Enter hint word: ")
        card_amount = int(input("Enter card amount: "))
        return Hint(word=hint_word, card_amount=card_amount)


class CLIGuesser(Guesser):
    def guess(self, game_state: "GuesserGameState") -> Guess:
        print(game_state.board.printable_string)
        card_word = input("Enter card word: ")
        card_index = game_state.board.find_card_index(word=card_word)
        return Guess(card_index=card_index)

# Run game

def run_cli_game():
    language = "english"
    board = generate_board(language=language)
    red_hinter, red_guesser = CLIHinter(name="Einstein"), CLIGuesser(name="Newton")
    blue_hinter, blue_guesser = CLIHinter(name="Yoda"), CLIGuesser(name="Luke")
    runner = GameRunner(
        blue_hinter=blue_hinter,
        blue_guesser=blue_guesser,
        red_hinter=red_hinter,
        red_guesser=red_guesser,
    )
    runner.run_game(language=language, board=board)


if __name__ == "__main__":
    run_cli_game()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

codenames-4.0.0.tar.gz (26.3 kB view details)

Uploaded Source

Built Distribution

codenames-4.0.0-py3-none-any.whl (35.8 kB view details)

Uploaded Python 3

File details

Details for the file codenames-4.0.0.tar.gz.

File metadata

  • Download URL: codenames-4.0.0.tar.gz
  • Upload date:
  • Size: 26.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for codenames-4.0.0.tar.gz
Algorithm Hash digest
SHA256 607e712512306ecea55c4e1b18babc8c01e97c573931d280cac2e47610631a4d
MD5 577697b52c5035566f3a486603fa4828
BLAKE2b-256 4e3826ab418f110c343131b0b7d5b368acb13f71c6001be90a937922080476c5

See more details on using hashes here.

File details

Details for the file codenames-4.0.0-py3-none-any.whl.

File metadata

  • Download URL: codenames-4.0.0-py3-none-any.whl
  • Upload date:
  • Size: 35.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for codenames-4.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f441eef5c11da088af33156ae6cbe89658282d58c923de2a60b86167eb1dca4f
MD5 3860675204bc534dea37354afb9c6e88
BLAKE2b-256 8fcc36894bbc3617da489a556411f16dc8873f241feeb4807490113187f62acd

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page