CHƯƠNG 3 THUẬT TOÁN SỬ DỤNG

Một phần của tài liệu (TIỂU LUẬN) bài tập lớn môn lập TRÌNH HƯỚNG đối TƯỢNG đề tài xây dựng game battle ship (Trang 25 - 26)

3.1. Công nghệ sử dụng

Để giải quyết bài tốn về giao diện đồ họa, nhóm sử dụng cơng nghệ Java Swing và Java AWT

3.2. Các thuật toán đã sử dụng

3.2.1 Thuật toán sắp xếp tàu vào bản đồ

Sau khi ấn vào nút Play ở menu, người chơi sẽ được chuyển sang màn hình sắp xếp các con tàu vào từng vị trí trên bản đồ. Tại đây, mảng boolean M[][] được khởi tạo với các giá trị ban đầu là false.

+ Khi người chơi giữ chuột vào 1 con tàu nào đó để chuẩn bị kéo thả, phương thức mousePressed sẽ được gọi. Tại đây, biến xStart, yStart nhận giá trị tọa độ của con tàu (tọa độ của điểm góc trên bên trái của tàu) , biến X,Y nhận giá trị là tọa độ của chuột.

+ Khi người chơi kéo con tàu trên bản đồ, phương thức MouseDragged được gọi, hình ảnh con tàu sẽ di chuyển theo chuột.

+ Khi người chơi vừa kéo tàu ra vừa ấn chuột phải, đồng thời phương thức

mouseClicked và phương thức mousePressed sẽ được gọi, tàu sẽ xoay theo mỗi lần ấn chuột phải

+ Khi người chơi thả chuột ra, phương thức MouseReleased sẽ kiểm tra xem tại vị trí thả chuột, con tàu có nằm trong vùng bản đồ hay khơng. Nếu không trong bản đồ, con tàu sẽ đượt di chuyển về vị trí xStart và yStart (2 biến đã được tính tốn trong

MousePressed). Nếu con tàu nằm trong vùng bản đồ, chương trình kiểm tra xem tại vị trí mới đã có tàu khác nằm ở đó hay chưa. Nếu đã có tàu khác, tàu sẽ được di chuyển về xStart và yStart. Nếu chưa có tàu khác, tàu sẽ được chuyển đến tọa độ mới, mảng M sẽ được cập nhật lại.

3.2.2 Thuật toán chơi game chế độ dễ

Ở chế độ dễ, mỗi lượt máy bắn sẽ là 1 ô bất kỳ trên bản đồ nhờ vào phương thức hitRandom và biến random rd trong phương thức.

3.2.3 Thuật tốn chơi game chế độ khó

Ở chế độ khó, chương trình sử dụng 1 hàng đợi Q để lưu tọa độ các ô trên bản đồ, xuất phát từ Q rỗng.

Khi đến lượt máy bắn, chương trình kiểm tra hàng đợi Q rỗng hay khơng:

+ Nếu Q rỗng, chương trình sử dụng biến random để bắn một ô bất kỳ trên bản đồ. Nếu ơ này có tàu, gọi đó là ơ (i,j) thì 4 ơ (i+1,j) , (i-1,j), (i, j+1) và (i, j-1) sẽ được thêm vào hàng đợi để chờ lượt bắn sau.

+ Nếu Q có phần tử, chương trình lấy ra ơ ở đầu hàng đợi để bắn. Nếu ơ này có tàu, gọi đó là ơ (i,j) thì 4 ơ (i+1,j), (i-1,j), (i, j+1) và (i, j-1) sẽ được thêm vào hàng đợi để chờ lượt bắn sau.

24

Một phần của tài liệu (TIỂU LUẬN) bài tập lớn môn lập TRÌNH HƯỚNG đối TƯỢNG đề tài xây dựng game battle ship (Trang 25 - 26)