Python – Module 5 – Cỗ máy thời gian (Vòng lặp) 🔁
Lập trình viên rất… lười biếng. Họ ghét phải làm đi làm lại một việc. Nếu cần tấn công một kẻ thù 100 lần, bạn có thể viết attack() 100 lần, HOẶC bạn có thể dùng Vòng lặp để máy tính tự làm!
Trong game, vòng lặp xuất hiện ở khắp nơi:
- Vòng lặp chính của game (game loop) chạy 60 lần/giây để cập nhật màn hình
- Hiệu ứng chất độc trừ HP mỗi giây
- Kiểm tra từng kẻ địch trong danh sách
- Đếm ngược thời gian của một round
1. Vòng lặp while (Lặp cho đến khi có gì đó thay đổi)
Vòng lặp while nói với máy tính: “Hãy tiếp tục chạy đoạn code này, miễn là điều kiện này vẫn là True.”
Ví dụ: Thanh máu (HP) trong chiến đấu

Chú ý về vết lùi (indentation)!
Giống như if/else, mọi dòng code nằm bên trong vòng lặp while phải được thụt lùi 4 dấu cách.

2. Vòng lặp vô tận và lệnh break
Vòng lặp vô tận (Infinite Loop) là khi vòng lặp không bao giờ dừng. Điều này sẽ làm treo chương trình! Tuy nhiên, đôi khi chúng ta cố tình tạo vòng lặp vô tận bằng while True:, rồi dùng lệnh break để thoát ra đúng lúc.
Ví dụ: Game loop chính

3. Vòng lặp for (Lặp một số lần xác định)
Vòng lặp for hoàn hảo khi bạn biết trước muốn lặp bao nhiêu lần. Chúng ta thường dùng nó cùng với hàm range().
Ví dụ: Tấn công liên tiếp

Tại sao lại bắt đầu từ 0? Vì máy tính đếm từ 0 thay vì 1!
range() nâng cao: Tùy chỉnh bước đếm
Hàm range() có thể nhận tới 3 tham số: range(start, stop, step).


4. Lệnh continue (Bỏ qua và tiếp tục)
Lệnh continue không dừng vòng lặp như break, mà nó bỏ qua phần còn lại của lần lặp hiện tại và nhảy ngay đến lần tiếp theo.
Ví dụ: Bỏ qua kẻ địch đã chết

5. Vòng lặp lồng nhau (Nested Loops)
Bạn có thể đặt một vòng lặp bên trong một vòng lặp khác. Điều này cực kỳ hữu ích khi làm việc với bản đồ game dạng lưới (grid/tilemap).
Ví dụ: Vẽ bản đồ game đơn giản

Ví dụ: Bảng điểm số trong tournament

6. Thực hành: “Hệ thống chiến đấu turn-based” 🎮
Nhiệm vụ: Xây dựng một hệ thống chiến đấu đơn giản theo lượt. Người chơi và quái vật thay nhau tấn công cho đến khi một trong hai tử vong.
Code mẫu:

Challenge: Thêm tính năng tung xúc xắc! Dùng import random và random.randint(5, 20) để tạo sát thương ngẫu nhiên mỗi lượt thay vì cố định.
7. Tổng kết Module
- Vòng lặp giúp chúng ta tự động hóa các tác vụ lặp đi lặp lại!
- while lặp lại cho đến khi điều kiện thay đổi (như thanh HP về 0).
- Vòng lặp vô tận chạy mãi mãi – dùng break để thoát khi cần.
- for + range() hoàn hảo khi biết trước số lần lặp.
- range(start, stop, step) cho phép đếm xuôi, ngược, hoặc nhảy cách.
- continue bỏ qua phần còn lại của lần lặp hiện tại và tiếp tục.
- Vòng lặp lồng nhau dùng để xử lý dữ liệu dạng lưới như bản đồ game.
- Máy tính đếm từ 0!
Sẵn sàng cho cấp độ tiếp theo? Ở Module 6, chúng ta sẽ học cách lưu trữ hàng đống vật phẩm cùng một lúc trong ba lô của nhà thám hiểm!
(Continue)

vuanhduc2685@gmail.com
hoanvtt99@gmail.com
