Chào mọi người, mình chia sẽ cho mọi người một dạng game khá vui, nhưng không phải ai cũng chơi được về thể loại game này và nhìn hơi rối mắt với người mới chơi. :D
Bạn sẽ không tìm thấy mã như thế này ở bất kỳ đâu. Tôi có ở đây một thuật toán A* Pathfinding rất nhanh và dễ hiểu (phát âm là A Star) có thể dễ dàng chuyển sang bất kỳ trò chơi nào bạn đang tạo. Thuật toán này tìm ra tuyến đường nhanh nhất từ điểm bắt đầu là kẻ săn mồi của bạn đến điểm kết thúc là con mồi của bạn. Tôi đã chạy thử các chương trình A* khác trong VB và thấy chúng rất xấu. Tôi đã chạy thử một chương trình mà tôi thấy quá phụ thuộc vào các giá trị mà tôi không muốn sử dụng và thấy rằng đó không phải là cấu trúc A* phù hợp (chưa kể đến việc gần như không thể chuyển vào trò chơi của tôi), và một chương trình khác dễ hiểu, nhưng bị khóa ở một số khu vực nhất định trên bản đồ và cực kỳ chậm. Thật đáng buồn là tôi đã sử dụng phương pháp chậm và dễ đó trong trò chơi
Bosskillers
của mình, điều này sẽ được sửa. Tôi đã sắp xếp mã của mình để dễ dàng chia nhỏ và có chú thích. Để biết thêm tài liệu về A* Pathfinding, hãy tham khảo trang web này:A* Pathfinding dành cho người mới bắt đầu
[Fix] Đã có những cải tiến lớn và đây có lẽ là chương trình A* Pathfinding DUY NHẤT thực sự bao gồm quái vật đi theo đường dẫn! Và bạn có thể di chuyển người chơi của mình qua bản đồ. Nó thậm chí còn có va chạm cho các bức tường. Vì mục đích tối ưu hóa, A* Pathfinding chỉ cần được tính toán khi quái vật di chuyển đến một tọa độ bản đồ mới.
[Fix] Một cải tiến khác đã được thực hiện. Tôi nhận thấy 2 điều. Một là, con đường biến mất thỉnh thoảng trong một phần giây mặc dù kẻ săn mồi vẫn tiếp tục theo con đường. Hóa ra người chơi cũng cần một vai trò để kích hoạt
Compute_AStar_Pathfinding
. Vì vậy, bất cứ khi nào người chơi di chuyển đến một tọa độ bản đồ mới, nó sẽ kích hoạt AStar. Vấn đề khác là nó rất rất hiếm khi bị khóa. Việc yêu cầu người chơi thực hiện một lần tung xúc xắc trong Compute_Astar_Pathfinding
cũng đã khắc phục được điều này. Không còn bị khóa nữa. Việc bị khóa có xu hướng là vấn đề lớn nhất với các mẫu AStar và có thể khiến chương trình của bạn bị treo. Tôi cũng đã thay đổi thứ tự của nó trong Game_Loop
. Vì vậy, bây giờ nó là thứ tự này:- Điều khiển bàn phím
- Màn hình trong suốt
- Va chạm
- Tìm đường AStar
- Theo dõi AStar Path
- Bản đồ kết xuất
- Vẽ đường dẫn AStar
- Vẽ Quái Vật
- Vẽ Người chơi
- Khóa_Tốc_độ_khung_60
- Sự kiện
Subscript
nằm ngoài phạm vi khi thực hiện như vậy! Vì vậy, AStar của tôi có vẻ là tốt nhất cho đến nay trên web. Tôi cũng có thể chuyển nó sang VB.Net và thực hiện các cải tiến khác như cách quái vật nội suy từ ô này sang ô khác. Hiện tại, mặc dù nó hoạt động, nhưng nó gặp sự cố khi đường đi tiếp theo để nó đi theo ở một góc và có một bức tường ở đó nên nó kéo dọc theo bức tường cho đến khi nó đi đến ô đó.[Fix] Một bản cập nhật lớn khác mà tôi mất nhiều tháng để giải quyết. Không còn bất kỳ chuyển động giật nào với sprite khi đường dẫn A* thay đổi. Lý do chuyển động giật cục này xảy ra là vì sprite chưa hoàn tất việc di chuyển đến nút tiếp theo và khi có sự thay đổi trong đường dẫn, sprite cố gắng di chuyển đến nút đầu tiên của đường dẫn, do đó chuyển động giật cục. Vì vậy, tôi đã đến nơi quái vật phải hoàn thành đường dẫn đến nút cũ trước khi nó có thể bắt đầu theo đường dẫn của nút mới. Kết quả là chuyển động mượt mà như lụa. Tôi cũng đã dọn dẹp một số mã, xóa một số đối tượng vô dụng, cải thiện việc thay đổi đường dẫn khi di chuyển người chơi hoặc sprite và việc xóa các bức tường hiện rất mượt mà vì bây giờ bạn chỉ cần giữ chuột và di chuyển chuột để xóa các bức tường một cách dễ dàng.
[Fix Error] Đã thêm phiên bản VB.Net của cùng một chương trình chính xác.
Comments
ACE áp dụng và phát triển một trò chơi mới cho ae teen chơi nhé. :)
ReplyDelete