Wiki
Mã nguồn trò chơi khủng long Chrome
Bên trong mã nguồn mở đằng sau T-Rex Runner của Google

Trò chơi khủng long Chrome là một phần của dự án mã nguồn mở Chromium, vì vậy việc triển khai hiện tại của nó có thể được kiểm tra trực tiếp trong kho mã nguồn của Google. Tính đến tháng 7 năm 2026, trò chơi nằm trong components/neterror/resources/dino_game/. Bộ điều khiển Runner chính nằm trong offline.ts, trong khi tính điểm, T-Rex, chướng ngại vật, đường chân trời, sprite, trạng thái trò chơi và âm thanh được chia thành các mô-đun TypeScript chuyên biệt. Các giải thích cũ hơn mô tả một tệp offline.js hiện tại đang đề cập đến một kiến trúc Chromium trước đó. Trò chơi vẫn sử dụng API HTML Canvas và các nguyên thủy thời gian của trình duyệt thay vì một công cụ trò chơi của bên thứ ba. Runner điều phối đầu vào và trạng thái, Trex sở hữu hành vi nhảy và cúi người, Obstacle và Horizon quản lý thế giới chuyển động, và DistanceMeter chuyển đổi khoảng cách thành điểm số hiển thị. distance_meter.ts hiện tại cũng chứng minh rằng màn hình mở rộng từ năm lên sáu chữ số sau 99.999. Đối với các nhà phát triển, mã này là một ví dụ nhỏ gọn hữu ích về TypeScript mô-đun, lối chơi dựa trên cấu hình, hỗ trợ tiếp cận, hoạt ảnh sprite, phát hiện va chạm và vòng lặp requestAnimationFrame.
Các lớp và kiến trúc chính
Mã nguồn trò chơi khủng long Chrome hiện tại được tổ chức thành các mô-đun chuyên biệt: - offline.ts / Runner: điều phối vòng lặp trò chơi, đầu vào, tốc độ, trạng thái điểm số, hành vi tạm dừng/khởi động lại và khả năng tiếp cận.
- trex.ts: quản lý vật lý nhảy, cúi người, trạng thái hoạt ảnh và hộp va chạm.
- obstacle.ts: định nghĩa chuyển động và hành vi sinh ra của xương rồng và pterodactyl.
- horizon.ts và các tệp liên quan: vẽ mặt đất, mây, mặt trăng, chế độ ban đêm và thế giới cuộn.
- distance_meter.ts: chuyển đổi khoảng cách thành điểm số, vẽ điểm cao, hiển thị thành tích và mở rộng màn hình sau năm chữ số ban đầu.
- game_config.ts và các tệp định nghĩa sprite: giữ tốc độ, khoảng cách, chế độ và vị trí tài sản dựa trên cấu hình. Bố cục TypeScript mô-đun này đã thay thế cấu trúc JavaScript một tệp cũ hơn.
Cách vòng lặp trò chơi hoạt động
Trò chơi sử dụng vòng lặp requestAnimationFrame tiêu chuẩn. Mỗi khung hình, phương thức Runner.update: 1. Tính toán thời gian đã trôi qua kể từ khung hình cuối cùng
2. Cập nhật tốc độ trò chơi dựa trên khoảng cách đã trôi qua
3. Di chuyển tất cả các chướng ngại vật theo tốc độ hiện tại của chúng
4. Kiểm tra va chạm giữa T-Rex và bất kỳ chướng ngại vật nào
5. Cập nhật điểm số và đồng hồ khoảng cách
6. Xóa canvas và vẽ lại tất cả các yếu tố
7. Lên lịch cho khung hình tiếp theo Nếu phát hiện va chạm, trò chơi sẽ chuyển sang trạng thái 'đã va chạm', phát một hoạt ảnh ngắn và chờ người chơi nhấn phím cách để khởi động lại. Toàn bộ trò chơi chạy ở tốc độ mục tiêu 60 khung hình mỗi giây, với bù trừ thời gian delta để đảm bảo vật lý nhất quán trên cả màn hình nhanh và chậm.
Học hỏi từ cơ sở mã
Mã nguồn hiện tại thể hiện một số ý tưởng kỹ thuật hữu ích trong một tính năng sản xuất thực tế: - Trách nhiệm mô-đun: trình chạy, nhân vật, thế giới, điểm số, trạng thái và tài sản là các mô-đun TypeScript riêng biệt.
- Đầu vào dựa trên sự kiện: bàn phím, con trỏ, cảm ứng, khả năng hiển thị, tiêu điểm và các sự kiện gamepad cung cấp cùng một trạng thái trò chơi.
- Trạng thái rõ ràng: hành vi chờ đợi, chạy, nhảy, cúi người, tạm dừng và va chạm được thể hiện trực tiếp.
- Lối chơi dựa trên cấu hình: gia tốc, tốc độ tối đa, khoảng cách chướng ngại vật, hệ số di động và các chế độ thay thế được điều khiển bằng dữ liệu.
- Khả năng tiếp cận: tin nhắn vùng trực tiếp, nhãn, điều khiển làm chậm và các lựa chọn đầu vào thay thế là một phần của việc triển khai hiện tại.
- Thời gian nhận biết tốc độ khung hình:
requestAnimationFramevà thời gian đã trôi qua giữ cho chuyển động nhất quán. Hãy đọc các tệp Chromium hiện tại thay vì các hướng dẫn được sao chép dựa trên bố cụcoffline.jsđã ngừng hoạt động.

