Skip to content

Commit 9ac94cb

Browse files
authored
Merge pull request #399 from jpneto/develop
Added Tricouleur
2 parents a0bdfcb + 0afbebf commit 9ac94cb

5 files changed

Lines changed: 814 additions & 11 deletions

File tree

locales/en/apgames.json

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,7 @@
236236
"terrace": "A royal capture/escape game played on a three-dimensional board with pieces of various sizes.",
237237
"toguz": "A traditional mancala-style sowing game from central Asia where you attempt to capture the majority of the pieces.",
238238
"trax": "A game of loops and lines. Place tiles adjacent to those already in play such that the colours of the tracks match. The objective is to get a loop or line of your colour while attempting to stop your opponent in their colour. What gives Trax its strategic depth is the forced play rule which allows (or even requires) multiple tiles to be played in a turn.",
239+
"tricouleur": "A game where Ataxx meets Rock-Paper-Scissors.",
239240
"trike": "Trike is a game on a triangular board. Players take turn moving a neutral pawn around the board (passing is not allowed). When a player moves the pawn, they place a checker of their own color, onto the destination point. When the pawn is trapped, the game is over. At the end of the game, each player gets a point for each checker of their own color adjacent to, or underneath, the pawn. The person with the highest score wins.",
240241
"tritium": "Two players take turns creating and growing regions and claiming them. Once the board is full, the player who controls most tiles wins.",
241242
"tumbleweed": "Tumbleweed is a game of line of sight. Towers are built, and cells are controlled by the player with the most towers that can see that cell. Compete to control the majority of the hexagonal board.",
@@ -331,6 +332,7 @@
331332
"tbt": "When it's your turn, you will see the die you have to work with, but once your move is complete, the die will reroll. Exploration is not helpful because the die roll is not finalized until after the move is submitted. As you scroll back through the game history, the die you see is for the *next* turn. The die used to make the move you're seeing is displayed below the board.",
332333
"terrace": "The Assassination variant is described in [this BGG thread](https://boardgamegeek.com/thread/551125/variant-for-more-aggressive-less-drawish-play), summarized below:\n\n- Up straight, you must be larger or a smallest-size piece can assassinate a largest-size piece.\n\n- Same level (orthogonally adjacent only), you must be at least the same size.\n\n- Down diagonal, you may be one rank smaller.",
333334
"toguz": "Depicting state changes in sowing games is challenging. The initial chosen pit is marked, as is any capture. Small numbers appear to show the change in the number of stones in each pit. If you believe you have encountered a bug, please let us know in Discord.",
335+
"tricouleur": "Tricouleur is a 2005 game designed by Bill Taylor. Each player has a army of three types of pieces that are able to capture the next type, in a cyclic way: think Rock-Paper-Scissors. The move sequence is 12* where a player must use different pieces (it is also possible to pass the entire turn). A piece may move to an empty neighboring cell, in which case it leaves an unmoved duplicate behind; or to an empty cell among the twelve 2nd-neighbours, regardless of what is in between.\n\nAny weaker opponent-pieces that the moved piece becomes adjacent to, are recolored as the moving piece. Any same-strength opponent-pieces that the moved piece becomes adjacent to, are removed from the board. When the board is full, or both pass consecutively, the game ends, and whoever has the most pieces of their own colours in total, wins.",
334336
"tumbleweed": "A space is claimed by a player if they have a piece on it, or if they have the majority of the line of sights to it. The score is the number of territory own by each player. The game ends when both players pass in succession. If there is no change in score for 20 plies, the game also ends.",
335337
"twinflames": "Twin Flames is a 2026 redesign of the 2013's Product, an original concept by Nick Bentley. The first player must initially place a friendly stone, preventing overly strong opening countermoves and thereby eliminating the need for a pie rule. The remaining moves use a 12* sequence, in which players may place stones of either colour. At the end of the game, a player who has formed a single connected group scores points equal to the size of that group. Another ludeme introduced was the use of walls, or blockers, which reduce overall connectivity and make groups more robust to enemy attacks. The blocker configuration is randomized, increasing game variability and making opening theory more difficult to develop.",
336338
"twixt": "The notation is based on Hansel notation at <http://www.ibiblio.org/twixtpuzzles/>. Some modifications are that link removal specifically specifies the link direction, and commas separate the moves. To add/remove links, click on the pegs between them. You can also remove a link by clicking on the line itself.",
@@ -1996,13 +1998,13 @@
19961998
"size-6": {
19971999
"name": "5x6 board"
19982000
},
1999-
"#board": {
2001+
"size-8": {
20002002
"name": "7x8 board"
20012003
},
20022004
"size-10": {
20032005
"name": "9x10 board"
20042006
},
2005-
"size-12": {
2007+
"#board": {
20062008
"name": "11x12 board"
20072009
},
20082010
"size-14": {
@@ -3188,6 +3190,20 @@
31883190
"description": "The board is limited to 8x8. If all the tiles that can be played without a win being achieved have been played, the player who plays the last tile loses."
31893191
}
31903192
},
3193+
"tricouleur": {
3194+
"hex-7": {
3195+
"name": "Size 7 board"
3196+
},
3197+
"#board": {
3198+
"name": "Size 8 board"
3199+
},
3200+
"hex-9": {
3201+
"name": "Size 9 board"
3202+
},
3203+
"hex-10": {
3204+
"name": "Size 10 board"
3205+
}
3206+
},
31913207
"trike": {
31923208
"#board": {
31933209
"name": "Triangle (11 wide)",
@@ -6573,6 +6589,18 @@
65736589
"NO_EXPAND_X": "You may not expand the board beyond a width of {{size}}.",
65746590
"NO_EXPAND_Y": "You may not expand the board beyond a height of {{size}}."
65756591
},
6592+
"tricouleur": {
6593+
"INITIAL_INSTRUCTIONS": "Select a piece to duplicate or jump. Rocks are represented as cogs, Paper as squares, and Scissors as Xs.",
6594+
"INITIAL_INSTRUCTIONS_PASS": "You have no moves so you must pass.",
6595+
"INVALID_TO": "The piece at {{from}} cannot duplicate or jump to {{to}}.",
6596+
"MUST_PASS": "The only move available to you is to pass.",
6597+
"ILLEGAL_PASS": "You may only pass has a whole move.",
6598+
"SAME_PIECE": "The second move must be from a different piece than the ones moved or changed in the first.",
6599+
"NO_TOS": "The selected piece at {{from}} has no possible destinations to duplicate or jump to.",
6600+
"SELECT_TO": "Select a destination to duplicate or jump to.",
6601+
"SPLIT4JUMP": "You have indicated a duplicate when it's supposed to be a jump. Try {{move}}.",
6602+
"JUMP4SPLIT": "You have indicated a jump when it's supposed to be a duplicate. Try {{move}}."
6603+
},
65766604
"trike": {
65776605
"INITIAL_INSTRUCTIONS": "Select the cell to place the neutral piece on."
65786606
},

src/games/index.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,7 @@ import { PolluxGame, IPolluxState } from "./pollux";
258258
import { PippinzipGame, IPippinzipState } from "./pippinzip";
259259
import { NarrowsGame, INarrowsState } from "./narrows";
260260
import { InvectorGame, IInvectorState } from "./invector";
261+
import { TricouleurGame, ITricouleurState } from "./tricouleur";
261262

262263
export {
263264
APGamesInformation, GameBase, GameBaseSimultaneous, IAPGameState,
@@ -519,6 +520,7 @@ export {
519520
PippinzipGame, IPippinzipState,
520521
NarrowsGame, INarrowsState,
521522
InvectorGame, IInvectorState,
523+
TricouleurGame, ITricouleurState,
522524
};
523525

524526
const games = new Map<string, typeof AmazonsGame | typeof BlamGame | typeof CannonGame |
@@ -608,7 +610,7 @@ const games = new Map<string, typeof AmazonsGame | typeof BlamGame | typeof Cann
608610
typeof MinimizeGame | typeof HalmaClimbersGame | typeof SynapseGame |
609611
typeof AtariGoGame | typeof TanboGame | typeof UnaneGame |
610612
typeof LinageGame | typeof PolluxGame | typeof PippinzipGame |
611-
typeof NarrowsGame | typeof InvectorGame
613+
typeof NarrowsGame | typeof InvectorGame | typeof TricouleurGame
612614
>();
613615
// Manually add each game to the following array
614616
[
@@ -648,7 +650,7 @@ const games = new Map<string, typeof AmazonsGame | typeof BlamGame | typeof Cann
648650
XanaGame, SporaGame, SquirmGame, PinchGame, DomineeringGame, TwinFlamesGame, YGame, ShapeChessGame,
649651
SlimetrailGame, CatsDogsGame, SoccolotGame, CourtGame, HalmaGame, MinimizeGame, HalmaClimbersGame,
650652
SynapseGame, AtariGoGame, TanboGame, UnaneGame, LinageGame, PolluxGame, PippinzipGame, NarrowsGame,
651-
InvectorGame
653+
InvectorGame, TricouleurGame
652654
].forEach((g) => {
653655
if (games.has(g.gameinfo.uid)) {
654656
throw new Error("Another game with the UID '" + g.gameinfo.uid + "' has already been used. Duplicates are not allowed.");
@@ -1176,6 +1178,8 @@ export const GameFactory = (game: string, ...args: any[]): GameBase|GameBaseSimu
11761178
return new NarrowsGame(...args);
11771179
case "invector":
11781180
return new InvectorGame(...args);
1181+
case "tricouleur":
1182+
return new TricouleurGame(...args);
11791183
}
11801184
return;
11811185
}

src/games/narrows.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,12 @@ export class NarrowsGame extends GameBase {
4949
],
5050
categories: ["goal>unify", "mechanic>move", "mechanic>capture", "board>shape>rect", "board>connect>rect", "components>simple>1per"],
5151
variants: [
52-
{ uid: "size-6", group: "board" }, // 5x6
53-
{ uid: "#board", }, // 7 rows x 8 cols
54-
{ uid: "size-10", group: "board" }, // 9x10
55-
{ uid: "size-12", group: "board" }, // 11x12
56-
{ uid: "size-14", group: "board" }, // 13x14
57-
{ uid: "size-16", group: "board" }, // 15x16
52+
{ uid: "size-6", group: "board" }, // 5 rows x 6 cols
53+
{ uid: "size-8", group: "board" }, // 7 x 8
54+
{ uid: "size-10", group: "board" }, // 9 x 10
55+
{ uid: "#board", }, // 11 x 12
56+
{ uid: "size-14", group: "board" }, // 13 x 14
57+
{ uid: "size-16", group: "board" }, // 15 x 16
5858
],
5959
flags: ["pie", "experimental"]
6060
};

src/games/pippinzip.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -527,7 +527,7 @@ export class PippinzipGame extends GameBase {
527527
{ name: "Pip/Line", piece: "B" }
528528
],
529529
position: "left",
530-
height: 0.5,
530+
height: 0.45,
531531
clickable: false,
532532
}
533533
],

0 commit comments

Comments
 (0)