""" This module enables a user to host a server that is able to play games. """ import random from pyserver import PyServer from pyclient import PyClient from pyclient.games.tic_tac_toe import TicTacToe def main(): player = PyServer( # Customize this to whatever you'd like to call your player name="My super smart robot player", # Custom information that you can use to tell people about this player profile={}, # Unless you know what you're doing, don't touch this. import_name=__name__, ) player.add_tic_tac_toe(on_move=play_tic_tac_toe, profile={}) player.start(port=5001) return 0 def play_tic_tac_toe(payload): """ Play a game of tic-tac-toe. You receive a payload that looks like this: { "1": "X", "2": "", "3": "O", "4": "X", "5": "O", "6": "", "7": "", "8": "", "9": "", "your_token": "X" } And you're expected to return a response of which field you'd like to place your piece in. For example, if you wish to place your token in field 7, your response should look like this: { "move": 7 } The board is arranged as follows: 1 | 2 | 3 ---+---+--- 4 | 5 | 6 ---+---+--- 7 | 8 | 9 """ # Try printing the payload to see what it looks like! print(payload) options = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, ] # 1. Try filtering out the impossible moves! # If an X or O was already placed at a field, remove it from the options # # 2. Try finding two in a row! If possible, you can try to place the third # item on the board and get 3 in a row. # # 3. Perhaps you can block the opponent from getting 3 in a row? # # Now, pick any of the remaining options. # This is just a simple implementation. Naturally, you're welcome to try # your own logic. return { "move": random.choice(options) } if __name__ == "__main__": raise SystemExit(main()) c = PyClient([ "http://127.0.0.1:5001", "http://127.0.0.1:5002", ], debug=True) out = c.play_game("tic-tac-toe", TicTacToe)