Skip to main content

Assists in building teams of various pokemon types based on weaknesses and resistances

Project description

ci-cd

pokehelpyer

pokehelpyer is a Python package designed to assist Pokémon players in building teams of pokémon. Users can provide a list of pokémon currently on their team, and pokehelpyer will recommend a suitable pokémon to add to the team based on the current team's overall weaknesses and resistances.

In the Pokémon game, players battle using teams of up to six pokémon. Each pokémon has a type, such as grass, water, or fire. Each type in the game is either weak to, resistant to, or neutrally affected by each other type in the game. If a player does not consider these weaknesses and resistances when creating their team of pokémon, they may find themselves in a scenario in which they are consistently struggling to win battles against certain types of pokémon. For a simple example, if a player were to use a team of six fire-type pokémon, then they would likely struggle to win battles against water-type pokémon. The preceding is obviously an extreme example, but in a competitive setting, even a small imbalance in a team's weaknesses and resistances can cause major issues for a player.

The pokehelpyer package aims to assist players in avoiding imbalances in weaknesses/resistances when building a pokémon team. Given a list of up to five pokémon currently on a team, pokehelpyer will determine which types the team is most weak to and which types the team is most resistant to. Based on this information, pokehelpyer will then recommend a pokémon that could be added to the current team to make its weaknesses and resistances more balanced.

(If you are reading this and aren't familiar with Pokémon, it might be helpful to note that "pokémon" is both the singular and plural form of the word, and also that lowercase "pokémon" refers to an individual character in the game, such as Pikachu, whereas capitalized "Pokémon" refers to the franchise/game.)

Functions Included

  • get_types: Given a list of pokémon names, determine the types of those pokémon using an existing dataset.

  • calc_resistances: Given a list of pokémon types present on a player's team, calculate a measure of how resistant the team is to each type in the game.

    • Creates a dictionary in which the keys are each of the 18 types in the game, and the values are integers measuring the level of resistance the input team has to that key (type). Higher values indicate a higher level of resistance to that type.

  • calc_weaknesses: Given a list of pokémon types present on a player's team, calculate a measure of how weak the team is to each type in the game.

    • Creates a dictionary in which the keys are each of the 18 types in the game, and the values are integers measuring the level of weakness the input team has to that key (type). Higher values indicate a higher level of weakness to that type.

  • recommend: Given a team of up to 5 pokémon, recommend a pokémon that could be added to the current team to make its weaknesses and resistances more balanced.

    • Determines which types the team is most resistant to and weak to via calc_resistances and calc_weaknesses, and then makes its recommendation based on this information.
    • In particular, it uses calc_balance together a brute-force search of all ~700 pokémon to determine its recommendation based on the objective of maximizing balance.

  • calc_balance: Calculate a measure of how balanced a pokémon team is using its weaknesses and resistances. Higher values indicate a more balanced team.

Datasets Included

  • pokémon.csv: Dataset containing details about each pokémon including its name, type(s), and base stats.
  • type_chart.csv: Dataset containing details abouts the weaknesses and strengths of each type of pokémon.

Place Within the Python Ecosystem

There are websites and applications that help build pokémon teams, such as the Mariland Team Builder. However these tools simply present the player with a visual representation of their current team's weaknesses and resistances. They don't make recommendations. In other words, the existing tools simply given visual representations of the dictionaries created by calc_weaknesses and calc_resistances. There doesn't seem to be any existing Python packages which will use the weaknesses/resistances data to make reccomendations for additional team members.

Installation

pip install pokehelpyer

Usage

See https://pokehelpyer.readthedocs.io/en/latest/

import pokehelpyer.pokehelpyer as pk

get_types:

team_list = ['Pikachu', 'Eevee', 'Charizard', 'Metapod']
team_types = pk.get_types(team_list)

calc_weaknesses and calc_resistances:

team_weaknesses = pk.calc_weaknesses(team_types)
team_resistances = pk.calc_resistances(team_types)

calc_balance:

team_balance = pk.calc_balance(
    resistances=team_resistances, 
    weaknesses=team_weaknesses
)

recommend:

pk.recommend(['Pikachu', 'Eevee', 'Charizard', 'Metapod'], n_recommendations=2)

Contributors

  • Raul Aguilar
  • Jakob Thoms
  • Ritisha Sharma
  • Sneha Sunil

Contributing

Interested in contributing? Check out the contributing guidelines. Please note that this project is released with a Code of Conduct. By contributing to this project, you agree to abide by its terms.

Credits

pokehelpyer was created with cookiecutter and the py-pkgs-cookiecutter template.

License

pokehelpyer was created by Jakob Thoms, Ritisha Sharma, Raul Aguilar, and Sneha Sunil. It is licensed under the terms of the MIT license.

License: MIT

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

pokehelpyer-0.1.8.tar.gz (8.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pokehelpyer-0.1.8-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

File details

Details for the file pokehelpyer-0.1.8.tar.gz.

File metadata

  • Download URL: pokehelpyer-0.1.8.tar.gz
  • Upload date:
  • Size: 8.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.1

File hashes

Hashes for pokehelpyer-0.1.8.tar.gz
Algorithm Hash digest
SHA256 cbcb23e4e400e7b5ff4616bcd85732d6250d6a813c902816b96aa82cd06f53de
MD5 0f9c21e2db1c96791d30c178781b4ef8
BLAKE2b-256 798013657f7a2bdab6b54be86c254478bfd41c64ffbc52bdd6a2c321a8dad640

See more details on using hashes here.

File details

Details for the file pokehelpyer-0.1.8-py3-none-any.whl.

File metadata

  • Download URL: pokehelpyer-0.1.8-py3-none-any.whl
  • Upload date:
  • Size: 8.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.1

File hashes

Hashes for pokehelpyer-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 aaf141c69856de596fd299e9c4c01dc6d0a778097bc4f0aa90b84e9c443f2777
MD5 e736ef1253da9fdd9fb115a93a89fdfc
BLAKE2b-256 ef80cd68df026a70aa2250257eb6a935b861d5b9715724961a09e0721d7811c1

See more details on using hashes here.

Supported by

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