From d6a3de2fd04c6d383cd924718ec5efccd944a38a Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Wed, 24 Feb 2021 22:07:48 -0500 Subject: [PATCH] Add Board.peg_count. --- src/pegp/board.d | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/pegp/board.d b/src/pegp/board.d index e35df80..6a74e8a 100644 --- a/src/pegp/board.d +++ b/src/pegp/board.d @@ -3,6 +3,7 @@ module pegp.board; class Board { private int m_size; + private int m_peg_count; private bool[] m_pegs; enum Direction @@ -42,12 +43,19 @@ class Board m_pegs = new bool[n_pegs]; m_pegs[] = true; m_pegs[0] = false; + m_peg_count = n_pegs - 1; } this(Board b) { m_size = b.m_size; m_pegs = b.m_pegs.dup; + m_peg_count = b.m_peg_count; + } + + @property int peg_count() + { + return m_peg_count; } private int peg_index(int row, int col) @@ -78,11 +86,13 @@ class Board void remove_peg(Position p) { m_pegs[peg_index(p.row, p.col)] = false; + m_peg_count--; } void add_peg(Position p) { m_pegs[peg_index(p.row, p.col)] = true; + m_peg_count++; } Board move(Position p, Direction d) @@ -103,6 +113,7 @@ class Board unittest { Board b = new Board(5); + assert(b.peg_count == 14); assert(b.position_valid(Position(0, 0))); assert(b.position_valid(4, 0)); assert(b.position_valid(4, 4)); @@ -155,5 +166,6 @@ class Board assert(!b2.peg_present(2, 0)); assert(!b2.peg_present(1, 0)); assert(b2.peg_present(0, 0)); + assert(b2.peg_count == 13); } }