Skip to content

Commit

Permalink
version 1.0.14
Browse files Browse the repository at this point in the history
  • Loading branch information
houluy committed Sep 21, 2017
1 parent 3dee7b7 commit 8e1fb7b
Show file tree
Hide file tree
Showing 13 changed files with 100 additions and 42 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,6 @@ Add module-level function `play_game`

## chessboard 1.0.12
Bug fix and Exception handles

## chessboard 1.0.14
Bug fix
46 changes: 23 additions & 23 deletions chessboard/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,32 @@ class PositionError(Exception):
pass

class Chessboard:
def __init__(self, board_size=3, win=3, ch_off='O', ch_def='X', ch_blank=' ', user_number=2):
def __init__(self, board_size=3, win=3, ch_off='O', ch_def='X', ch_blank=' ', user_number=2, game_name=None):
#self.step = 0 #Game step
self.seq = 1 #1 means offensive pos, while 2 means defensive pos
self.character = {1:ch_off, 2:ch_def, 0:ch_blank}
self.seq_dict = {}
self.graph = []
self.board_size = board_size
if board_size > MAX_LOW:
raise ValueError('Board size has reached its limit ({})!'.format(MAX_LOW))
self.win = win
if win > board_size:
if game_name:
if game_name == 'Gomoku':
self.board_size = 15
self.win = 5
elif game_name == 'tictactoe':
self.board_size = 3
self.win = 3
elif game_name == 'fourinarow':
self.board_size = 7
self.win = 4
elif game_name == 'normal':
self.board_size = int(input('Board size: '))
self.win = int(input('Winning chess number: '))
else:
raise ValueError('Unsupported game, please use original Chessboard class!')
if self.board_size > MAX_LOW:
raise ValueError('Board size has reached its limit ({})!'.format(MAX_LOW))
if self.win > self.board_size:
raise ValueError('Winning number exceeds the board size!')
self.user_number = user_number
self.pos_range = range(self.board_size)
Expand Down Expand Up @@ -282,25 +297,11 @@ def rotate_board(self, angle, unit='radian'):
new_pos[xt][yt] = self.pos[x][y]
return new_pos

def play_game(game_name='tictactoe'):
def play_game():
while True:
if game_name == 'Gomoku':
board_size = 15
win = 5
elif game_name == 'tictactoe':
board_size = 3
win = 3
elif game_name == 'fourinarow':
board_size = 7
win = 4
elif game_name == 'normal':
board_size = int(input('Board size: '))
win = int(input('Winning chess number: '))
else:
raise ValueError('Unsupported game, please use original Chessboard class!')

game_name = input('Please input the game name: ')
try:
board = Chessboard(board_size=board_size, win=win)
board = Chessboard(game_name=game_name)
except ValueError as e:
cprint(e)
continue
Expand Down Expand Up @@ -338,5 +339,4 @@ def play_game(game_name='tictactoe'):
board.print_pos(coordinates=a)

if __name__ == '__main__':
game_name = input('What do you want to play:')
play_game(game_name=game_name)
play_game()
Binary file added dist/chessboardCLI-1.0.14.tar.gz
Binary file not shown.
Binary file modified docs/build/doctrees/environment.pickle
Binary file not shown.
Binary file modified docs/build/doctrees/main/main.doctree
Binary file not shown.
24 changes: 20 additions & 4 deletions docs/build/html/_sources/main/main.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,26 +24,28 @@ The Chessboard class

::

chessboard.Chessboard(board_size=3, win=3, ch_off='O', ch_def='X', ch_blank=' ', user_number=2)
chessboard.Chessboard(board_size=3, win=3, ch_off='O', ch_def='X', ch_blank=' ', user_number=2, game_name=None)

* `board_size` defines the size of the chessboard
* `win` defines the number of chess pieces to win in a line
* `ch_off` defines the character of offensive player
* `ch_def` defines the character of defensive player
* `ch_black` defines the character of default place
* `user_number` defines the number of players (No use)
* `game_name` defines the built-in game_name (default None)

Methods
*******
Instance Methods
****************

Some methods to operate the chessboard is listed

::

self.set_pos(x, y, user=None)
self.set_pos(x, y, user=None, check=True)

* `x, y` are the coordinates of chess.
* `user` is the player index.
* `check` whether to check winner after this step

::

Expand Down Expand Up @@ -99,4 +101,18 @@ when call `self.rotate_board(270, 'angle')`
* Undo
* `times` Undo times, default 1

Module-level Method
*******************

::

play_game()

* Four kinds of board games are built-in.
- `fourinarow`
- `Gomoku`
- `tictactoe`
- `normal`
* When `normal`, players are asked to input the size of the board and the number of winnings.
Max size: 61
Max winning: < size
3 changes: 2 additions & 1 deletion docs/build/html/genindex.html
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,8 @@ <h3>Navigation</h3>
<ul>
<li class="toctree-l1"><a class="reference internal" href="main/main.html">Chessboard</a></li>
<li class="toctree-l1"><a class="reference internal" href="main/main.html#init">Init</a></li>
<li class="toctree-l1"><a class="reference internal" href="main/main.html#methods">Methods</a></li>
<li class="toctree-l1"><a class="reference internal" href="main/main.html#instance-methods">Instance Methods</a></li>
<li class="toctree-l1"><a class="reference internal" href="main/main.html#module-level-method">Module-level Method</a></li>
</ul>

<div class="relations">
Expand Down
6 changes: 4 additions & 2 deletions docs/build/html/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,8 @@ <h1>chessboard’s documentation!<a class="headerlink" href="#chessboard-s-docum
<ul>
<li class="toctree-l1"><a class="reference internal" href="main/main.html">Chessboard</a></li>
<li class="toctree-l1"><a class="reference internal" href="main/main.html#init">Init</a></li>
<li class="toctree-l1"><a class="reference internal" href="main/main.html#methods">Methods</a></li>
<li class="toctree-l1"><a class="reference internal" href="main/main.html#instance-methods">Instance Methods</a></li>
<li class="toctree-l1"><a class="reference internal" href="main/main.html#module-level-method">Module-level Method</a></li>
</ul>
</div>
<div class="section" id="indices-and-tables">
Expand Down Expand Up @@ -90,7 +91,8 @@ <h3>Navigation</h3>
<ul>
<li class="toctree-l1"><a class="reference internal" href="main/main.html">Chessboard</a></li>
<li class="toctree-l1"><a class="reference internal" href="main/main.html#init">Init</a></li>
<li class="toctree-l1"><a class="reference internal" href="main/main.html#methods">Methods</a></li>
<li class="toctree-l1"><a class="reference internal" href="main/main.html#instance-methods">Instance Methods</a></li>
<li class="toctree-l1"><a class="reference internal" href="main/main.html#module-level-method">Module-level Method</a></li>
</ul>

<div class="relations">
Expand Down
29 changes: 24 additions & 5 deletions docs/build/html/main/main.html
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ <h1>Chessboard<a class="headerlink" href="#chessboard" title="Permalink to this
<div class="section" id="init">
<h1>Init<a class="headerlink" href="#init" title="Permalink to this headline"></a></h1>
<p>The Chessboard class</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">chessboard</span><span class="o">.</span><span class="n">Chessboard</span><span class="p">(</span><span class="n">board_size</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">win</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">ch_off</span><span class="o">=</span><span class="s1">&#39;O&#39;</span><span class="p">,</span> <span class="n">ch_def</span><span class="o">=</span><span class="s1">&#39;X&#39;</span><span class="p">,</span> <span class="n">ch_blank</span><span class="o">=</span><span class="s1">&#39; &#39;</span><span class="p">,</span> <span class="n">user_number</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">chessboard</span><span class="o">.</span><span class="n">Chessboard</span><span class="p">(</span><span class="n">board_size</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">win</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">ch_off</span><span class="o">=</span><span class="s1">&#39;O&#39;</span><span class="p">,</span> <span class="n">ch_def</span><span class="o">=</span><span class="s1">&#39;X&#39;</span><span class="p">,</span> <span class="n">ch_blank</span><span class="o">=</span><span class="s1">&#39; &#39;</span><span class="p">,</span> <span class="n">user_number</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">game_name</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
</pre></div>
</div>
<ul class="simple">
Expand All @@ -70,17 +70,19 @@ <h1>Init<a class="headerlink" href="#init" title="Permalink to this headline">¶
<li><cite>ch_def</cite> defines the character of defensive player</li>
<li><cite>ch_black</cite> defines the character of default place</li>
<li><cite>user_number</cite> defines the number of players (No use)</li>
<li><cite>game_name</cite> defines the built-in game_name (default None)</li>
</ul>
</div>
<div class="section" id="methods">
<h1>Methods<a class="headerlink" href="#methods" title="Permalink to this headline"></a></h1>
<div class="section" id="instance-methods">
<h1>Instance Methods<a class="headerlink" href="#instance-methods" title="Permalink to this headline"></a></h1>
<p>Some methods to operate the chessboard is listed</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="bp">self</span><span class="o">.</span><span class="n">set_pos</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">user</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="bp">self</span><span class="o">.</span><span class="n">set_pos</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">user</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">check</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</pre></div>
</div>
<ul class="simple">
<li><cite>x, y</cite> are the coordinates of chess.</li>
<li><cite>user</cite> is the player index.</li>
<li><cite>check</cite> whether to check winner after this step</li>
</ul>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="bp">self</span><span class="o">.</span><span class="n">set_pos_on_board_special</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">user</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">board</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">user_number</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
</pre></div>
Expand Down Expand Up @@ -132,6 +134,22 @@ <h1>Methods<a class="headerlink" href="#methods" title="Permalink to this headli
<li>Undo</li>
<li><cite>times</cite> Undo times, default 1</li>
</ul>
</div>
<div class="section" id="module-level-method">
<h1>Module-level Method<a class="headerlink" href="#module-level-method" title="Permalink to this headline"></a></h1>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">play_game</span><span class="p">()</span>
</pre></div>
</div>
<ul class="simple">
<li>Four kinds of board games are built-in.
- <cite>fourinarow</cite>
- <cite>Gomoku</cite>
- <cite>tictactoe</cite>
- <cite>normal</cite></li>
<li>When <cite>normal</cite>, players are asked to input the size of the board and the number of winnings.
Max size: 61
Max winning: &lt; size</li>
</ul>
</div>


Expand All @@ -154,7 +172,8 @@ <h3>Navigation</h3>
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">Chessboard</a></li>
<li class="toctree-l1"><a class="reference internal" href="#init">Init</a></li>
<li class="toctree-l1"><a class="reference internal" href="#methods">Methods</a></li>
<li class="toctree-l1"><a class="reference internal" href="#instance-methods">Instance Methods</a></li>
<li class="toctree-l1"><a class="reference internal" href="#module-level-method">Module-level Method</a></li>
</ul>

<div class="relations">
Expand Down
3 changes: 2 additions & 1 deletion docs/build/html/search.html
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,8 @@ <h3>Navigation</h3>
<ul>
<li class="toctree-l1"><a class="reference internal" href="main/main.html">Chessboard</a></li>
<li class="toctree-l1"><a class="reference internal" href="main/main.html#init">Init</a></li>
<li class="toctree-l1"><a class="reference internal" href="main/main.html#methods">Methods</a></li>
<li class="toctree-l1"><a class="reference internal" href="main/main.html#instance-methods">Instance Methods</a></li>
<li class="toctree-l1"><a class="reference internal" href="main/main.html#module-level-method">Module-level Method</a></li>
</ul>

<div class="relations">
Expand Down
2 changes: 1 addition & 1 deletion docs/build/html/searchindex.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

24 changes: 20 additions & 4 deletions docs/source/main/main.rst
Original file line number Diff line number Diff line change
Expand Up @@ -24,26 +24,28 @@ The Chessboard class

::

chessboard.Chessboard(board_size=3, win=3, ch_off='O', ch_def='X', ch_blank=' ', user_number=2)
chessboard.Chessboard(board_size=3, win=3, ch_off='O', ch_def='X', ch_blank=' ', user_number=2, game_name=None)

* `board_size` defines the size of the chessboard
* `win` defines the number of chess pieces to win in a line
* `ch_off` defines the character of offensive player
* `ch_def` defines the character of defensive player
* `ch_black` defines the character of default place
* `user_number` defines the number of players (No use)
* `game_name` defines the built-in game_name (default None)

Methods
*******
Instance Methods
****************

Some methods to operate the chessboard is listed

::

self.set_pos(x, y, user=None)
self.set_pos(x, y, user=None, check=True)

* `x, y` are the coordinates of chess.
* `user` is the player index.
* `check` whether to check winner after this step

::

Expand Down Expand Up @@ -99,4 +101,18 @@ when call `self.rotate_board(270, 'angle')`
* Undo
* `times` Undo times, default 1

Module-level Method
*******************

::

play_game()

* Four kinds of board games are built-in.
- `fourinarow`
- `Gomoku`
- `tictactoe`
- `normal`
* When `normal`, players are asked to input the size of the board and the number of winnings.
Max size: 61
Max winning: < size
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

setup(
name='chessboardCLI',
version='1.0.12',
version='1.0.14',
description='Chessboard generator in command line',
url='https://github.com/houluy/chessboard',
author='Houlu',
Expand Down

0 comments on commit 8e1fb7b

Please sign in to comment.