Lesson 15 — Tilemap & Pathfinding (lưới ô & tìm đường A*)

Ba bộ công cụ tương tác: (1) A* pathfinder — vẽ tường, đặt start/goal, chạy từng bước thấy open/closed + g/h/f mỗi ô; (2) So thuật toán — BFS vs Dijkstra vs A* đếm số ô thăm; (3) Heuristic — đổi Manhattan / Euclid / zero(=Dijkstra) xem vùng thăm đổi. Bài cuối lĩnh vực GameDev.

1. A* Pathfinder — vẽ & chạy từng bước

Chọn công cụ rồi kéo chuột trên lưới: ✏ Tường để vẽ/xoá tường, 🟢 Start, 🔴 Goal. Bấm Bước để chạy A* một vòng (pop ô f nhỏ nhất, đóng nó, relax hàng xóm) — mỗi ô hiện g (góc trên-trái), h (trên-phải), f (giữa, to). Hoặc Tự chạy.

Công cụ:
open (đang chờ) closed (đã đóng) đang pop đường cuối tường bùn (cost 3)
Sẵn sàng. Bấm “Bước” hoặc “Tự chạy”.
0
ô trong open
0
ô đã đóng
độ dài đường (g)
0
vòng đã chạy

2. So thuật toán — BFS vs Dijkstra vs A*

Chạy cả ba trên cùng lưới (lưới bạn đã vẽ ở module 1) và đếm số ô thăm (số ô đã đóng). A* thường thăm ít nhất vì heuristic định hướng. Mỗi ô tô màu theo thuật toán đã thăm nó.

Thuật toánSố ô thămĐộ dài đường (g)Đặc điểm
BFSít ô nhất khi mọi bước = 1
Dijkstrađúng cho trọng số (bùn)
A*thăm ít nhất nhờ heuristic

3. Heuristic — đổi để thấy vùng thăm đổi

Cùng một lưới, đổi heuristic h và xem A* thăm rộng cỡ nào. zero → A* thoái hoá thành Dijkstra (loang đều). Manhattan/Euclid kéo tìm kiếm về đích → vùng thăm thu hẹp về hướng goal.

ô thăm
độ dài đường (g)