diff --git a/DESCRIPTION b/DESCRIPTION
index 3d42f7d..6602e8f 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -2,7 +2,7 @@ Encoding: UTF-8
Package: ppdf
Type: Package
Title: Board Game Setups
-Version: 0.3.0-15
+Version: 0.3.0-16
Authors@R: c(person("Trevor L.", "Davis", role=c("aut", "cre"),
email="trevor.l.davis@gmail.com",
comment = c(ORCID = "0000-0001-6341-4639")))
diff --git a/NAMESPACE b/NAMESPACE
index b7c5253..27ce704 100644
--- a/NAMESPACE
+++ b/NAMESPACE
@@ -35,6 +35,7 @@ export(checker_international_checkers)
export(checker_italian_checkers)
export(checker_jamaican_checkers)
export(checker_julgonu)
+export(checker_kangaroo)
export(checker_lasca)
export(checker_lines_of_action)
export(checker_malaysian_checkers)
@@ -243,10 +244,12 @@ export(piecepack_jamaican_checkers)
export(piecepack_japan)
export(piecepack_japanese_chess)
export(piecepack_julgonu)
+export(piecepack_kangaroo)
export(piecepack_kings_valley)
export(piecepack_klondike)
export(piecepack_lab_rats)
export(piecepack_landlocked)
+export(piecepack_leapfrog)
export(piecepack_ley_lines)
export(piecepack_lines_of_action)
export(piecepack_ludo)
diff --git a/NEWS.md b/NEWS.md
index f064725..ed2bbc4 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -7,6 +7,7 @@ New features
* The following functions generate data frames to setup checkers sets (#49):
+ `checker_dodgem()`
+ + `checker_kangaroo()`
* The following functions generate data frames to setup cubes (#76):
@@ -23,7 +24,9 @@ New features
+ `piecepack_achi()`
+ `piecepack_dara()`
+ `piecepack_dodgem()`
+ + `piecepack_kangaroo()`
+ `piecepack_kings_valley()`
+ + `piecepack_leapfrog()`
+ `piecepack_preview()`
+ `piecepack_seega()`
+ `piecepack_tablan()`
diff --git a/R/checker_games_other.R b/R/checker_games_other.R
index dd6c1e4..dc9597a 100644
--- a/R/checker_games_other.R
+++ b/R/checker_games_other.R
@@ -58,6 +58,10 @@ checker_games_other <- function() {
, "``checker_julgonu()``"
, NA_character_
, "https://en.wikipedia.org/wiki/Jul-Gonu"
+ , "Kangaroo"
+ , "``checker_kangaroo()``"
+ , NA_character_
+ , "https://boardgamegeek.com/boardgame/6132/kangaroo-the-jumping-game"
, "Lines of Action"
, "``checker_lines_of_action()``"
, NA_character_
@@ -133,6 +137,10 @@ checker_julgonu <- function(cell_width = getOption("ppdf.checker_cell_width", 1)
to_checkers(piecepack_julgonu(), cell_width, piece_side = "board_back", suit = 2L)
}
+#' @rdname checker_games_other
+#' @export
+checker_kangaroo <- checker_breakthrough
+
#' @rdname checker_games_other
#' @export
checker_lines_of_action <- function(cell_width = getOption("ppdf.checker_cell_width", 1)) {
diff --git a/R/piecepack_games_other.R b/R/piecepack_games_other.R
index 2270251..9ce9b9b 100644
--- a/R/piecepack_games_other.R
+++ b/R/piecepack_games_other.R
@@ -59,10 +59,18 @@ piecepack_games_other <- function() {
, "``piecepack_evade()``"
, NA_character_
, "https://www.ludism.org/ppwiki/Evade"
+ , "Kangaroo"
+ , "``piecepack_kangaroo()``"
+ , NA_character_
+ , "https://boardgamegeek.com/boardgame/6132/kangaroo-the-jumping-game"
, "King's Valley"
, "``piecepack_kings_valley()``"
, NA_character_
, "https://www.logygames.com/english/kingsvalley.html"
+ , "Leapfrog"
+ , "``piecepack_leapfrog()``"
+ , NA_character_
+ , "https://youtu.be/LWuVDFmPkZs"
, "Lines of Action"
, "``piecepack_lines_of_action()``"
, NA_character_
@@ -177,6 +185,10 @@ piecepack_dodgem <- function(nrows = 6L, variant = "vout") {
#' @export
piecepack_evade <- function() piecepack_rectangular_board(ncols = 6, nrows = 6)
+#' @rdname piecepack_games_other
+#' @export
+piecepack_kangaroo <- piecepack_breakthrough
+
#' @rdname piecepack_games_other
#' @export
piecepack_kings_valley <- function(variant = "standard") {
@@ -210,6 +222,21 @@ piecepack_kings_valley <- function(variant = "standard") {
df
}
+#' @rdname piecepack_games_other
+#' @export
+piecepack_leapfrog <- function() {
+ df_t <- piecepack_rectangular_board(8L, 6L)
+ df_c <- piecepack_coins(
+ side = "back",
+ x = rep.int(1:6, 4L),
+ y = rep(c(8L, 7L, 2L, 1L), each = 6L),
+ suit = rep(c(1L, 2L, 3L, 4L), each = 6L),
+ rank = rep.int(1:6, 4L),
+ angle = rep(c(180, 180, 0, 0), each = 6L)
+ )
+ bind_rows(df_t, df_c)
+}
+
#' @rdname piecepack_games_other
#' @export
piecepack_grasshopper <- function() {
diff --git a/README.md b/README.md
index e031561..c5004ca 100644
--- a/README.md
+++ b/README.md
@@ -168,7 +168,7 @@ animate_game(game, file = "man/figures/README-relativity.gif",
### Checkers Sets
-`{ppdf}` supports the following 32 games playable with a (possibly non-8x8) checkers set:
+`{ppdf}` supports the following 33 games playable with a (possibly non-8x8) checkers set:
* [(American) Checkers AKA (English) Draughts](https://en.wikipedia.org/wiki/Draughts)
* [American Pool Checkers](https://draughts.github.io/american-pool-checkers.html)
@@ -191,6 +191,7 @@ animate_game(game, file = "man/figures/README-relativity.gif",
* [Italian Checkers AKA Italian Draughts](https://en.wikipedia.org/wiki/Italian_draughts)
* [Jamaican Checkers AKA Jamaican Draughts](https://web.archive.org/web/20230605023244/http://poolcheckers.com/jamaica/)
* [Jul-Gonu](https://en.wikipedia.org/wiki/Jul-Gonu)
+* [Kangaroo](https://boardgamegeek.com/boardgame/6132/kangaroo-the-jumping-game)
* [Lasca](http://www.lasca.org)
* [Lines of Action](https://en.wikipedia.org/wiki/Lines_of_Action)
* [Malaysian Checkers AKA Singaporean Checkers](https://brainking.com/en/GameRules?tp=31)
@@ -230,7 +231,7 @@ animate_game(game, file = "man/figures/README-relativity.gif",
### Piecepacks
-`{ppdf}` supports the following 111 games playable with a piecepack deck (plus possibly additional components):
+`{ppdf}` supports the following 113 games playable with a piecepack deck (plus possibly additional components):
* [12345ive!](https://boardgamegeek.com/boardgame/154644/12345ive)
* [Achi](https://en.wikipedia.org/wiki/Achi_(game))
@@ -286,9 +287,11 @@ animate_game(game, file = "man/figures/README-relativity.gif",
* [Jamaican Checkers AKA Jamaican Draughts](https://web.archive.org/web/20230605023244/http://poolcheckers.com/jamaica/)
* [Japan](https://www.ludism.org/ppwiki/Japan)
* [Jul-Gonu](https://www.ludism.org/ppwiki/JulGonu)
+* [Kangaroo](https://boardgamegeek.com/boardgame/6132/kangaroo-the-jumping-game)
* [King's Valley](https://www.logygames.com/english/kingsvalley.html)
* [Lab Rats](https://www.ludism.org/ppwiki/LabRats)
* [Landlocked](https://www.ludism.org/ppwiki/Landlocked)
+* [Leapfrog](https://youtu.be/LWuVDFmPkZs)
* [Ley Lines](https://www.ludism.org/ppwiki/LeyLines)
* [Lines of Action](https://en.wikipedia.org/wiki/Lines_of_Action)
* [Ludo](https://en.wikipedia.org/wiki/Ludo_(board_game))
diff --git a/man/checker_games_other.Rd b/man/checker_games_other.Rd
index 024f8f0..cf47de3 100644
--- a/man/checker_games_other.Rd
+++ b/man/checker_games_other.Rd
@@ -10,6 +10,7 @@
\alias{checker_four_field_kono}
\alias{checker_grasshopper}
\alias{checker_julgonu}
+\alias{checker_kangaroo}
\alias{checker_lines_of_action}
\title{Setups for other games playable with a checkers set}
\usage{
@@ -32,6 +33,8 @@ checker_grasshopper(cell_width = getOption("ppdf.checker_cell_width", 1))
checker_julgonu(cell_width = getOption("ppdf.checker_cell_width", 1))
+checker_kangaroo(cell_width = getOption("ppdf.checker_cell_width", 1))
+
checker_lines_of_action(cell_width = getOption("ppdf.checker_cell_width", 1))
}
\arguments{
@@ -54,7 +57,7 @@ A \code{\link[tibble:tibble]{tibble::tibble()}} data frame with the following co
This data frame is compatible with \code{\link[piecepackr:render_piece]{piecepackr::render_piece()}} and likely \code{\link[ppcli:cat_piece]{ppcli::cat_piece()}}.
}
\description{
-\code{tibble} data frames of setups for 9 other games playable with a checkers set.
+\code{tibble} data frames of setups for 10 other games playable with a checkers set.
Data frame output can usually be plotted with \code{pmap_piece(df, default.units = "in")}.
}
\details{
@@ -68,6 +71,7 @@ Here are links for more information about the various games:\tabular{ll}{
Four Field Kono \tab \url{https://en.wikipedia.org/wiki/Four_Field_Kono} \cr
Grasshopper \tab \url{http://www.cyningstan.com/game/71/grasshopper} \cr
Jul-Gonu \tab \url{https://en.wikipedia.org/wiki/Jul-Gonu} \cr
+ Kangaroo \tab \url{https://boardgamegeek.com/boardgame/6132/kangaroo-the-jumping-game} \cr
Lines of Action \tab \url{https://en.wikipedia.org/wiki/Lines_of_Action} \cr
}
}
diff --git a/man/piecepack_games_other.Rd b/man/piecepack_games_other.Rd
index 9b3632a..8d6dc7f 100644
--- a/man/piecepack_games_other.Rd
+++ b/man/piecepack_games_other.Rd
@@ -9,7 +9,9 @@
\alias{piecepack_dao}
\alias{piecepack_dodgem}
\alias{piecepack_evade}
+\alias{piecepack_kangaroo}
\alias{piecepack_kings_valley}
+\alias{piecepack_leapfrog}
\alias{piecepack_grasshopper}
\alias{piecepack_lines_of_action}
\alias{piecepack_lukawan}
@@ -30,8 +32,12 @@ piecepack_dodgem(nrows = 6L, variant = "vout")
piecepack_evade()
+piecepack_kangaroo()
+
piecepack_kings_valley(variant = "standard")
+piecepack_leapfrog()
+
piecepack_grasshopper()
piecepack_lines_of_action()
@@ -64,7 +70,7 @@ A \code{\link[tibble:tibble]{tibble::tibble()}} data frame with the following co
This data frame is compatible with \code{\link[piecepackr:render_piece]{piecepackr::render_piece()}} and likely \code{\link[ppcli:cat_piece]{ppcli::cat_piece()}}.
}
\description{
-\code{tibble} data frames of setups for 12 other games playable with a piecepack.
+\code{tibble} data frames of setups for 14 other games playable with a piecepack.
Data frame output can usually be plotted with \code{pmap_piece(df, default.units = "in")}.
}
\details{
@@ -78,7 +84,9 @@ Here are links for more information about the various other games:\tabular{ll}{
Dodgem \tab \url{https://en.wikipedia.org/wiki/Dodgem} \cr
Grasshopper \tab \url{http://www.cyningstan.com/game/71/grasshopper} \cr
Evade \tab \url{https://www.ludism.org/ppwiki/Evade} \cr
+ Kangaroo \tab \url{https://boardgamegeek.com/boardgame/6132/kangaroo-the-jumping-game} \cr
King's Valley \tab \url{https://www.logygames.com/english/kingsvalley.html} \cr
+ Leapfrog \tab \url{https://youtu.be/LWuVDFmPkZs} \cr
Lines of Action \tab \url{https://en.wikipedia.org/wiki/Lines_of_Action} \cr
Lukawan \tab \url{https://ludism.org/ppwiki/Lukawan} \cr
Quatri \tab \url{https://www.ludism.org/ppwiki/Quatri} \cr
diff --git a/tests/testthat/_snaps/checker_games_other.md b/tests/testthat/_snaps/checker_games_other.md
index e53b9a1..17418ae 100644
--- a/tests/testthat/_snaps/checker_games_other.md
+++ b/tests/testthat/_snaps/checker_games_other.md
@@ -132,6 +132,30 @@
└─┸─┸─┸─┘
+---
+
+ Code
+ cat_piece(checker_kangaroo())
+ Output
+ ┌─┰─┰─┰─┰─┰─┰─┰─┐
+ │⛂┃⛂┃⛂┃⛂┃⛂┃⛂┃⛂┃⛂│
+ ┝━╋━╋━╋━╋━╋━╋━╋━┥
+ │⛂┃⛂┃⛂┃⛂┃⛂┃⛂┃⛂┃⛂│
+ ┝━╋━╋━╋━╋━╋━╋━╋━┥
+ │ ┃ ┃ ┃ ┃ ┃ ┃ ┃ │
+ ┝━╋━╋━╋━╋━╋━╋━╋━┥
+ │ ┃ ┃ ┃ ┃ ┃ ┃ ┃ │
+ ┝━╋━╋━╋━╋━╋━╋━╋━┥
+ │ ┃ ┃ ┃ ┃ ┃ ┃ ┃ │
+ ┝━╋━╋━╋━╋━╋━╋━╋━┥
+ │ ┃ ┃ ┃ ┃ ┃ ┃ ┃ │
+ ┝━╋━╋━╋━╋━╋━╋━╋━┥
+ │⛀┃⛀┃⛀┃⛀┃⛀┃⛀┃⛀┃⛀│
+ ┝━╋━╋━╋━╋━╋━╋━╋━┥
+ │⛀┃⛀┃⛀┃⛀┃⛀┃⛀┃⛀┃⛀│
+ └─┸─┸─┸─┸─┸─┸─┸─┘
+
+
---
Code
diff --git a/tests/testthat/_snaps/piecepack_games_other.md b/tests/testthat/_snaps/piecepack_games_other.md
index 4ab5d05..1d809a5 100644
--- a/tests/testthat/_snaps/piecepack_games_other.md
+++ b/tests/testthat/_snaps/piecepack_games_other.md
@@ -88,6 +88,30 @@
└─┸─┴─┸─┘
a b c d
+---
+
+ Code
+ cat_piece(piecepack_kangaroo(), annotate = TRUE)
+ Output
+ ┌─┰─┬─┰─┬─┰─┬─┰─┐
+ 8│ɐ⃞┃☀⃝│☀⃝┃☀⃝│☽⃝┃☽⃝│☽⃝┃ɐ⃞│
+ ┝━╋━┿━╋━┿━╋━┿━╋━┥
+ 7│☀⃟┃☀⃝│☀⃝┃☀⃝│☽⃝┃☽⃝│☽⃝┃☽⃟│
+ ├─╂─┼─╂─┼─╂─┼─╂─┤
+ 6│ ┃ │ ┃ │ ┃ │ ┃ │
+ ┝━╋━┿━╋━┿━╋━┿━╋━┥
+ 5│ ┃ │ ┃ │ ┃ │ ┃ │
+ ├─╂─┼─╂─┼─╂─┼─╂─┤
+ 4│ ┃ │ ┃ │ ┃ │ ┃ │
+ ┝━╋━┿━╋━┿━╋━┿━╋━┥
+ 3│ ┃ │ ┃ │ ┃ │ ┃ │
+ ├─╂─┼─╂─┼─╂─┼─╂─┤
+ 2│⸸⃟┃⸸⃝│⸸⃝┃⸸⃝│♛⃝┃♛⃝│♛⃝┃♛⃟│
+ ┝━╋━┿━╋━┿━╋━┿━╋━┥
+ 1│a⃞┃⸸⃝│⸸⃝┃⸸⃝│♛⃝┃♛⃝│♛⃝┃a⃞│
+ └─┸─┴─┸─┴─┸─┴─┸─┘
+ a b c d e f g h
+
---
Code
@@ -117,6 +141,30 @@
a b c d e
+---
+
+ Code
+ cat_piece(piecepack_leapfrog(), annotate = TRUE)
+ Output
+ ┌─┰─┬─┰─┬─┰─┐
+ 8│☀⃝┃☀⃝│☀⃝┃☀⃝│☀⃝┃☀⃝│
+ ┝━╋━┿━╋━┿━╋━┥
+ 7│☽⃝┃☽⃝│☽⃝┃☽⃝│☽⃝┃☽⃝│
+ ├─╂─┼─╂─┼─╂─┤
+ 6│ ┃ │ ┃ │ ┃ │
+ ┝━╋━┿━╋━┿━╋━┥
+ 5│ ┃ │ ┃ │ ┃ │
+ ├─╂─┼─╂─┼─╂─┤
+ 4│ ┃ │ ┃ │ ┃ │
+ ┝━╋━┿━╋━┿━╋━┥
+ 3│ ┃ │ ┃ │ ┃ │
+ ├─╂─┼─╂─┼─╂─┤
+ 2│♛⃝┃♛⃝│♛⃝┃♛⃝│♛⃝┃♛⃝│
+ ┝━╋━┿━╋━┿━╋━┥
+ 1│⸸⃝┃⸸⃝│⸸⃝┃⸸⃝│⸸⃝┃⸸⃝│
+ └─┸─┴─┸─┴─┸─┘
+ a b c d e f
+
---
Code
diff --git a/tests/testthat/test-checker_games_other.R b/tests/testthat/test-checker_games_other.R
index c5a0d54..df6e030 100644
--- a/tests/testthat/test-checker_games_other.R
+++ b/tests/testthat/test-checker_games_other.R
@@ -9,5 +9,6 @@ test_that("checker other games work as expected", {
expect_snapshot(cat_piece(checker_four_field_kono()))
expect_snapshot(cat_piece(checker_grasshopper()))
expect_snapshot(cat_piece(checker_julgonu()))
+ expect_snapshot(cat_piece(checker_kangaroo()))
expect_snapshot(cat_piece(checker_lines_of_action()))
})
diff --git a/tests/testthat/test-games_info.R b/tests/testthat/test-games_info.R
index 892966e..ef5714e 100644
--- a/tests/testthat/test-games_info.R
+++ b/tests/testthat/test-games_info.R
@@ -1,12 +1,12 @@
test_that("*_games() row counts", {
expect_equal(nrow(alquerque_games()), 2L)
- expect_equal(nrow(checker_games()), 32L)
+ expect_equal(nrow(checker_games()), 33L)
expect_equal(nrow(chess_games()), 5L)
expect_equal(nrow(domino_games()), 10L)
expect_equal(nrow(go_games()), 2L)
expect_equal(nrow(marble_games()), 0L)
expect_equal(nrow(morris_games()), 7L)
- expect_equal(nrow(piecepack_games()), 111L)
+ expect_equal(nrow(piecepack_games()), 113L)
expect_equal(nrow(reversi_games()), 2L)
expect_equal(nrow(stackpack_games()), 10L)
expect_equal(nrow(tarot_games()), 0L)
diff --git a/tests/testthat/test-piecepack_games_other.R b/tests/testthat/test-piecepack_games_other.R
index 0fa1985..935c1af 100644
--- a/tests/testthat/test-piecepack_games_other.R
+++ b/tests/testthat/test-piecepack_games_other.R
@@ -6,7 +6,9 @@ test_that("piecepack other games work as expected", {
expect_snapshot(cat_piece(piecepack_breakthrough(), annotate = TRUE))
expect_snapshot(cat_piece(piecepack_change_change(seed = 37), annotate = TRUE))
expect_snapshot(cat_piece(piecepack_dao(), annotate = TRUE))
+ expect_snapshot(cat_piece(piecepack_kangaroo(), annotate = TRUE))
expect_snapshot(cat_piece(piecepack_kings_valley(), annotate = TRUE))
+ expect_snapshot(cat_piece(piecepack_leapfrog(), annotate = TRUE))
expect_snapshot(cat_piece(
piecepack_kings_valley(variant = "retrieve the king"),
annotate = TRUE