Skip to content

3 jogadores: tabuleiro em triângulo 🔺 - #6

Merged
neteinstein merged 1 commit into
mainfrom
ccr-74c81847-01fimu
Nov 1, 2026
Merged

neteinstein merged 1 commit into
mainfrom
ccr-74c81847-01fimu

Conversation

@neteinstein

Copy link
Copy Markdown
Owner

Com 3 jogadores, o tabuleiro passa a ser um triângulo grande feito de triângulos pequenos. Cada lado fica virado para um jogador, que começa a meio desse lado. Com 2 ou 4 jogadores o tabuleiro continua quadriculado, sem alterações.

Como fica

  • Tablet em pé: o triângulo aponta para a direita â–¶. O jogador 3 (à esquerda) fica de frente para o lado vertical, e os jogadores 1 (em baixo) e 2 (em cima) ficam de frente para os lados inclinados.
  • Tablet deitado: o jogador 2 passa de cima para a direita e o triângulo aponta para cima â–², com o lado do jogador 1 em baixo. Assim o triângulo aproveita o ecrã inteiro; antes ficava minúsculo entre os painéis de cima e de baixo. Os jogadores aparecem pela mesma ordem à volta do triângulo nas duas posições, por isso rodar o tablet a meio do jogo continua a funcionar.
  • Os triângulos da mesma cor fundem-se em manchas, como os quadrados: os lados partilhados juntam-se, os cantos livres ficam arredondados e há o efeito de relevo nos lados virados para baixo. Por trás está uma placa triangular.
  • Os avatares, as mensagens e o diabinho ficam perpendiculares ao lado de cada jogador.

Implementação

  • src/board.ts: a topologia passou a ser genérica (grelha ou triângulo) e a grelha não mudou. Board.triangle(n) cria n² triângulos, com a casa de cada jogador a meio do seu lado e uma faixa inicial de 5 triângulos. O "avançar" de cada jogador mede a distância a partir do seu lado. triCell/triEdge dão a geometria.
  • src/renderer.ts: novo modo triângulo (drawTri, placa, homeAngle). O tabuleiro é encaixado na sua caixa real, com margem só onde há avatares. paintCell é partilhado entre os dois modos.
  • src/ui/seats.ts: sideOf() põe o jogador 2 à direita quando há 3 jogadores e o tablet está deitado. É usado pelo jogo, pelo menu e pelos cartões de pausa e de resultados.
  • README e ajuda do menu atualizados.

Testes

  • npm test: 63 testes a passar. São novos os testes do tabuleiro triangular (vizinhos partilham um lado inteiro, contagem de vizinhos, casa a meio do lado, crescimento para o centro, KO e inundação) e de quem se senta onde.
  • npm run build OK.
  • Verificado no Chromium (Playwright) com 3 bots em 768×1024, 1024×768 e 600×960: jogo, eliminação, resultados (por KO e por tempo) e menu deitado. A regressão a 2 e a 4 jogadores foi verificada visualmente. Não houve erros na consola.

Generated by Claude Code

With 3 players the board is now a big triangle cut into small triangles,
one side facing each player, who starts in the middle of it.

- Board: generic topology (square grid or triangle); the grid is
  unchanged. Board.triangle(n) builds n² small triangles with each
  player's home mid-side and a 5-triangle starting strip.
- Renderer: triangles merge into blobs like the squares (shared sides
  joined, free corners rounded, candy depth on the sides facing down) on
  a triangular plate; avatars and messages stand perpendicular to their
  side. The board is fitted to its real box, avatars included.
- Upright tablet: the triangle points right â–¶ (player 3 on the left).
  Lying sideways: player 2 moves to the right and the triangle points up
  â–², so it uses the whole screen. Going round the board the order of the
  players is the same, so turning the tablet mid-game still works.
- Tests for the triangle board and the seating; README and help updated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G6VuNHCmVuv78s6tvPmWbJ
@neteinstein
neteinstein merged commit 4625ef9 into main Nov 1, 2026
2 checks passed
@neteinstein
neteinstein deleted the ccr-74c81847-01fimu branch November 1, 2026 11:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants