DEV Community

Cover image for Khi AI trở thành 'cộng sự' trong terminal: Hành trình build game Snake với Amazon Q CLI

Khi AI trở thành 'cộng sự' trong terminal: Hành trình build game Snake với Amazon Q CLI

🤔 Anh em có bao giờ ước mình có một "cộng sự" AI ngay trong terminal không?

Thử tưởng tượng xem: thay vì phải Google "cách dùng git rebase" lần thứ 100, bạn chỉ cần gõ một câu lệnh đơn giản:

q chat "Gộp 3 commit cuối thành 1, chỉ tao cách làm với"
Enter fullscreen mode Exit fullscreen mode

Demo Amazon Q Chat về Git


Hình 1: Demo Amazon Q CLI trả lời câu hỏi về Git

Tất cả nằm gọn trong Amazon Q CLI – trợ lý AI thông minh ngay trong terminal của anh em dev.

✨ Tại sao Amazon Q CLI lại "ngon"?

  • 🚀 Tiết kiệm thời gian kha khá: Không cần phải Alt+Tab qua lại giữa terminal và trình duyệt nữa.
  • 🧠 Hiểu ngữ cảnh dự án (context-aware): AI đủ thông minh để biết bạn đang làm việc trong thư mục nào, với file nào, từ đó đưa ra gợi ý chính xác hơn.
  • 💬 Hỏi đáp tự nhiên bằng tiếng Việt: Giao tiếp như với một người bạn, nhận về câu trả lời chi tiết, dễ hiểu.
  • 🔧 Tương thích tốt với các công cụ quen thuộc: "Chơi" được với Git, Docker, AWS CLI, kubectl và nhiều hơn thế nữa.

🚀 Phần 1: Cài Đặt & Trải Nghiệm Lần Đầu

Amazon Q CLI là gì?

Nói đơn giản, Amazon Q CLI là một trợ lý AI dành cho anh em dev, tương tác trực tiếp trong command line. Thay vì phải mò mẫm trên Stack Overflow, bạn chỉ cần "chat" với nó để giải quyết vấn đề, từ việc tìm một câu lệnh shell phức tạp, debug code, cho đến viết script tự động.

Nó có thể:

  • Chuyển yêu cầu tự nhiên (tiếng Việt/Anh) thành các lệnh shell, git, docker...
  • Hiểu ngữ cảnh dự án để đưa ra gợi ý phù hợp.
  • Trò chuyện, giải đáp thắc mắc về lập trình.
  • Hỗ trợ viết code và debug.

🛠️ Cài đặt trong một nốt nhạc (Tham khảo docs)

Bước 1: Cài đặt

macOS (khuyến khích):

brew install amazon-q
Enter fullscreen mode Exit fullscreen mode

Linux (Ubuntu/Debian):

wget https://desktop-release.q.us-east-1.amazonaws.com/latest/amazon-q.deb
sudo dpkg -i amazon-q.deb
Enter fullscreen mode Exit fullscreen mode

Bước 2: Đăng nhập (Hoàn toàn miễn phí)

q login --license free
Enter fullscreen mode Exit fullscreen mode

Lệnh này sẽ mở trình duyệt để bạn đăng nhập bằng AWS Builder ID (tài khoản này miễn phí và không cần thẻ tín dụng).

Login


Hình 2: Màn hình đăng nhập Amazon Q CLI

Cấp quyền


Hình 3: Màn hình cấp quyền cho Amazon Q CLI

Thành quả


Hình 4: Đăng nhập thành công, sẵn sàng chiến!

Bước 2.1 (Optional nhưng nên làm): Tắt telemetry và chia sẻ dữ liệu

Để đảm bảo Amazon Q không sử dụng dữ liệu từ terminal của bạn cho việc training model, mình khuyến khích chạy hai lệnh sau:

q settings telemetry.enabled false
q settings codeWhisperer.shareCodeWhispererContentWithAWS false
Enter fullscreen mode Exit fullscreen mode

Bước 3: Bắt đầu "tám" với AI

q chat
Enter fullscreen mode Exit fullscreen mode

🎉 Xong! Giờ thì hỏi AI bất cứ điều gì bạn muốn!

3 Lệnh "Tủ" Cần Nắm Vững

Lệnh Mục Đích Ví Dụ
q chat Chat chit, hỏi đáp, viết code q chat "Viết hàm sắp xếp mảng trong Python"
q translate Dịch ngôn ngữ tự nhiên ra command q translate "tìm file .py sửa trong tuần này"
/help Xem danh sách các lệnh có sẵn /help ngay trong session chat

💡 Phần 2: Ứng Dụng Thực Tế Hàng Ngày

🤔 Amazon Q CLI vs. Amazon Q trong IDE - Dùng cái nào, khi nào?

Cả hai đều là "anh em một nhà" nhưng phục vụ cho những mục đích khác nhau.

Amazon Q CLI (Terminal) 👍 Khi nào dùng?

  • Khi bạn là "dân" terminal chính hiệu, sống và làm việc phần lớn thời gian trên command line.
  • Cần "bịa" nhanh một câu lệnh shell, git, docker phức tạp.
  • Đang SSH vào server và cần trợ giúp ngay tại chỗ.
  • Ví dụ: "Tạo cho tôi một bash script để backup database MySQL."

Amazon Q trong IDE 👍 Khi nào dùng?

  • Khi bạn đang trong luồng viết code, cần tập trung cao độ.
  • Cần refactor những đoạn code lớn, phức tạp.
  • Debug và viết unit test ngay trong môi trường IDE.
  • Ví dụ: "Refactor class này theo design pattern MVC giùm tôi."

💼 Vài tình huống quen thuộc

🏢 Bạn là Backend Developer

> Tôi cần tạo một API endpoint để lấy danh sách user, có phân trang, dùng Python và Django.
Enter fullscreen mode Exit fullscreen mode

🎓 Bạn là sinh viên đang học code

> Giải thích cho tôi sự khác biệt giữa var, let, và const trong JavaScript một cách dễ hiểu nhất.
Enter fullscreen mode Exit fullscreen mode

🚀 Bạn là DevOps đang deploy ứng dụng

> Viết cho tôi một Dockerfile để đóng gói ứng dụng Python Django, có file requirements.txt nhé.
Enter fullscreen mode Exit fullscreen mode

🎯 Khám phá các lệnh hay ho

Các lệnh cơ bản trong session chat

# Bắt đầu một session chat mới
q chat

# Trong lúc chat:
> /help          # Xem tất cả các lệnh
> /clear         # Dọn dẹp màn hình chat
> /editor        # Mở editor để gõ các prompt dài, phức tạp
> /quit          # Thoát khỏi session chat
Enter fullscreen mode Exit fullscreen mode

Lệnh /help


Hình 5: Danh sách các lện trong session chat Amazon Q

Dùng q translate - "Ma thuật" thực sự là đây

Đây là tính năng mình cực kỳ thích. Nó biến những yêu cầu đời thường thành những câu lệnh chính xác.

# Tìm file Python được sửa gần đây
q translate "tìm tất cả file Python được sửa trong tuần qua"
# Kết quả: find . -name "*.py" -mtime -7
Enter fullscreen mode Exit fullscreen mode

Tìm file trong tuần


Hình 6: Dùng translate để tìm file Python đã sửa trong tuần qua

# Thao tác với Git chưa bao giờ dễ hơn
q translate "tạo branch git mới tên là 'feature/login' từ nhánh main"
# Kết quả: git checkout -b feature/login main
Enter fullscreen mode Exit fullscreen mode

Tạo branch


Hình 7: Dùng translate để tạo branch Git mới, không cần nhớ lệnh

# Chạy Docker container
q translate "chạy container Docker image 'nginx' và map port 8080 của máy host vào port 80 của container"
# Kết quả: docker run -p 8080:80 nginx
Enter fullscreen mode Exit fullscreen mode

Chạy container


Hình 8: Dùng translate để tạo lệnh chạy container Docker


🔧 Phần 3: Tinh Chỉnh Nâng Cao

Quản lý Ngữ cảnh (Context) - Dạy AI "hiểu" dự án của bạn

Cung cấp Context cho AI

# Bắt đầu session chat
q chat

# "Mớm" cho AI biết về các file quan trọng trong dự án
> /context add ./requirements.txt ./snake_game.py

# Kiểm tra xem AI đang "biết" những gì
> /context show

# Xóa context để bắt đầu một chủ đề mới
> /context clear
Enter fullscreen mode Exit fullscreen mode

Quản lý context


Hình 9: Quản lý ngữ cảnh (context) giúp AI đưa ra câu trả lời chính xác hơn

Tại sao context lại quan trọng đến vậy? Khi AI hiểu được cấu trúc và các thành phần chính của dự án, câu trả lời của nó sẽ không chung chung nữa mà cực kỳ chính xác và phù hợp.

Quản lý Profile - Tách biệt các dự án

Nếu bạn làm nhiều dự án cùng lúc, profile sẽ giúp bạn giữ mọi thứ ngăn nắp.

# Tạo profile cho từng dự án
> /profile create frontend-react
> /profile create backend-python
> /profile create devops-aws

# Chuyển qua lại giữa các profile
> /profile set backend-python

# Mỗi profile có context riêng biệt, không lẫn lộn
> /context add ./main.py
Enter fullscreen mode Exit fullscreen mode
<img src="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qvgfuvy0gdtfu2gz9n6x.png" alt="Quản lý profile">
<figcaption>Hình: Quản lý profile để tách biệt các ngữ cảnh công việc</figcaption>
Enter fullscreen mode Exit fullscreen mode

Những "Chiêu" Hay Ho Khác

Các lệnh hữu ích trong session chat

Lệnh Công Dụng Ví dụ
/tools trust fs_write Cho phép AI tự động ghi file mà không cần hỏi lại. Khi bạn muốn AI tự tạo file config, code...
/compact Tóm tắt cuộc trò chuyện dài để tiết kiệm token. Khi cuộc trò chuyện đã quá dài.
/save session.json Lưu lại toàn bộ session chat. Backup công việc đang dang dở.
/load session.json Tải lại session chat đã lưu. Tiếp tục công việc từ lần trước.

Mẹo và thủ thuật

  • !{command}: Chạy lệnh shell ngay trong cửa sổ chat mà không cần thoát ra. Cực kỳ tiện lợi!
  > !ls -la
  > !git status
Enter fullscreen mode Exit fullscreen mode

Command in chat


Hình 10: Chạy lệnh shell trực tiếp trong session chat Amazon Q

  • Ctrl + J: Mở editor để viết những prompt dài hơi, nhiều dòng.
  • Ctrl + S: Tìm kiếm nhanh trong lịch sử chat và context hiện tại.

🕹️ Phần 4: Case Study - Xây Dựng Game Rắn Săn Mồi Cùng "Đồng Nghiệp" AI

Lý thuyết là vậy, nhưng sức mạnh thực sự của một công cụ chỉ thể hiện qua thực chiến. Bây giờ, hãy cùng mình tái hiện lại hành trình "pair-programming" với Amazon Q CLI, từ một thư mục trống đến một game Snake hoàn chỉnh.

🐣 Level 0: Nền Móng Đầu Tiên - Từ Ý Tưởng đến Game Chơi Được

Mọi chuyện bắt đầu từ một thư mục trống (mình tạo sẵn 1 file snake_game.py demo chỉ start pygame)và một ý tưởng. Mục tiêu của mình rất đơn giản: có một phiên bản game cơ bản nhất, chạy được ngay lập tức.

Bước 1: Phác thảo ý tưởng

Đầu tiên, mình vào thư mục dự án và khởi động Amazon Q.

cd ~/Self-Project/AWS-Builder/snake-game-with-amazon-q
q chat
Enter fullscreen mode Exit fullscreen mode

Để đưa ra một yêu cầu hoàn chỉnh, mình dùng lệnh /editor. Nó mở ra một trình soạn thảo ngay trong terminal, giúp mình viết các prompt dài và phức tạp một cách thoải mái.

👨‍💻 Mình:

Hãy giúp tôi tạo một trò chơi Rắn (Snake) đơn giản bằng Python và thư viện `pygame`.

**Yêu cầu cốt lõi:**
1. Cửa sổ game kích thước 800x600 pixel.
2. Rắn bắt đầu với độ dài 1 khúc.
3. Điều khiển rắn bằng các phím mũi tên.
4. "Mồi" xuất hiện ngẫu nhiên.
5. Khi rắn ăn "mồi", nó dài ra và "mồi" mới xuất hiện.
6. Game kết thúc nếu rắn đâm vào tường hoặc tự cắn vào thân.

Vui lòng cung cấp toàn bộ code để có thể chạy ngay.
Enter fullscreen mode Exit fullscreen mode

Bước 2: AI bắt tay vào việc

🤖 Amazon Q: I'll help you create a simple Snake game using Python and pygame. Let me create a complete, runnable Snake game that meets all your requirements.

Ngay lập tức, AI đề xuất tạo một file mã nguồn:

🛠️  Using tool: fs_write
 ⋮ 
 ● Path: snake_game.py
Enter fullscreen mode Exit fullscreen mode

Điều đáng kinh ngạc là AI không chỉ vứt ra một cục code. Nó hiển thị một bản diff chi tiết, cho thấy nó sẽ tạo ra một file snake_game.py hoàn chỉnh với 212 dòng code. Code được tổ chức rất chuyên nghiệp theo hướng đối tượng (OOP):

  • Class Game: Quản lý vòng lặp chính, sự kiện, và trạng thái game.
  • Class Snake: Xử lý logic di chuyển, ăn mồi, kiểm tra va chạm của rắn.
  • Class Food: Chịu trách nhiệm tạo và đặt lại vị trí mồi.

Coding Diff


Hình 11: Amazon Q hiển thị diff chi tiết của file code sắp được tạo

Mình chỉ việc đồng ý:

Allow this action? [y/n/t]:
> y
Enter fullscreen mode Exit fullscreen mode

Bước 3: Hoàn thiện "hệ sinh thái" của dự án

Một lập trình viên chuyên nghiệp biết rằng code không phải là tất cả. Và Amazon Q cũng vậy! Nó không dừng lại ở việc tạo file mã nguồn.

🤖 Amazon Q: Now let me create a requirements file to make easy to install the nêcsary dependencies:

🛠️  Using tool: fs_write
 ⋮ 
 ● Path: requirements.txt

pygame==2.5.2
Enter fullscreen mode Exit fullscreen mode

Auto add requirements


Hình 12: Amazon Q chủ động tạo file requirements.txt

🤖 Amazon Q: Let me also create a README file with instructions on how to run the game:

🛠️  Using tool: fs_write
 ⋮ 
 ● Path: README.md
Enter fullscreen mode Exit fullscreen mode

AI tự động điền vào file README các mục quan trọng như hướng dẫn cài đặt, cách chạy, luật chơi...

Q tạo Readme


Hình 13: Amazon Q tự động tạo file README.md với hướng dẫn đầy đủ

Bước 4: Thành quả đầu tiên

Chỉ sau vài phút, AI báo cáo kết quả:

🤖 Amazon Q: Perfect! I've created a complete Snake game that meets all your requirements. Here's what I've built for you:

🎮 Các tính năng đã implement:
✅ Kích thước window game 800x600 pixel.
✅ Rắn bắt đầu với 1 khúc.
✅ Điều khiển bằng phím mũi tên.
✅ "Mồi" xuất hiện ngẫu nhiên.
✅ Rắn dài ra khi ăn mồi.
Phát hiện va chạm (tường và thân).

🎁 Tính năng bonus:

  • Theo dõi điểm số.
  • Màn hình Game Over với tùy chọn chơi lại.
  • Gameplay mượt mà ở 10 FPS.

🚀 Cách chạy:

# Cài đặt dependencies
pip install -r requirements.txt

# Chạy game
python snake_game.py
Enter fullscreen mode Exit fullscreen mode

Kết Quả


Hình 14: Amazon Q tóm tắt các tính năng đã hoàn thành

Chạy thử pygame


Hình 15: Demo game Snake chạy ngon lành!

💡 Điểm sáng ở đây là gì?

  1. Hiểu sâu bối cảnh: Chỉ từ một prompt, Q đã nắm bắt toàn bộ yêu cầu.
  2. Chủ động hành động: Q không hỏi vặt, nó bắt tay vào code và tạo ra sản phẩm hoàn chỉnh.
  3. Tư duy hệ thống: Q không chỉ đưa code, nó tạo ra cả một "hệ sinh thái" (requirements.txt, README.md) để dự án trở nên chuyên nghiệp và dễ sử dụng ngay từ đầu.
  4. Code chất lượng: Mã nguồn sạch, cấu trúc tốt và chạy được ngay mà không có lỗi.

🎨 Level 1: "Tút Tát" Giao Diện & Thêm "Hồn" Cho Game

Game đã chạy, nhưng giao diện còn khá "thô". Giờ là lúc làm cho nó "đã mắt, đã tai" hơn.

Bước 1: Thêm hiệu ứng đồ họa (Visual Effects)

Mình muốn game trông hiện đại và bắt mắt hơn. Mình cung cấp file snake_game.py làm context và đưa ra yêu cầu mới.

Add context


Hình 16: Thêm file snake_game.py vào ngữ cảnh của Amazon Q

👨‍💻 Mình gõ trong editor:

Cải thiện giao diện cho game Snake của tôi:

1. Thêm background gradient chuyển từ xanh đậm đến xanh nhạt.
2. Tạo hiệu ứng đổ bóng (shadow) cho con rắn.
3. Làm cho "mồi" có hiệu ứng nhấp nháy.
4. Thêm viền (border) cho khu vực chơi.
5. Tạo màn hình tiêu đề (title screen) có hiệu ứng động.
Enter fullscreen mode Exit fullscreen mode

🤖 Amazon Q: I'll help you improve the visual interface of your Snake game with all the requested enhancements. Let me create an enhanced version with gradient background, shadow effects, blinking food, beautiful borders, and an animated title screen.

🛠️  Using tool: fs_write
 ⋮ 
 ● Path: snake_game.py

   1,  1: import pygame
   2,  2: import random
   3,  3: import sys
+      4: import math
   ...
+     22: LIGHT_BLUE = (173, 216, 230)
+     23: DARK_BLUE = (25, 25, 112)
+     24: GOLD = (255, 215, 0)
+     25: SHADOW_COLOR = (0, 0, 0, 100)
...
Enter fullscreen mode Exit fullscreen mode

AI ngay lập tức đề xuất sửa đổi file snake_game.py, thêm các hằng số màu sắc mới và các hàm để vẽ hiệu ứng.

Add Color


Hình 17: Amazon Q thêm màu sắc và logic để vẽ hiệu ứng đồ họa

Bước 2: Thổi hồn bằng âm thanh (Sound Effects)

Một game hay không thể thiếu âm thanh. Điều thú vị là mình muốn thử thách AI một chút.

👨‍💻 Mình:

Thêm âm thanh vào game Snake:

1. Âm thanh khi ăn mồi.
2. Âm thanh khi game over.
3. Nhạc nền.
4. Nút bật/tắt âm thanh (phím M).

Yêu cầu đặc biệt: **Không dùng file âm thanh có sẵn, hãy tự tạo ra âm thanh bằng code Python**.
Enter fullscreen mode Exit fullscreen mode

🤖 Amazon Q: I'll help you add sound effects to your Snake game using pygame.mixer and create simple sound files programmatically.

Đây là lúc AI thể hiện sự thông minh vượt trội. Nó không chỉ sửa file game, mà còn tạo ra một file hoàn toàn mới:

🛠️  Using tool: fs_write
 ⋮ 
 ● Path: sound_generator.py
Enter fullscreen mode Exit fullscreen mode

File sound_generator.py này chứa code Python sử dụng numpy để tạo ra các sóng âm (dạng array) cho từng hiệu ứng, sau đó lưu chúng lại. Đây là một kỹ thuật lập trình âm thanh rất hay mà mình không cần phải tự tìm hiểu.

Add sound


Hình 18: Amazon Q tự viết một script sound_generator.py để tạo âm thanh từ code

Bước 3: Gặp lỗi và cùng AI "bắt bệnh" (Troubleshooting)

Trong quá trình phát triển, gặp lỗi là chuyện bình thường. Khi mình chạy game, console báo lỗi:

Error Sound


Hình 19: Lỗi khi chạy game với âm thanh mới

Đây là cơ hội tuyệt vời để thử khả năng debug của Amazon Q. Mình chỉ cần copy-paste lỗi vào cho nó:

👨‍💻 Mình:

Sửa lỗi này giúp tôi với:
Could not initialize sounds: Array must be 2-dimensional for stereo mixer
Enter fullscreen mode Exit fullscreen mode

Fix sound


Hình 20: Amazon Q phân tích và đề xuất cách sửa lỗi âm thanh

🤖 Amazon Q: I see the issue! The problem is with the audio array format for pygame's sound system. Let me fix the sound generator to properly handle stereo/mono audio formats.

AI không chỉ sửa lỗi. Nó còn chủ động tạo ra một script test_sounds.py để mình có thể kiểm tra hệ thống âm thanh một cách độc lập trước khi chạy toàn bộ game. Cực kỳ cẩn thận!

Sound test script


Hình 21: AI còn cẩn thận tạo thêm script để test riêng phần âm thanh

🎉 Kết quả: Sau khi Q đã fix, mình chạy lại game và mọi thứ hoạt động hoàn hảo!

Add Visual


Hình 22: Demo game với giao diện và âm thanh đã được nâng cấp

🎓 Bài học từ Level 1

  • Phát triển lặp: Xây dựng từng lớp tính năng (đồ họa, âm thanh) dựa trên nền tảng đã có.
  • Sức mạnh của context: Cung cấp file code hiện tại giúp Q đưa ra các đề xuất sửa đổi cực kỳ chính xác.
  • Debug hiệu quả: Chỉ cần đưa ra thông báo lỗi, Q có thể phân tích, tìm nguyên nhân, đề xuất giải pháp, và thậm chí tạo cả script để testing.

🎮 Level 2: Nâng Tầm Gameplay

Game đã đẹp và có âm thanh, giờ là lúc làm cho nó hấp dẫn và có chiều sâu hơn về lối chơi.

Bước 1: Thêm Power-ups và Chướng ngại vật

👨‍💻 Mình:

Thêm các yếu tố mới vào game:

**Power-ups (tỷ lệ xuất hiện 5%):**
- 🍒 Cherry: +20 điểm, rắn không dài ra.
- ⚡ Lightning: Tăng tốc trong 5 giây.
- 🛡️ Shield: Bất tử trong 3 giây.
- 💎 Diamond: +50 điểm và đóng băng thời gian 2 giây.

**Chướng ngại vật:**
- 🧱 Các khối tường xuất hiện ngẫu nhiên.
- 🕳️ Lỗ dịch chuyển (vào một lỗ, ra lỗ còn lại).

Hiển thị thời gian đếm ngược cho các power-up đang kích hoạt.
Enter fullscreen mode Exit fullscreen mode

🤖 Amazon Q: I'll help you add these exciting new elements to your Snake game! Let me implement the power-ups, obstacles, and timer system.

AI lại tiếp tục công việc refactor và bổ sung code. Nó tạo ra class mới như PowerUp, Obstacle và cập nhật Game class với logic phức tạp để quản lý tất cả, bao gồm cả hệ thống hẹn giờ và hiệu ứng hình ảnh cho từng loại.

Thêm power-up


Hình 23: Amazon Q thêm code cho các power-ups và chướng ngại vật

Bước 2: Cải thiện trải nghiệm với "Xuyên Tường"

Cơ chế "chết khi đâm vào tường" ở phiên bản đầu khá khó chịu. Mình quyết định thay đổi nó.

👨‍💻 Mình:

Cải thiện gameplay: khi rắn đi xuyên tường, nó sẽ không chết mà xuất hiện ở cạnh đối diện.
Enter fullscreen mode Exit fullscreen mode

🤖 Amazon Q: *Tôi sẽ cải thiện gameplay bằng cách cho phép rắn xuyên qua tường và xuất hiện ở phía đối diện thay vì chết khi va vào tường. Đây là một tính năng rất hay để làm game thú vị hơn!

AI nhanh chóng xác định phần code xử lý va chạm tường và thay thế nó bằng logic mới. Thay đổi này nhỏ nhưng làm cho trải nghiệm chơi game mượt mà và chiến thuật hơn rất nhiều.

Xuyên Tường


Hình 24: Amazon Q dễ dàng thêm tính năng "xuyên tường" cho rắn

Kết quả

Game với power-ups


Hình 25: Demo game với power-ups và tính năng xuyên tường


🏆 Level 3: Nâng Cấp "Pro" - Hệ Thống High Score & Bảng Xếp Hạng

Để game có tính cạnh tranh và lôi cuốn hơn, không thể thiếu hệ thống lưu điểm cao.

Bước 1: Yêu cầu hệ thống high score hoàn chỉnh

👨‍💻 Mình:

Tạo hệ thống high score hoàn chỉnh:

1. **Local storage:**
   - Save top 10 scores vào JSON file
   - Include: name, score, date, level reached

2. **Leaderboard screen:**
   - Hiển thị ranking với animation
   - Input name khi đạt high score
   - Export leaderboard to CSV

3. **Statistics:**
   - Total games played
   - Average score
   - Best streak
   - Time played
Enter fullscreen mode Exit fullscreen mode

🤖 Amazon Q: Tôi sẽ tạo hệ thống high score hoàn chỉnh cho Snake game của bạn. Hãy bắt đầu với việc tạo các file cần thiết:

AI bắt đầu một cuộc "cách mạng" về kiến trúc code:

🛠️  Using tool: fs_write
 ⋮ 
 ● Path: high_score_manager.py
 ● Path: leaderboard_screen.py
 ● Path: name_input_screen.py
Enter fullscreen mode Exit fullscreen mode

Đây chính là tư duy của một kỹ sư có kinh nghiệm. Thay vì nhồi nhét tất cả vào một file, AI đã tách code thành các module có trách nhiệm rõ ràng.

Bước 2: Tích hợp và hoàn thiện

Sau khi tạo các module trên, AI tiếp tục cập nhật file snake_game.py để tích hợp chúng vào luồng game chính, đồng thời cập nhật cả README.md để hướng dẫn về các tính năng mới. Quá trình này bao gồm:

  • Import các class mới: HighScoreManager, LeaderboardScreen, NameInputScreen.
  • Thêm các game state mới: "leaderboard", "name_input".
  • Cập nhật event loop (handle_events) để xử lý các phím bấm mới (như L để xem leaderboard, E để export).
  • Cập nhật logic game (update) để kiểm tra high score khi game over và chuyển sang màn hình nhập tên.
  • Cập nhật hàm render (draw) để hiển thị các màn hình mới.

🤖 AI cũng không quên cập nhật các file phụ trợ:

  • requirements.txt: Được cập nhật để đảm bảo phiên bản tương thích.
  • README.md: Được bổ sung chi tiết về hệ thống high score, hướng dẫn sử dụng các tính năng mới và cấu trúc file dự án.

Bước 3: Kết quả cuối cùng

🤖 Amazon Q: Tuyệt vời! Tôi đã tích hợp thành công hệ thống high score. Hệ thống này không chỉ lưu điểm mà còn cung cấp một trải nghiệm người dùng rất chuyên nghiệp.

High Score System


Hình 26: Amazon Q triển khai hệ thống high score với kiến trúc module

Status


Hình 27: Thống kê và dữ liệu game được lưu trữ và hiển thị đẹp mắt

🏆 Các tính năng High Score đã implement:
Lưu trữ Local: Tự động lưu top 10 điểm và thống kê vào file JSON.
Leaderboard Động: Màn hình bảng xếp hạng với huy chương (🥇, 🥈, 🥉).
Theo Dõi Thống Kê: Ghi lại lịch sử chơi game chi tiết.
Export ra CSV: Xuất bảng xếp hạng chỉ bằng một phím bấm.
Kiến Trúc Module: Tách biệt logic rõ ràng (data, UI, game logic), giúp dự án dễ bảo trì và mở rộng.


📚 Level 4: Bước Cuối Cùng - Hoàn Thiện Documentation Như Dân Chuyên

Một dự án tốt không thể thiếu tài liệu hướng dẫn chi tiết. Đây là bước cuối cùng để biến dự án thành một sản phẩm mã nguồn mở hoàn chỉnh.

Bước 1: Yêu cầu bộ tài liệu đầy đủ

👨‍💻 Mình:

Tạo documentation hoàn chỉnh:

**Developer docs:**
- Code architecture explanation
- API documentation với Sphinx
- Contributing guidelines
- Setup development environment

**User manual:**
- Interactive tutorial in-game
- Strategy guide với screenshots
- FAQ section
- Troubleshooting guide

**Video content:**
- Screen recording của gameplay
- Development timelapse
- Tutorial videos

Tạo GitHub Pages site cho documentation.
Enter fullscreen mode Exit fullscreen mode

🤖 Amazon Q: Tôi sẽ tạo documentation hoàn chỉnh cho Snake game của bạn. Hãy bắt đầu với việc tạo cấu trúc documentation và các file cần thiết

Bước 2: AI tạo hệ thống documentation

AI đã thực hiện một khối lượng công việc khổng lồ:

  1. Thiết lập nền tảng Sphinx: Tạo toàn bộ cấu trúc thư mục docs/ với các file cấu hình.
  2. Tự động viết nội dung: Sinh ra hàng loạt file .rst với nội dung chi tiết cho từng phần.
  3. Tạo script hỗ trợ: Viết script Python (scripts/generate_screenshots.py) để tự động chạy game và chụp lại các màn hình cần thiết để minh họa.
  4. Thiết lập CI/CD: Tạo file .github/workflows/docs.yml để tự động build và deploy tài liệu lên GitHub Pages mỗi khi có commit mới.

Documentation Structure


Hình 28: Cấu trúc thư mục documentation chuyên nghiệp được tạo bởi Amazon Q

Generate Screenshots


Hình 31: Script tự động chụp ảnh màn hình game để làm tài liệu

CI/CD Workflow


Hình 32: Workflow CI/CD cho GitHub Actions để tự động deploy tài liệu

Bước 3: Thành quả không tưởng

🤖 Amazon Q: Hệ thống documentation của bạn đã sẵn sàng. Nó không chỉ là các file văn bản, mà là một trang web hoàn chỉnh, có thể được host miễn phí trên GitHub Pages.

Documentation Preview


Hình 33: Xem trước trang tài liệu được tạo hoàn toàn bằng Amazon Q


📖 Các thành phần của bộ Documentation:
👨‍💻 Dành cho Developer:

  • Code Architecture: Giải thích sâu về cấu trúc class, luồng game state, hệ thống render.
  • API Reference: Tài liệu API được tự động sinh ra từ docstrings bằng Sphinx, chi tiết từng class và method.
  • Contributing Guide: Hướng dẫn chi tiết cách đóng góp, code style, quy trình pull request.

👤 Dành cho Người dùng:

  • Interactive Tutorial: Một guide siêu chi tiết gồm 6 bài học, từ cách di chuyển cơ bản đến chiến thuật nâng cao, có cả bài tập thực hành.
  • Strategy Guide: Phân tích chuyên sâu về cách sử dụng power-up, né chướng ngại vật và tối ưu điểm số.
  • FAQ & Troubleshooting: Giải đáp mọi thắc mắc thường gặp và hướng dẫn sửa lỗi.

🎥 Media và Tự động hóa:

  • Tự động tạo Screenshot: Script giúp tạo ra hình ảnh minh họa nhất quán cho tài liệu.
  • Tự động quay Video: Script giúp ghi lại các đoạn video gameplay cho tutorials.
  • Tự động Deploy: Nhờ GitHub Actions, trang docs sẽ luôn được cập nhật với phiên bản mới nhất của code.

🌐 Trang GitHub Pages chuyên nghiệp:

  • Giao diện được tùy chỉnh với màu sắc của game.
  • Cấu trúc điều hướng rõ ràng, dễ tìm kiếm.
  • Tối ưu cho cả desktop và mobile.

Một số hình ảnh demo screenshoot được chụp từ script generate_screenshots.py

Title Screen


Hình 34: Màn hình tiêu đề (title screen) của game

UI Elements


Hình 35: Các thành phần UI trong game

Gameplay Active


Hình 36: Màn hình gameplay đang diễn ra

Obstacles Teleports


Hình 37: Hệ thống dịch chuyển (teleport) trong game

Obstacles Walls


Hình 38: Chướng ngại vật tường trong game

Powerup Cherry Example


Hình 39: Power-up Cherry trong game (+20 điểm)

Powerup Diamond Example


Hình 40: Power-up Diamond trong game (+50 điểm)

Powerup Lightning Example


Hình 41: Power-up Lightning trong game (tăng tốc)

Powerup Shield Example


Hình 42: Power-up Shield trong game (bất tử tạm thời)

Game Over Screen


Hình 43: Màn hình Game Over

Name Input Screen


Hình 44: Màn hình nhập tên người chơi đạt điểm cao

Leaderboard Screen


Hình 45: Màn hình bảng xếp hạng điểm cao


🎓 Tổng Kết & Đúc Rút Kinh Nghiệm

Qua hành trình này, mình đã hình thành một workflow làm việc cực kỳ hiệu quả với Amazon Q CLI:

  1. Bắt đầu đơn giản: Khởi đầu với một yêu cầu cốt lõi.
  2. Phát triển lặp: Xây dựng từng lớp tính năng một cách tuần tự: Giao diện → Âm thanh → Gameplay → High Score → Documentation.
  3. Tin tưởng vào AI: Đừng chỉ xem nó là công cụ viết code. Hãy giao cho nó cả việc thiết kế kiến trúc, tự động hóa và viết tài liệu.
  4. Từ ý tưởng đến sản phẩm: Chỉ từ những cuộc hội thoại bằng ngôn ngữ tự nhiên, mình đã đi từ một thư mục trống đến một sản phẩm mã nguồn mở hoàn chỉnh.

Đây không chỉ là một trợ lý, mà thực sự là một "đồng nghiệp" AI đắc lực. Amazon Q CLI đã thay đổi hoàn toàn cách mình tiếp cận các dự án cá nhân, giúp mình hiện thực hóa ý tưởng nhanh hơn bao giờ hết.

Chúc anh em cài đặt thành công và có những trải nghiệm thú vị

Top comments (0)