/mexican-train

Game Engine for the Domino variant called Mexican Train

Primary LanguageHTML

Welcome to the Mexican Train Bot Challenge!

Hello, family and friends! Welcome to our unique and exciting project: The Mexican Train Bot Challenge. If you've ever lost a game of Mexican Train, and thought "I can write a fucking bot so that I never lose again", this competition is for you! This repository is the home for a fun project where each of us will create a bot to play the popular dominoes game, Mexican Train. The goal is simple: code the smartest, most strategic bot that can outplay the rest!

What is Mexican Train?

Mexican Train is a domino game, traditionally played with family and friends, but also can be enjoyed with enemies. The objective is to build a 'train' of dominoes while trying to get rid of all your pieces. It's fun, strategic, and now, it's going to be a battleground for our bots!

Challenge Overview

Task: Write a bot that can play Mexican Train. Language: Python Winning Criteria: The bot that wins the most games in a tournament.

Getting Started

Clone this repository locally. Make sure you have python versions > 3. There is one file called game.py. It houses all of the game logic. At the bottom you will see a class called MexicanTrainBot. Your bots will extend that class. To give you an example, you will see an implementation called RandomPlayerAgent that picks a valid move at random each time it has a turn. Read that code and the other code (which, together, means all of the code) to understand how you should extend MexicanTrainBot to structure your bot.

Understand the Rules: Make sure you are familiar with the rules of Mexican Train. Here's a link to the rules.

Test Your Bot: At the bottom of that file you will see me create a game with 4 random bots. Feel free to play your bot against itself or the random bot to see which strategies work the best.

The competition starts January 1st, and ends on January 17th.

Documentation

The code itself should be well commented and use easy-to-understand naming conventions, but if you want a quick reference to understand what a given class or function is doing, you can read the documentation by opening build/index.html in your browser.

If you make updates to the code, please update the docstrings accordingly, install sphinx, and build the documentation by running sphinx-build -b html source build from the root of the project.

Rules and Guidelines

Fair Play: No hacking or unfair tactics. The goal is to have fun and learn. Collaboration: Feel free to collaborate, but each submission should be primarily your own work.

Timeline

Start Date: January 1st Submission Deadline: January 14th Tournament Date: January 18th

Have Fun!

Remember, the primary goal of this challenge is to have fun and maybe learn a bit about programming and strategy along the way. So, don't stress, and let your creativity flow!

Happy coding, and may the best bot win!