fix. férovější výběr cíle u Tetrisu, odrážení odpadu

This commit is contained in:
mates committed 2026-10-19 16:37:27 +02:00
1 parent 8a7dbd94c8
commit ed64fc60e4
5 files changed
+79 -17

No files matched your search

+25
View File
@@ -68,6 +68,31 @@ describe('tetris', () => {
expect(ctx.garbage.map(g => g.lines)).toEqual([1, 2]);
});
test('útok jde soupeři, který dostal nejméně odpadu', () => {
const ctx = setup();
ctx.startGame('alice', 'bob', 'carol', 'dave');
ctx.game.cleared('alice', 4); // všichni 0 → první z nich (random = 0)
ctx.clock.advance(MIN_ATTACK_GAP_MS);
ctx.game.cleared('alice', 2);
ctx.clock.advance(MIN_ATTACK_GAP_MS);
ctx.game.cleared('alice', 3);
ctx.game.cleared('bob', 2); // carol 1, dave 2, alice 0 → alice
ctx.game.cleared('carol', 2); // alice 1, bob 4, dave 2 → alice
expect(ctx.garbage.map(g => g.target)).toEqual(['bob', 'carol', 'dave', 'alice', 'alice']);
});
test('odražený odpad zmenší útok, víc než tabulka poslat nejde', () => {
const ctx = setup();
ctx.startGame('alice', 'bob');
ctx.game.cleared('alice', 4, 1);
ctx.clock.advance(MIN_ATTACK_GAP_MS);
ctx.game.cleared('alice', 2, 0); // vše odraženo → žádný útok
ctx.game.cleared('alice', 2, 50);
ctx.clock.advance(MIN_ATTACK_GAP_MS);
ctx.game.cleared('alice', 3, -5);
expect(ctx.garbage.map(g => g.lines)).toEqual([1, 1]);
});
test('poslední hráč ve hře vyhrává', () => {
const ctx = setup();
ctx.startGame('alice', 'bob', 'carol');