Skip to content

Commit 6254f7a

Browse files
authored
Merge pull request #290 from mcdemarco/develop
2 parents b306310 + 1ba009f commit 6254f7a

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

src/games/frogger.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1072,7 +1072,10 @@ export class FroggerGame extends GameBase {
10721072
} else if (currmove === "") {
10731073
//Deal with the refill button.
10741074
if (this.variants.includes("refills") && piece === "refill") {
1075-
newmove = `${move.slice(0,-1)}!/`;
1075+
if (move.indexOf("!") < 0)
1076+
newmove = `${move.slice(0,-1)}!/`;
1077+
else
1078+
newmove = move;
10761079
} else {
10771080
// starting another move (forward).
10781081
newmove = `${move}${piece!.substring(1)}:`;

test/games/frogger.test.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,22 @@ describe("Frogger", () => {
351351

352352
});
353353

354+
it ("Implements the refills market variant", () => {
355+
const g = new FroggerGame(`{"game":"frogger","numplayers":2,"variants":["courts","#market","refills"],"gameover":false,"winner":[],"stack":[{"_version":"20251220","_results":[],"_timestamp":"2025-12-29T03:38:17.329Z","currplayer":1,"board":{"dataType":"Map","value":[["b4","7VY"],["c4","PVLY"],["d4","PMSL"],["e4","2MK"],["f4","3LY"],["g4","PMYK"],["h4","5ML"],["i4","8YK"],["j4","NY"],["k4","PSVK"],["l4","1L"],["m4","6MV"],["a3","X1-6"],["a2","X2-6"]]},"closedhands":[["TSLK","NM","9LK","TMLY"],["9MS","7SK","1K","2VL"]],"hands":[[],[]],"market":["NS","3SK","TMVK","5YK","TSVY","NV"],"discards":[],"nummoves":3}]}`);
356+
//Setup.
357+
g.move("NM:a3-d3/9LK:a3-c2/TSLK:a3-d2/");
358+
g.move("9MS:a2-k3/7SK:a2-n2/1K:k3-n2/");
359+
g.move("d3-c3,5YK/c2-b2,TMVK/d2-c2,TSVY/");
360+
g.move("2VL:a2-d1/d1-c1,3SK/c1-b3,NS/");
361+
//Player one attempts to refill the market.
362+
expect(g.validateMove("5YK:b2-e2/e2-d2,NV!/")).to.have.deep.property("valid", true);
363+
364+
//Eat double refill clicks.
365+
expect(g.handleClick("5YK:b2-e2/e2-d2,NV/", -1, -1, "refill")).to.have.deep.property("move", "5YK:b2-e2/e2-d2,NV!/");
366+
expect(g.handleClick("5YK:b2-e2/e2-d2,NV!/", -1, -1, "refill")).to.have.deep.property("move", "5YK:b2-e2/e2-d2,NV!/");
367+
368+
});
369+
354370
it ("Implements the original market rules", () => {
355371
const g = new FroggerGame(`{"game":"frogger","numplayers":2,"variants":["courtpawns"],"gameover":false,"winner":[],"stack":[{"_version":"20251229","_results":[],"_timestamp":"2025-12-31T23:44:13.590Z","currplayer":1,"board":{"dataType":"Map","value":[["b4","3SK"],["c4","7VY"],["d4","TSVY"],["e4","5YK"],["f4","2SY"],["g4","8MS"],["h4","3LY"],["i4","TSLK"],["j4","1Y"],["k4","TMLY"],["l4","1S"],["m4","TMVK"],["a3","X1-6"],["a2","X2-6"]]},"closedhands":[["1L","1K","6LK","6SY"],["NY","1V","NS","NM"]],"hands":[[],[]],"market":["9LK","NK","9VY","8YK","2MK","6MV"],"discards":[],"nummoves":3}]}`);
356372

@@ -363,6 +379,7 @@ describe("Frogger", () => {
363379
//Second move is back to the Excuse.
364380
expect(g.validateMove("NY:a2-c2/c2-b2,NK/b2-a2,9LK/")).to.have.deep.property("valid", false);
365381
expect(g.validateMove("NY:a2-c2/c2-b2,9VY/b2-a2,NK/")).to.have.deep.property("valid", true);
382+
366383
});
367384

368385
it ("Implements the free swim variant", () => {

0 commit comments

Comments
 (0)