Tile Master Game - Làm cách nào để tạo Random & Shuffle Tile đảm bảo luôn resolver cho dù update vào các map khác nhau

E đang có 1 đồ án làm game tựa con tile master. Cho e hỏi làm thế nào để có thể sắp xếp các Tile này luôn có thể Win được cho dù xếp vào map khác nhau.

Cách chơi:
Layer trên sẽ enable.
Layer dưới nếu bị layer trên đè lên sẽ k click được.
Click 3 con giống nhau sẽ biến mất & hiện các item k bị che của layer dưới.

cách đơn giản nhất là bạn gen ngẫu nhiên ra 1 game. viết 1 giải thuật để xem game này có solvable hay không. nếu có thì đưa người chơi, còn không thì gen lại.


còn đàng hoàng hơn thì bạn cần để ý chút việc match như vậy khá giống đang đi trên 1 đường đi -> mình có thể map nó qua graph (đồ thị).

game có thể giải -> đi qua mọi node trong đồ thị với giới hạn là phải đi qua M node giống nhau liên tục trong giới hạn N bước. nếu tồn tại đường đi, đi qua mọi node -> đường đi đó là 1 chu trình hamilton “đặc biệt”. gọi đặc biệt vì nó có giới hạn như trên

-> bạn có thể tìm cách gen 1 đồ thị sao cho nó tồn tại 1 chu trình hamilton.
còn không gen được thì bạn cũng có giải thuật để kiểm tra xem game có solvable hay không.

3 Likes

ok tks a, cách viết giải thuật solvable hay k có vẻ khả thi.

cách trên trừ khi bạn muốn cho game khó lên :sweat_smile:
chứ gen ra level đơn giản cũng dễ lắm.

  1. bạn xác định các item ở layer i cần nhảy xuống layer i + 1. tức các item này không đủ tile để match ở layer i. để đơn giản thì bạn cứ cho item ở layer i nhảy xuống i + 1 là solve luôn. không cần phải xuống layer i + 2, i + 3, …
  2. sau khi xác định item cần thì bạn tính toán số tile cần di chuyển xuống layer i+1. ví dụ ở layer 1 bạn có item A có 2 tiles -> cần 1 tile A ở layer 2
  3. bạn đặt các tile còn lại đó ở dưới các item có thể match được ở layer i. ví dụ: ở layer 1 bạn có 3 tile B -> bạn đặt 1 tile A còn lại ở layer 2 dưới các tile có item B này. thế là đảm bảo luôn solvable :ok_hand:

à lưu ý là: số tiles cần di chuyển xuống layer i+1 phải <= số tile có thể unlock ở level i+1 với cái item có thể match layer i nhé.

ví dụ ở layer 1 bạn có item B là match được -> 3 tiles B này unlock được 2 tiles ở layer 2 -> bạn có đặt 1 tile A vô 1 trong 2 tile này. và bài toán có thể solve!

nhưng ví dụ bạn có 2 items là A và C. C cần 2 tiles ở layer 2 và A cần 1 -> bạn cần unlock tới 3 tiles, nhưng với B chỉ có thể unlock tối đa 2 tiles -> tạch

4 Likes

ok tks a nhé, thế e biến đổi chút là mỗi layer sẽ có ít nhất 50% chắc chắc sẽ reslover đc. Còn lại sẽ di chuyển xuống layer + 1 nằm dưới 50% cặp đó thì chắc chắn sẽ solvable.

hehe, cách bạn nghe ok đó :ok_hand:

2 Likes

tks a đã support :slight_smile:

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?