Show HN: Pong Wars
(pong-wars.koenvangilst.nl)- Pong Wars é uma demonstração web que visualiza como um Pong o confronto entre dia e noite, bem e mal
- A tela exibe valores de day/night, como
day 288 | night 288, permitindo ver o estado atual imediatamente - A implementação é composta por JavaScript e um pouco de HTML/CSS, reunidos em um único
index.html - O código é reutilizável, e a página indica que os usuários podem criar suas próprias versões
- A página traz o crédito de criação para Koen van Gilst e um link para o código-fonte no GitHub
O confronto entre dia e noite representado em Pong
- Pong Wars é uma página web que mostra visualmente o confronto entre “day” e “night”
- O estado atual é exibido no formato
day 288 | night 288
Implementação em arquivo único e reutilização
- A implementação usa JavaScript e HTML/CSS, e está contida em um único arquivo
index.html - O código pode ser reutilizado, e os usuários podem criar suas próprias versões
- A página traz o crédito de criação para Koen van Gilst e um link para o código-fonte no GitHub
1 comentários
Comentários do Hacker News
O código aponta este tweet como fonte da ideia: https://twitter.com/nicolasdnl/status/1749715070928433161 [nitter: https://nitter.net/nicolasdnl/status/1749715070928433161]
A citação diz: “Luta sem fim #genuary23 #genuary #genuary2024. A ideia não é originalmente minha; já vi isso antes, mas não consigo encontrar onde”
Aqui se diz que a luta é sem fim, e fico curioso se há alguma forma de provar isso matematicamente
Originalmente eu tinha visto https://twitter.com/CasualEffects/status/1390290306206216196, e o autor disse que vinha de um original em pico8. Essas versões anteriores também tinham raquetes de Pong, mas, quando fiz meu demake em BASIC, não consegui colocar o código no tweet para o bbcmicrobot executar, então removi as raquetes
Minha versão era meio lenta e grosseira, mas alguém que acho que era @rheolism postou uma versão muito mais rápida e suave usando caracteres personalizados em vez de desenhar pontos, e depois também vi um demake recriado em Processing. Essas coisas acabam ganhando vida própria
Apaguei minha conta do Twitter há muito tempo, mas encontrei no arquivo
Por isso, uma situação em que uma bola fica extremamente encurralada dificilmente dura muito tempo
x1 = y1 = y3 = squareSize, x2 = canvas.width - squareSize
squares = Array.from({ length: numSquaresX }, (, i) =>
Array.from({ length: numSquaresY }, (, j) =>
i === 0 && j === 0 ? TEAM1 : TEAM2))
Porque, quanto menor fica a área possuída, maior fica a taxa de incorporação
Sou muito fascinado por esse tipo de coisa, mas nem sei se existe um termo de gênero para classificar e analisar, então só consigo chamar de “esse tipo de coisa”
É inspirado em algoritmos de jogos, mas não é um jogo, e o “Game of Life” de Conway também tem um nome meio equivocado. Ele se move, mas não é roteirizado como uma animação comum
No mundo real, pessoas como David C. Roy chamam seus trabalhos de esculturas cinéticas
Vídeos algorítmicos? Simuladores de jogos? Autômatos autônomos?
Há também um artigo curto na Wikipedia: https://en.wikipedia.org/wiki/Zero-player_game
Edit: dando uma olhada rápida no código, há um pouco de aleatoriedade na dinâmica das colisões. Então é difícil dizer que é “totalmente determinístico”, a menos que a semente do gerador pseudoaleatório seja considerada parte das condições iniciais
Há tempo, regras etc., e o elemento importante é que não dá para saber o resultado de antemão
Esse último elemento é o que torna interessante escrever e executar esse tipo de programa
Meu filho de 12 anos acabou de fazer isto no Scratch:
https://scratch.mit.edu/projects/957461584/
Muito legal
Atualmente, quanto menor a área possuída pela bola, mais colisões acontecem na mesma velocidade; seria interessante fazer a velocidade ser proporcional ao número de casas possuídas ou à sua raiz quadrada
Acho que nenhum dos lados vai vencer no fim
Beleza de verdade em vários níveis
Esteticamente, é simplesmente agradável sentar e assistir; filosoficamente, é interessante como metáfora digital de uma luta contínua
Por fim, e mais interessante, ele mistura duas ideias antigas muito simples para criar algo novo. Fazer isso bem é extremamente raro
Meus elogios, muitos mesmo
Com 3 cores, acho que ficaria interessante
Se as outras duas encurralarem uma delas num canto, o espaço estreito permitiria roubar blocos rapidamente e se recuperar logo à beira da derrota
Também coloquei um controle deslizante de velocidade para os menos pacientes
https://explorers.toxicode.fr/?remoteWorkspace=pong-war
Também há o post do Mastodon do autor original: https://hachyderm.io/@vnglst/111828811496422610
Implementei em C++ e Qt Scene Graph para fins de aprendizado
Compartilho caso alguém tenha interesse: https://invent.kde.org/carlschwan/warpong/-/blob/master/src/...
Exemplo parecido: https://contranoid.com/
Há também outra variação de Pong. Mas é apenas para desktop: https://www.obfusco.com/pn0gjs/index.html