Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Colab #101

Open
wants to merge 7 commits into
base: main
Choose a base branch
from
Open

Colab #101

Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 29 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@
This is the improved platform for the schnapsen card game. To get to know the concept of the game, please visit
[this web page](https://www.pagat.com/marriage/schnaps.html).


To use the platform, your python version must be at least 3.9, we suggest installing conda an using an environment.
To use the platform, your python version must be at least **3.10**, we suggest installing conda an using an environment.

To get started, install the schnapsen package and its dependencies in editable mode by running:

Expand Down Expand Up @@ -35,12 +34,12 @@ To run the CLI, run:
```sh
python executables/cli.py
```

This will list the available commands.

For example, if you want try a RandBot play against another RandBot, type
`python executables/cli.py random-game`.


## Running the GUI

The graphical user interface (GUI) lets you play visually against a bot (e.g., You vs. RandBot).
Expand All @@ -51,66 +50,79 @@ To start the GUI, run:
python executables/server.py
```

Now, open your webbrowser and type in the server address (i.e., http://127.0.0.1:8080).
By default, you are playing against RandBot. You can also play against other bots. Run
Now, open your webbrowser and type in the server address (i.e., http://127.0.0.1:8080).
By default, you are playing against RandBot. You can also play against other bots. Run

```sh
python executables/server.py --help
```

for more details.

## Running the schnapsen python package on Google Colab

Although the proper way of cloning & installing repos and coding them is to do on your
local machine, we have also provided this Jupyter Notebook for those who can't.
Everything you run here is running on a Google server, not your machine.
So the changes you make here will not stay forever.

[Click here to open the Colab file](https://gist.github.com/tae898/058eb5c7734024cfc1b14f2f6f6530b8) and click on the button
on top "Open in Colab" to run this Jupyter Notebook on a Google server.

## Implementing more bots

You will find bot examples in the [`src/schnapsen/bots`](./src/schnapsen/bots) folder.
You can look at the example_bot.py file for various methods provided to your bot.


## Troubleshooting

### Getting the right python ###
### Getting the right python

The first hurdle in getting the platform to run is getting the right python version on your system.
An easy way to get that is using virtual environments. We suggest you install [conda](https://docs.conda.io/projects/conda/en/latest/user-guide/install/index.html) to manage them.
Then, you can use conda to create a new environment by running

```sh
conda create --name project_is python=3.10
```

With this environment created, you can start it

```
conda activate project_is
```

Inside this environment you can install the dependencies as instructed above.

### Run the right python ###
### Run the right python

If you install conda and create an environment, you can run python by just running the `python` command.
However, often your system also provides a python version.
However, often your system also provides a python version.
To know which python is running, use

```sh
which python # on linux
where python # on windows (untested)
```
Now, you want to look at the output and make sure that this executable is inside the anaconda folder and not where your system stores its executables.


```

Now, you want to look at the output and make sure that this executable is inside the anaconda folder and not where your system stores its executables.

<!--

Most of the time, when you read Github python repo READMEs, they won't tell you how to do things in detail, but simply tell you things like run `python bar`, run `pip install foo`, etc. All of these imply that you are running things in an isolated python environment. Often times this is easily done by creating virtual environments (e.g., venv, conda, etc.), where you know exactly what `python`, `pip`, and other modules you are running. If you are not familiar with it and still want to proceed on your current machine, especially on Windows, below are some tips.

1. **Be super specific with your python binary.**

Don't just run `python bar` but do more like `python3.9 bar`. If you just run `python bar`, it's hard to know which python binary file your system is running.
Don't just run `python bar` but do more like `python3.10 bar`. If you just run `python bar`, it's hard to know which python binary file your system is running.

2. **Be super specific with the modules (e.g., pip, pytest).**

Don't just run `pip install foo` but do more like `python3.9 -m pip install foo`. Again, if you just run `pip install foo`, we don't know exactly which `pip` your system will run. `python3.9 -m pip install foo` specifies that you want your `python3.9` to run the module (i.e., `-m`) `pip` to do something. The same goes for `python3.9 -m pytest ./tests`, instead of `pytest ./tests`.
Don't just run `pip install foo` but do more like `python3.10 -m pip install foo`. Again, if you just run `pip install foo`, we don't know exactly which `pip` your system will run. `python3.10 -m pip install foo` specifies that you want your `python3.10` to run the module (i.e., `-m`) `pip` to do something. The same goes for `python3.10 -m pytest ./tests`, instead of `pytest ./tests`.

Things can be messy if you have multiple python3.9 versions (e.g., `python3.9.1`, `python3.9.10`, etc.). Things can get even more messy when your python binary can't be run as `python3.9` but more like `py3.9` or something. Good luck!
Things can be messy if you have multiple python3.10 versions (e.g., `python3.10.1`, `python3.10.10`, etc.). Things can get even more messy when your python binary can't be run as `python3.10` but more like `py3.10` or something. Good luck!
-->

## Documentation ##
## Documentation

The code is documented using reStructuredText. You can either read the documentation along the code, or generate a more suer friendly version.
A pregenerated version of the documentation can be found int he doc folder. It can be regenerated by runnign the following in the root of the repository.
Expand All @@ -121,4 +133,3 @@ pdoc --html src/schnapsen executables/ -o doc/
```

if above doesn't work, try pdoc3, instead of pdoc