Docsity
Docsity

Prepare for your exams
Prepare for your exams

Study with the several resources on Docsity


Earn points to download
Earn points to download

Earn points by helping other students or get them with a premium plan


Guidelines and tips
Guidelines and tips

TicTacToe Documentation, Slides of Web Programming and Technologies

This is a test file used as a Python interpreter.. Chunks of more or less useful pices of code! 3.3. The trash module, just a random test file.

Typology: Slides

2022/2023

Uploaded on 03/01/2023

hardcover
hardcover 🇺🇸

4.7

(7)

26 documents

Partial preview of the text

Download TicTacToe Documentation and more Slides Web Programming and Technologies in PDF only on Docsity! TicTacToe Documentation Release 0.1 deterralba December 18, 2015 CHAPTER 1 Forewords Dear reader, This is the cherish documentation of my TicTacToe program. I made this program with love and patience to learn how the use of a bunch of new technologies. For instance, the doc you are currently reading is compiled with sphinx, a very powerful and noob-unfriendly software. 1 TicTacToe Documentation, Release 0.1 2 Chapter 1. Forewords CHAPTER 2 Let’s go to the point! If you are in a hurry, please go the the main module page. Everything is explained there if you just want to run a quick simulation. 3 TicTacToe Documentation, Release 0.1 3.2 List of all the packages 3.2.1 core package Submodules core.BoardAndRules module class BoardAndRules(game) Represents the rules of the game, saves the present state of the game and checks that the players follow the rules. Variables • game (Game) – A reference to the game. • boardS (BoardState) – Represents the present physical board. extractLines() Extracts the 8 lines than can be completed: •3 vertical: left -> right, •3 horizontal: up -> down, •2 diagonal: 11->33 & 31->13. Returns The list of lines Return type list of list getBoard() Returns a copy of the self.board that will not be updated when a new movement is made Return type BoardState play(mvt) Verifies that the movement of the player follows the rules and writes it on the board. Also sets Movement.turn and registers the movement in the list Game.movements Registers boardS in Game.states Parameters mvt (Movement) – The Movement the player wants to play Returns True if the movement is possible, else False Return type bool reset() Resets the state for a new game thereIsAWinner() Sets Game.winner if there is one. Returns True if there is a winner (ie if 3 dots are aligned), else False Return type bool 6 Chapter 3. Contents: TicTacToe Documentation, Release 0.1 core.BoardState module class BoardState(hash=None) Represents the physical board. Variables state (3-list (line) of 3-list (column)) – The state of the board: initialised with “0”: [[0, 0, 0], [0, 0, 0], [0, 0, 0]] uses player.order to put “1” or “2” where the players play. Parameters hash (int, optional) – If hash is in **kwargs, it will be used to fill the board, default is None. Examples emptyB = BoardState() fullB = BoardState(hash=122121121) __eq__(other) Returns True if self.state and other.state are equal Return type bool __hash__() Returns An integer created by the concatenation of all the cases Return type int Examples [[0, 1, 2], [3, 4, 5], [6, 7, 8]] returns 12345678 Warning: First 0 is gone! __len__() Returns the turn of the board: counts the 0 and deduces the turn T = 9 - nb(0) Return type int __repr__() Returns 3 lines representing the board (plus one line above and one under) with X and O instead of 1 and 2 Return type string copy() Returns A new identical copy of BoardState (useful for storage) Return type BoardState reset() Reset self.state for a new game: to [[0, 0, 0], [0, 0, 0], [0, 0, 0]] unhash(theHash) 3.2. List of all the packages 7 TicTacToe Documentation, Release 0.1 core.Game module class Game Main object, registers the Board and the Players. Variables • boardAR (BoardAndRules) – Reference to the main BoardAndRules instance • and player2 (player1) – References to the players • and nextPlayer (lastPlayer) – References to player1 and player2, are exchanged be- tween the turns • movements (list of Movement) – the chronological list of Movement() played • states (list of BoardStates) – the chronological list of BoardStates() • turn (int) – The present turn of the game, initialised at 0, first turn must be 1 (modified in start() ) • movements – the list of all the Movements made • states – the list of the different BoardState of the game • winner (Player or None) – Defined by BoardAndRules.thereIsAWinner(), stays None is there is none • interactionLevel (InteractionLevel) – used to define the level of printed outputs Warning: movements and states must be updated by boardAR.play() reset() Resets the game for a new game Resets turn, movements, sates, winner, next and last player Calls boardAR.reset() start() Plays a game until it is over, i.e. there is a winner or the game is even How it is working: As long as the game is not over (ie self.turn < 9 and thereIsAWinner == False) there is a loop where: •turn is incremented, •nextPlayer.play() is called and then next and last player are inverted, •if wanted, the board is printed. When it is over, meth:.Player.endOfGame() of player1 and player2 is called - if wanted, the result is printed. core.InteractionLevel module class InteractionLevel This object is used to store the parameters of the simulation. Variables • showEveryMovement (bool) – Print the state of the game after every movement 8 Chapter 3. Contents: TicTacToe Documentation, Release 0.1 3.2.2 players package Submodules players.HAL1Player module class HAL1Player(game, board) Bases: core.Player.Player Subclass of Player, first try of learning player. Variables • memories (Memory) – Advanced dictionary that registers the past games. • saveGame (bool) – Indicates if the game must be saved or not (True by default, set to False if the game is known). • nbOfIntelligentGame (int) – The number of game where the memory have been used. • evolutionOfMemories (list of int) – The lengths of the memory, one entry added at the end hof each game. endOfGame() Record the game if it is not an already know game This function is called when a game is over, it relies on self.saveGame to know if the game must be learn or not. If it is the case, memories.addGame(game) is called. Reset self.saveGame to True at the end. Manages self.evolutionOfMemories openTraining(trainingFileName) Imports a trained memories dictionary play() Play a first random movement and then tries to play intelligently Intelligently means it recognises learned the boardStates that leads to direct victory (in one movement) and plays the winning movement — not so intelligent but self learning ! saveTraining(trainingFileName) Saves a trained memories dictionary players.HumanPlayer module class HumanPlayer(game, boardAR) Bases: core.Player.Player Subclass of Player, asks via the command prompt where to play (line and column, between 1 and 3) play() players.LinePlayer module class LinePlayer(game, boardAR) Bases: core.Player.Player Subclass of Player with an aggressive strategy: first move is random, then checks if there is an unoccupied line with 2 cases already checked by itself and check the last case, (if there is none do the same with a free line where there is already one case checked) 3.2. List of all the packages 11 TicTacToe Documentation, Release 0.1 play() Plays a first random movement and then tries to complete lines players.Memory module class Memory addGame(game) Add a game in the dictionary pastGames : •key = hash of the state before the wining movement •value = the Movement.place (couple [x,y]) that linked to the victory Parameters game (Game) – the ended Game instance to save Warning: Does not check is the result is an even or a victory Module contents This is the Players package: it contains Player’s subclasses that try to develop some kind of intelligence... Importation Do as you want, there is nothing special in the players/__init__.py file. Use To use the imported classes, just write: Game() no need to use core.Game.Game(). This is made possible thanks to the addition of the core/ folder path to the Python path and the use of from core.Game import Game in the __init__.py file. 3.2.3 misc package Submodules misc.Tools module class Analyze static createMovingRatios(resultsList, window) static createTotalRatios(resultsList) static extractMovingAverage(list, window) 12 Chapter 3. Contents: TicTacToe Documentation, Release 0.1 static replaceInList(l, sample, newSample) class Plot static plotMovingRatio(player, window=20) static plotTotalRatio(player) static writeResultsInConsole(resultsList, precision=10) Module contents 3.3 The trash module, just a random test file This is a test file used as a Python interpreter.. Chunks of more or less useful pices of code! 3.3. The trash module, just a random test file 13 TicTacToe Documentation, Release 0.1 16 Chapter 4. Indices and tables Python Module Index c core, 10 core.BoardAndRules, 6 core.BoardState, 7 core.Game, 8 core.InteractionLevel, 8 core.Movement, 9 core.Player, 9 core.PlayerStatistic, 10 core.Simulation, 10 m main, 5 misc, 13 misc.Tools, 12 p players, 12 players.HAL1Player, 11 players.HumanPlayer, 11 players.LinePlayer, 11 players.Memory, 12 t trash, 13 17 TicTacToe Documentation, Release 0.1 18 Python Module Index
Docsity logo



Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved