Vấn đề cần giải quyết đầu tiên khi viết chơng trình cho trò chơi này là phải xác định đợc đờng đi của viên bi (khi ngời sử dụng chọn một viên bi và chuyển nó đến một ô trống nào đó trên bảng). Dựa trên lý thuyết đồ thị, để tìm một đờng đi từ ô đến một ô khác trong bảng ta có rất nhiền cách giải quyết khác nhau. Tuy nhiên trong phạm vi luân văn này tôi chỉ xin trình bày thuật toán BFS (Breadth first search) để tìm đờng đi của viên bi trên bảng. áp dụng thuật toán BFS, ta xem bảng nh một đồ thị với mỗi ô trên bảng nh một đỉnh của đồ thị.
Giả sử, cần tìm đờng đi từ ô (i1, j1) đến (i2, j2), ta phải sử dụng 2 hàng đợi[] để load ô. Một hàng đợi để lu tọa độ x, một hàng đợi để lu tọa độ y. Và hai
mảng hai chiều để chứa vết các ô có thể đi. Đầu tiên ta cần bỏ phần tử đầu tiên (i2, j2) vào hàng đợi. Sau đó, tiếp tục lặp vòng lặp sau để tìm đờng đi:
Function vector timduongdi() {
Trong khi (Hàng đợi[] cha rỗng) {
Lấy phần tử trong Hàng đợi[] {
Kiểm tra 4 ô xung quanh (trên, dới, trái, phải) của phần tử này {
Nếu là ô còn trống {
- Bỏ phần tử này vào Hàng đợi[]
- Lu lại đờng đi từ phần từ này đến vị trí mới (lu vết)(là 1 trong 4 ô xung quanh phần tử hiện tại)
- Nếu phần tử này là ô đích-> Dừng vòng lặp chính (Thành công), và từ các vết trả về vector đờng đi từ ô (i1,j1) đến ô (i2,j2) } } } } Trả về giá trị null }
Xây dựng thuật toán này trả về một vector nến nó bằng null thì không có đờng đi và ngợc lại nó đa ra đờng đi giữa hai ô (i1, j1) (i2, j2) sẽ thuận tiện cho việc di chuyển bóng trong trò chơi.