HN giới thiệu: Pong Wars
(pong-wars.koenvangilst.nl)- Pong Wars là một demo web trực quan hóa cuộc đối đầu giữa ngày và đêm, thiện và ác, theo kiểu Pong
- Trên màn hình hiển thị giá trị day/night như
day 288 | night 288, giúp xem ngay trạng thái hiện tại - Phần triển khai gồm JavaScript và một ít HTML/CSS, được gói trong một file
index.html - Mã có thể tái sử dụng, và trang cho biết người dùng có thể tạo phiên bản của riêng mình
- Trang có ghi chú do Koen van Gilst tạo và liên kết tới mã nguồn GitHub
Cuộc đối đầu giữa ngày và đêm được thể hiện bằng Pong
- Pong Wars là một trang web hiển thị trực quan cuộc đối đầu giữa “day” và “night”
- Trạng thái hiện tại được hiển thị theo định dạng
day 288 | night 288
Triển khai trong một file và có thể tái sử dụng
- Phần triển khai sử dụng JavaScript và HTML/CSS, được chứa trong một file
index.html - Mã có thể tái sử dụng, và người dùng có thể tạo phiên bản của riêng mình
- Trang có ghi chú do Koen van Gilst tạo và liên kết tới mã nguồn GitHub
1 bình luận
Ý kiến trên Hacker News
Mã nguồn liên kết tweet này làm nguồn ý tưởng: https://twitter.com/nicolasdnl/status/1749715070928433161 [nitter: https://nitter.net/nicolasdnl/status/1749715070928433161]
Trích dẫn có nội dung: “Cuộc chiến bất tận #genuary23 #genuary #genuary2024. Đây không phải ý tưởng gốc, tôi từng thấy nó trước đây nhưng không tìm ra đã thấy ở đâu”
Ở đây nói cuộc chiến là bất tận, tôi tò mò liệu có cách nào chứng minh điều đó về mặt toán học không
Ban đầu tôi thấy https://twitter.com/CasualEffects/status/1390290306206216196, và tác giả nói nó xuất phát từ bản gốc pico8. Các phiên bản trước đó cũng có vợt Pong, nhưng khi tôi làm bản demake BASIC, tôi không thể nhét mã vào trong tweet để bbcmicrobot chạy, nên đã bỏ vợt đi
Phiên bản của tôi hơi chậm và vụng về, rồi một người hình như là @rheolism đã đăng một phiên bản nhanh và mượt hơn nhiều bằng cách dùng ký tự tùy chỉnh thay vì vẽ từng điểm, và sau đó tôi cũng thấy có người làm lại bản demake bằng Processing. Những thứ như thế này tự có đời sống riêng của chúng
Tài khoản Twitter đã bị xóa từ lâu, nhưng tôi đã tìm được trong kho lưu trữ
Vì vậy tình huống một quả bóng bị nhốt cực đoan khó có thể kéo dài rất lâu
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))
Vì vùng sở hữu càng nhỏ thì tốc độ sáp nhập càng tăng
Tôi rất mê những thứ kiểu này, nhưng thậm chí không biết có thuật ngữ thể loại nào để phân loại và phân tích chúng không, nên chỉ có thể gọi là “những thứ kiểu này”
Chúng lấy cảm hứng từ thuật toán game nhưng không phải game, và “Game of Life” của Conway cũng có thể nói là bị đặt tên sai. Chúng có chuyển động, nhưng cũng không được kịch bản hóa như hoạt hình thông thường
Trong thế giới thực, những người như David C. Roy gọi tác phẩm của mình là điêu khắc động học
Video thuật toán? Trình mô phỏng game? Automaton tự trị?
Cũng có một bài Wikipedia ngắn: https://en.wikipedia.org/wiki/Zero-player_game
Sửa: xem qua mã thì thấy động lực học va chạm có một chút ngẫu nhiên. Vì vậy khó gọi là “hoàn toàn tất định” trừ khi coi seed của bộ sinh số giả ngẫu nhiên là một phần của điều kiện ban đầu
Có thời gian, quy tắc, v.v., và yếu tố quan trọng là không thể biết trước kết quả
Chính yếu tố cuối đó làm cho việc viết và chạy những chương trình như thế này trở nên thú vị
Con trai 12 tuổi của tôi vừa làm bằng Scratch:
https://scratch.mit.edu/projects/957461584/
Thật sự tuyệt
Hiện tại, khi vùng mà bóng sở hữu nhỏ đi thì với cùng tốc độ sẽ xảy ra nhiều va chạm hơn; có lẽ sẽ thú vị nếu làm tốc độ tỉ lệ với số ô đang sở hữu hoặc với căn bậc hai của số đó
Tôi nghĩ rốt cuộc không bên nào thắng được
Thật sự đẹp ở nhiều tầng nghĩa
Về thẩm mỹ thì chỉ cần ngồi xem cũng thích, còn về triết học thì nó thú vị như một ẩn dụ số cho cuộc đấu tranh không ngừng
Cuối cùng, và cũng là điều thú vị nhất, nó trộn hai ý tưởng cũ rất đơn giản để tạo ra một thứ mới. Làm tốt việc này cực kỳ hiếm
Xin dành thật nhiều lời khen
Nếu có 3 màu thì chắc sẽ thú vị
Khi hai màu còn lại dồn một màu vào góc, nhờ không gian hẹp mà màu đó có thể nhanh chóng chiếm lại các khối và hồi sinh rất nhanh ngay trước khi thua
Tôi cũng thêm thanh trượt tốc độ cho những người ít kiên nhẫn
https://explorers.toxicode.fr/?remoteWorkspace=pong-war
Cũng có bài Mastodon của tác giả gốc: https://hachyderm.io/@vnglst/111828811496422610
Tôi đã thử triển khai bằng C++ và Qt Scene Graph để học
Chia sẻ phòng khi có ai quan tâm: https://invent.kde.org/carlschwan/warpong/-/blob/master/src/...
Ví dụ tương tự: https://contranoid.com/
Cũng có một biến thể Pong khác. Tuy nhiên chỉ dành cho desktop: https://www.obfusco.com/pn0gjs/index.html