1. Trang chủ
  2. » Giáo Dục - Đào Tạo

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

57 11 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 57
Dung lượng 2,06 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • CHƯƠNG 1. KHẢO SÁT, ĐẶC TẢ YÊU CẦU BÀI TOÁN (6)
    • 1.1. Mô tả yêu cầu bài toán (6)
    • 1.2. Biểu đồ use case (6)
      • 1.2.1. Biểu đồ use case tổng quan (6)
      • 1.2.2. Biểu đồ use case phân rã mức 2 (8)
    • 1.3. Đặc tả use case (10)
  • CHƯƠNG 2. PHÂN TÍCH THIẾT KẾ BÀI TOÁN (18)
    • 2.1. Thiết kế Cơ sở dữ liệu hoặc Cấu trúc tệp dữ liệu (18)
    • 2.2. Biểu đồ trình tự (18)
    • 2.3. Biểu đồ lớp (22)
    • 2.4. Thiết kế chi tiết lớp (31)
  • CHƯƠNG 3. THUẬT TOÁN SỬ DỤNG (40)
    • 3.1. Công nghệ sử dụng (40)
    • 3.2. Các thuật toán đã sử dụng (40)
  • CHƯƠNG 4. XÂY DỰNG CHƯƠNG TRÌNH MINH HỌA (41)
    • 4.1. Kết quả chương trình minh họa (41)
    • 4.2. Giao diện chương trình (41)
    • 4.3. Kiểm thử các chức năng (47)
      • 4.3.1. Kiểm thử cho chức năng 1 (49)
      • 4.3.2. Kiểm thử cho chức năng 2 (49)
      • 4.3.3. Kiểm thử cho chức năng 3 (49)
      • 4.3.4. Kiểm thử cho chức năng 4 (49)
      • 4.3.5. Kết luận (51)
  • TÀI LIỆU THAM KHẢO (54)

Nội dung

Lớp MainMenu: hiển thị các thành phần của Menu để người chơi lựa chọn, bao gồm: bật/ tắt âm thanh, chọn chế độ chơi khó hay dễ, xem điểm cao, bắt đầu vào trò chơi, thoát trò chơi và hướn

KHẢO SÁT, ĐẶC TẢ YÊU CẦU BÀI TOÁN

Mô tả yêu cầu bài toán

Xây dựng trò chơi bắn tàu, cho phép người chơi chơi với máy, bao gồm các chức năng chính:

+ Cho phép người chơi lựa chọn tàu chiến, sắp xếp đội hình (mỗi loại tàu chiến có kích thước và điểm số khác nhau)

+ Đánh dấu tọa độ bắn trật , bắn trúng của mỗi lượt chơi

Chức năng ghi nhận và lưu trữ kết quả thi đấu cho người chơi, bao gồm điểm số đạt được và số lần dự đoán đã thực hiện Hệ thống cũng ghi lại lịch sử trận chiến, với các bước dự đoán của người chơi và kết quả bắn trúng hoặc bắn trượt ở mỗi lượt Việc lưu trữ này giúp người chơi theo dõi tiến bộ, phân tích chiến thuật và cải thiện hiệu suất thi đấu theo thời gian.

+ Xây dựng thuật toán cho máy chơi ở hai mức độ dễ và khó

+ Cấu hình game: tắt bật âm thanh / âm nhạc / reset điểm số

Biểu đồ use case

1.2.1 Biểu đồ use case tổng quan

TIEU LUAN MOI download : skknchat@gmail.com

1.2.2 Biểu đồ use case phân rã mức 2

Phân rã use case Start, ta được các use case:

Phân rã use case Prepare, ta được các use case

TIEU LUAN MOI download : skknchat@gmail.com

Phân tích use case Fight, ta được các use case:

Đặc tả use case

- Đặc tả use case Start

Mã UC (UC #) BS007 Tên usecase Start

Tác nhân Người chơi (Player) Điều kiện trước Người chơi chạy chương trình

No Thực hiện Hành động

1 Player Click vào nút easy/ hard

2 System Thay đổi chế độ chơi khó / dễ

3 Player Click vào nút GameRule

4 System Hiển thị hướng dẫn chơi

5 Player Click vào nút HighScore

6 System Hiển thị màn hình lịch sử điểm cao

7 Player Click vào nút Sound on/ off

8 System Bật/ tắt âm thanh

9 Player Click vào nút Play

10 System Khởi tạo giao diện sắp xếp tàu lên bản đồ

11 Player Click vào nút Exit

12 System Thoát khỏi chương trình Điều kiện sau Người chơi ấn nút Play

TIEU LUAN MOI download : skknchat@gmail.com

- Đặc tả use case Prepare

Mã UC (UC #) BS008 Tên usecase Prepare

Tác nhân Người chơi (Player) Điều kiện trước Người chơi click vào nút Play ở giao diện MainMenu

No Thực hiện Hành động

1 Player Kéo tàu từ container chứa tàu vào trong Map

2 System Hiển thị vị trí tàu người chơi kéo vào

3 Player Kéo tàu từ vị trí cũ đến vị trí mới trong Map

4 System Hiển thị vị trí tàu người chơi vừa kéo thả

5 Player Click vào nút auto

6 System Sắp xếp tàu ở container vào trong

Map một cách ngẫu nhiên

7 Player Click vào nút back

8 System Khởi tạo giao diện MainMenu

9 Player Click vào nút ready

10 System Khởi tạo giao diện PlayGame

Luồng thực thi mở rộng

Hệ thống đổi hướng tàu được kích hoạt khi người chơi nhấn chuột phải để chỉnh hướng tàu một cách nhanh chóng và trực quan Nếu người chơi thả tàu ở ngoài bản đồ, tàu sẽ được trả về vị trí cũ để đảm bảo quỹ đạo hợp lý và trò chơi không bị lệch Tương tự, khi người chơi thả tàu vào tàu khác, hệ thống sẽ tự động trả tàu về vị trí cũ nhằm duy trì trật tự và an toàn cho toàn bộ trận đấu.

Trong hệ thống quản lý tàu của trò chơi, hệ thống đổi hướng tàu được kích hoạt khi người chơi nhấp chuột phải lên tàu để đổi hướng di chuyển; hệ thống trả tàu về vị trí ban đầu khi người chơi thả tàu ở ngoài bản đồ để đảm bảo tàu không mất khỏi phạm vi chơi; và hệ thống trả tàu về vị trí cũ khi người chơi thả tàu vào tàu khác nhằm duy trì trật tự và tránh sai lệch vị trí Điều kiện áp dụng là tất cả các tàu phải được xếp lên bản đồ.

- Đặc tả use case Fight

Mã UC (UC #) BS009 Tên usecase Fight

Trong trò chơi, tác nhân là người chơi Điều kiện trước khi người chơi click vào nút ready trên giao diện xếp tàu là tất cả các tàu đã được sắp xếp lên Map.

TIEU LUAN MOI download : skknchat@gmail.com chính

No Thực hiện Hành động

1 Player Click vào nút back

2 System Đóng cửa sổ PlayGame và hiện cửa sổ với giao diện MainMenu

3 Player Click vào 1 ô bất kỳ trên bản đồ.

4 System Kiểm tra ô đó đã được đánh hay chưa.

5 System Kiểm tra ô được chọn có tàu hay không

6 System Kiểm tra xem có tàu nào bị hạ hoàn toàn chưa

7 System Kiểm tra người chơi hoặc máy đã thắng chưa

8 System Chọn 1 ô ngẫu nhiên để bắn tàu người chơi

9 Player Click nút “Play Again” khi player hoặc máy đã thắng

10 System Lưu kết quả điểm số của người chơi vào dữ liệu điểm

11 System Quay trở về Menu

12 Player Click nút Highscore khi player hoặc máy đã thắng

13 System Hiển thị màn hình lịch sử điểm cao

Luồng thực thi mở rộng

4a System Không thực hiện gì nếu ô được chọn đã được chọn trước đó.

4b System Nếu ô đó chưa được chọn, thực hiện luồng thực thi số 5 5a System Nếu ô không có tàu, thay đổi ô đó thành biểu tượng ô màu trắng (không có tàu) Thực hiện luồng thực thi 8 5b System Nếu ô có tàu, thay đổi biểu tượng ô thành hình ảnh ô màu đỏ, thực hiện luồng thực thi 6

6a System Nếu chưa, thực hiện luồng thực thi 8 6b System Nếu rồi, thay hình ảnh các ô tại vị trí con tàu đó thành hình ảnh của con tàu, thực

TIEU LUAN MOI download : skknchat@gmail.com hiện luồng thực thi 7

7a System Nếu chưa, thực hiện luồng thực thi 8 7b System Nếu rồi, hiển thị kết quả của người chơi và chờ người chơi lựa chọn trở về menu hoặc xem lịch sử điểm cao 8a System Thực hiện luồng thực thi 4.

10a System Nếu điểm của người chơi cao hơn 1 số điểm cao trong dữ liệu thì cập nhật lại điểm cao

10b System Nếu điểm người chơi thấp hơn các điểm cao thì không cập nhật.

13a System Nếu người chơi ấn nút reset, xóa lịch sử điểm cao

13b System Quay về giao diện của

MainMenu nếu người chơi ấn nút back Điều kiện sau Người chơi xem điểm cao hoặc quay về gia diện MainMenu

TIEU LUAN MOI download : skknchat@gmail.com

PHÂN TÍCH THIẾT KẾ BÀI TOÁN

Thiết kế Cơ sở dữ liệu hoặc Cấu trúc tệp dữ liệu

Biểu đồ trình tự

-Biểu đồ trình tự của use case Prepare

TIEU LUAN MOI download : skknchat@gmail.com

-Biểu đồ trình tự của use case Fight

TIEU LUAN MOI download : skknchat@gmail.com

Biểu đồ lớp

- Các lớp trong chương trình: + Lớp Map

IT3100 – Lập trình hướng đối tượng 20212

TIEU LUAN MOI download : skknchat@gmail.com

IT3100 – Lập trình hướng đối tượng 20212

TIEU LUAN MOI download : skknchat@gmail.com

IT3100 – Lập trình hướng đối tượng 20212

TIEU LUAN MOI download : skknchat@gmail.com

IT3100 – Lập trình hướng đối tượng 20212

TIEU LUAN MOI download : skknchat@gmail.com

IT3100 – Lập trình hướng đối tượng 20212

Thiết kế chi tiết lớp

Phân tích: để giải quyết bài toán này chúng ta xây dựng 8 lớp:

Lớp Ship : chứa hình ảnh của các con tàu với các kích thước khác nhau

Lớp Map : là một bản đồ có kích thước 10x10, mỗi đối tượng của lớp Map là một bản đồ.

Lớp MainMenu quản lý giao diện menu chính của trò chơi, hiển thị các thành phần để người chơi lựa chọn: bật/tắt âm thanh để điều chỉnh âm lượng, chọn chế độ chơi (khó hay dễ) để thay đổi độ khó, xem điểm cao để theo dõi thành tích, bắt đầu trò chơi để vào màn chơi, thoát trò chơi khi cần và xem hướng dẫn chơi để nắm bắt quy tắc điều khiển MainMenu giúp người chơi dễ dàng truy cập các tùy chọn quan trọng và tối ưu trải nghiệm chơi game.

Lớp HighScore hiển thị các điểm cao mà người chơi đã đạt được, cho phép người dùng theo dõi thành tích của mình một cách trực quan Nếu muốn xóa điểm cao đã tích lũy, người dùng có thể nhấn nút reset Nhấn nút back để quay về MainMenu và tiếp tục trò chơi hoặc chọn chế độ khác.

Lớp Creator hiển thị khung chứa các tàu chiến và bản đồ để người chơi có thể đặt tàu lên các vị trí trên bản đồ một cách trực quan Người chơi có thể tự thao tác đặt tàu hoặc dùng nút Auto để tự động sắp xếp tàu với vị trí ngẫu nhiên, giúp thiết lập trận đấu nhanh chóng và tiện lợi.

Lớp PlayGame hiển thị hai bản đồ: bản đồ của người chơi và bản đồ của máy, cho phép người chơi chọn tọa độ bắn trên bản đồ máy và ngược lại máy sẽ bắn trên bản đồ người chơi được cấu hình từ Creator; đồng thời lớp này sẽ hiển thị các thông số game quan trọng như vị trí người chơi đã bắn và kết quả lượt bắn (trúng hay trượt), giúp người chơi theo dõi diễn biến trận đấu và tối ưu chiến thuật.

Lớp EndScreen hiển thị điểm số của người chơi, phát âm thanh kết thúc và trình bày kết quả là thắng hay thua; nó cung cấp nút Highscore để vào màn hình HighScore và nút Play Again để quay về MainMenu, giúp người chơi tiếp tục trải nghiệm trò chơi một cách nhanh chóng và dễ dàng.

Lớp BattleShip : khởi tạo đối tượng MainMenu để bắt đầu thực thi trò chơi.

Chứa hình ảnh của các con tàu ( ship: Image) với chiều dài 1,2,3,4,5 (chiều dài tính theo số ô trên bản đồ, 1 ô tương đương với chiều dài là 1)

Lớp Ship có một phương thức khởi tạo nhận tham số length, w, h và isNgang Tham số length biểu thị chiều dài của con tàu trên bản đồ, trong khi tham số w và h xác định lần lượt chiều rộng và chiều cao của hình ảnh con tàu được vẽ trên màn hình người chơi Tham số isNgang là một cờ để kiểm tra tàu ngang hay dọc, từ đó thiết lập hướng tàu trong trò chơi Quá trình khởi tạo gán các giá trị này vào các thuộc tính tương ứng của đối tượng tàu, quyết định kích thước, hướng và cách hiển thị tàu trên cả bản đồ lẫn giao diện người chơi.

- Phương thức rotateShip() với 4 tham số truyền vào là (length, w, h, isNgang) để lấy đường dẫn tương ứng với tàu ngang hay dọc và theo chiều dài của tàu

- Phương thức loadImage() với 3 tham số truyền vào (s,w,h): trả về hình ảnh được lấy từ đường dẫn s và được ép kích thước sang (w,h).

Lớp này kế thừa lớp JPanel, bao gồm các thành phần:

- Mảng mapPiece[][] với kiểu dữ liệu là JButton, đây là mảng có kích thước 10x10, ứng với 10x10 ô trên bản đồ

- Mảng boolean isShip[][]: đánh dấu xem ô (i,j) trên bản đồ có tàu ở đó hay không

Lớp Map có 1 phương thức khởi tạo:

+ constructor với 2 tham số truyền vào là w, h ứng với kích thước dài, rộng của bản đồ

Trong constructor này có khởi tạo mảng mapPiece và isShip, mảng mapPiece được add vào

JPanel để hiển thị các nút bấm trên bản đồ (phục vụ cho người chơi khi chơi)

+ Phương thức init() khởi tạo mảng isShip ban đầu là false, để đánh dấu các ô trên bản đồ đều chưa xuất hiện tàu nào

TIEU LUAN MOI download : skknchat@gmail.com

IT3100 – Lập trình hướng đối tượng 20212

Trong trò chơi, Lớp Menu đảm nhận nhiệm vụ hiển thị màn hình lựa chọn cho người chơi với các tùy chọn thiết yếu: bắt đầu chơi, bật/tắt âm thanh, chọn chế độ chơi (dễ hoặc khó), xem điểm cao, thoát khỏi trò chơi và xem hướng dẫn chơi Lớp Menu được triển khai bằng một JFrame chứa màn hình menu, trong đó có một JLabel tên là menu1 cùng với các nút (buttons) tương ứng cho mỗi chức năng, giúp người chơi nhanh chóng điều hướng và thiết lập trò chơi trước khi vào cuộc Cách bố trí này không chỉ tối ưu trải nghiệm người dùng mà còn giúp nội dung được tối ưu hóa cho SEO nhờ mô tả rõ ràng các thành phần giao diện và chức năng liên quan tới Menu, JFrame, JLabel và các nút điều khiển.

+ PLAY: khởi tạo đối tượng của Creator, màn hình xếp tàu được hiện ra để người chơi sắp xếp đội hình

+ EASY/HARD: chọn chế độ khó/ dễ (nếu button hiển thị là easy -> chế độ dễ, hard -> chế độ khó)

+ GAME RULE: hiển thị hướng dẫn luật chơi

+ HIGHSCORE: hiển thị lịch sử điểm cao

+ SOUND OFF/ON: bật/ tắt âm thanh

+ EXIT: thoát khỏi chương trình

Lớp MainMenu chứa hai đối tượng: một đối tượng của lớp Creator và một đối tượng của lớp HighScore Đối tượng Creator được khởi tạo khi người chơi nhấn nút Play, còn đối tượng HighScore được khởi tạo khi người chơi nhấn nút HighScore.

Trong lớp MainMenu, biến clip có kiểu dữ liệu Clip đảm nhận chức năng phát âm thanh trong trò chơi Biến static isPlaySound có kiểu boolean dùng để nhận biết âm thanh đang bật hay tắt, từ đó chương trình có thể quản lý và điều khiển âm thanh một cách hiệu quả Việc kết hợp giữa Clip và biến trạng thái này giúp menu tương tác tốt hơn với người chơi và thuận tiện tích hợp các hiệu ứng âm thanh khác.

Lớp này có một phương thức khởi tạo nhận các tham số lần lượt là w, h và playSound; w và h là chiều rộng và chiều cao của frame, còn playSound là biến boolean xác định âm thanh có đang bật hay tắt (isPlaySound = playSound) Trong phương thức khởi tạo, màn hình menu1 được khởi tạo và hệ thống âm thanh (clip) có thể được khởi tạo ngay khi người dùng bật âm thanh.

+ Phương thức loadImage() với 3 tham số truyền vào (s,w,h): trả về hình ảnh được lấy từ đường dẫn s và được ép kích thước sang (w,h).

+ Phương thức playSound() dùng để khởi tạo đối tượng clip để phát âm thanh với tham số truyền vào là chuỗi ký tự thể hiện đường dẫn đến file.

+ Các button trong class MaiMenu đều được cài đặt sự kiện (actionListener).

Phương thức actionPerformed xử lý các sự kiện trên các button Với Play, chương trình sẽ khởi tạo đối tượng của lớp Creator và chuyển sang phần sắp xếp tàu chiến; với HighScore, đối tượng của lớp HighScore được khởi tạo và chương trình hiển thị lịch sử điểm cao; nút sound cho phép bật/tắt âm thanh; nút gameMode cho phép người dùng chọn chế độ khó hoặc dễ; với gameRule, khi nhấn vào sẽ làm cho label showRules hiện lên và nhấn thêm lần nữa sẽ ẩn label này; cuối cùng, nhấn Exit để thoát khỏi chương trình.

Lớp HighScore có phương thức khởi tạo nhận vào 3 tham số: w, h và playSound Tham số w và h xác định kích thước khung giao diện hiển thị điểm số, trong khi playSound cho phép bật hoặc tắt âm thanh khi tương tác Phương thức này dùng để thêm frame và bố trí các nút chức năng, bao gồm Reset để xóa lịch sử điểm cao và Back để quay về menu chính.

resetHighScore() is a function that rewrites the high.txt file so every stored value is set to zero showScore() is a function that reads high.txt and displays the score history for the top five highest scores Together, these methods manage persistent high-score data for the game: resetHighScore provides a clean slate, while showScore offers a quick view of the best performances.

+ Phương thức loadImage(): với 3 tham số truyền vào (s,w,h): trả về hình ảnh được lấy từ đường dẫn s và được ép kích thước sang (w,h).

TIEU LUAN MOI download : skknchat@gmail.com

IT3100 – Lập trình hướng đối tượng 20212

+ Phương thức playSound() dùng để khởi tạo đối tượng clip để phát âm thanh với tham số truyền vào là chuỗi ký tự thể hiện đường dẫn đến file.

Lớp Creactor kế thừa lớp JLabel, có chức năng hiển thị tàu và hiển thị hình ảnh bản đồ để người chơi có thể xếp tàu lên đó.

Trong giao diện, một JFrame được dùng làm khung chính chứa các JLabel và JButton hiển thị lên màn hình Label chính là shipContainer, dùng để chứa hình ảnh tàu và bản đồ (map) Các JButton gồm back để quay về màn hình Menu của MainMenu, auto để tự động sắp xếp tàu trên bản đồ theo thuật toán đã được cài sẵn, và ready để chuyển sang màn hình PlayGame khi người chơi đã xếp xong tất cả tàu lên bản đồ.

Trong hệ thống đồ họa, mảng ship[] chứa các đối tượng của lớp Ship, dùng để lưu trữ hình ảnh các con tàu với kích thước khác nhau và được dán lên label shipContainer; song song đó, mảng lengShip[] lưu trữ chiều dài của từng con tàu nhằm hỗ trợ căn chỉnh và xử lý kích thước khi hiển thị.

THUẬT TOÁN SỬ DỤNG

Công nghệ sử dụng

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

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 người chơi nhấn Play trong menu, họ sẽ được chuyển đến màn hình sắp xếp các tàu vào từng vị trí trên bản đồ Ở màn hình nà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 nhấn và giữ chuột lên một con tàu để chuẩn bị kéo thả, phương thức mousePressed được gọi Tại thời điểm này, xStart và yStart nhận giá trị tọa độ của con tàu, cụ thể là tọa độ điểm góc trên bên trái của tàu, trong khi X và Y nhận giá trị là tọa độ hiện tại của chuột để xác định vị trí kéo thả.

+ 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 kéo tàu và nhấn chuột phải cùng lúc, mouseClicked và mousePressed đều được gọi, khiến tàu quay theo từng lần nhấn chuột phải.

Trong phương thức MouseReleased, hệ thống sẽ kiểm tra xem vị trí thả chuột có nằm trong vùng bản đồ hay không Nếu không nằm trong bản đồ, con tàu sẽ được di chuyển về vị trí xStart và yStart (hai biến đã được tính toán trong MousePressed) Nếu vị trí thả nằm trong bản đồ, chương trình sẽ kiểm tra xem tại vị trí mới đã có tàu khác ở đó hay chưa Nếu đã có tàu khác ở đó, tàu sẽ được di chuyển về xStart và yStart Ngược lại, tàu sẽ được chuyển đến tọa độ mới và 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 toá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:

Khi Q rỗng, chương trình sẽ ngẫu nhiên bắn một ô bất kỳ trên bản đồ Nếu ô được bắn chứa tàu, gọi là ô (i, j), thì các ô liền kề là (i+1, j), (i-1, j), (i, j+1) và (i, j-1) sẽ được đưa vào hàng đợi để chờ lượt bắn tiếp theo Động thái này tối ưu hóa xác suất đánh trúng tàu bằng cách mở rộng từ các ô vừa phát hiện, đồng thời giữ cho quá trình săn tàu diễn ra có tổ chức và có kế hoạch.

Trong quá trình xử lý, khi hàng đợi Q còn phần tử, chương trình lấy ô ở đầu hàng để thực hiện lượt bắn Nếu ô này có tàu và được xác định là ô (i, j), thì bốn ô liền kề (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.

IT3100 – Lập trình hướng đối tượng 20212

XÂY DỰNG CHƯƠNG TRÌNH MINH HỌA

Kết quả chương trình minh họa

Chương trình đã thực hiện được những chức năng chính sau:

+ Cho phép người chơi lựa chọn tàu chiến, sắp xếp đội hình (mỗi loại tàu chiến có các kích thước, hướng khác nhau)

+ Đánh dấu tọa độ bắn trật, bắn trúng của mỗi lượt chơi

+ Thống kê số lần đã bắn, bắn trúng hay trượt, vị trí đã bắn

+ Lưu lại điểm số của người chơi

+ Xây dựng thuật toán cho máy chơi ở chế độ khó và dễ

+ Chơi với máy, xem lịch sử điểm cao.

+ Cấu hình game: tắt bật âm thanh, reset điểm cao

Giao diện chương trình

1 Giao diện khi bắt đầu khởi chạy game

TIEU LUAN MOI download : skknchat@gmail.com

IT3100 – Lập trình hướng đối tượng 20212

2 Giao diện xem lịch sử điểm cao

3 Giao diện sắp xếp tàu lên bản đồ

TIEU LUAN MOI download : skknchat@gmail.com

IT3100 – Lập trình hướng đối tượng 20212

5 Giao diện kết thúc game

TIEU LUAN MOI download : skknchat@gmail.com

IT3100 – Lập trình hướng đối tượng 20212

Kiểm thử các chức năng

Các chức năng chính cần kiểm thử:

+ Cho phép người chơi sắp xếp đội hình (mỗi loại tàu chiến có các kích thước khác nhau, có thể thay đổi hướng của tàu)

+ Lưu lại điểm số của người chơi

+ Xem lịch sử điểm cao, reset điểm cao

TIEU LUAN MOI download : skknchat@gmail.com

IT3100 – Lập trình hướng đối tượng 20212

4.3.1 Kiểm thử cho chức năng 1

Chức năng: cho phép người chơi lựa chọn, sắp xếp, xoay tàu chiến.

Trong thiết lập trò chơi, số lượng tàu chiến cho mỗi loại được cố định ở 5 chiếc, với 5 kích thước tương ứng theo độ dài từ 1 đến 5 ô trên bản đồ (tàu dài 1 ô, 2 ô, 3 ô, 4 ô và 5 ô).

Kết quả kiểm thử sắp xếp tàu chiến

STT input Exception Kết quả

1 Các tàu chưa nằm Xử lý: không cho người chơi OK hết trong map bấm vào nút ready

2 Các tàu đã nằm Xử lý: cho phép người chơi OK trên map bấm nút ready

4.3.2 Kiểm thử cho chức năng 2

Chức năng: Lưu lại điểm số, xem lịch sử điểm số, reset điểm cao

STT input Exception Kết quả

1 File highscore.txt Xử lý: tạo mới file OK không tồn tại highscore.txt

2 File highscore.txt được Không xử lý OK nhập thành công

4.3.3 Kiểm thử cho chức năng 3

Chức năng: bật tắt âm thanh

STT input Exception Kết quả

1 File sound.wav không Xử lý: bỏ qua âm thanh OK tồn tại

2 File sound.wav đã tồn Không xử lý OK tại

4.3.4 Kiểm thử cho chức năng 4

Chức năng: xem hướng dẫn chơi

TIEU LUAN MOI download : skknchat@gmail.com

IT3100 – Lập trình hướng đối tượng 20212

STT input Exception Kết quả

1 File gamerule.txt Xử lí: không hiện OK không tồn tại hướng dẫn chơi

2 File gamerule.txt Không xử lí OK được tìm thấy

Chương trình chạy ổn định, ít lỗi logic xảy ra Nếu có lỗi xảy ra thì đa phần là do các file input bị thiếu hoặc lỗi.

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

Chương trình đã hoàn thành được những yêu cầu cơ bản của bài toán. Ưu điểm:

+ Nhẹ, tốn ít tài nguyên Nhược điểm:

+ Một số hình ảnh trong game chưa thực sự đẹp

+ Các lớp trong chương trình còn sử dụng nhiều thuộc tính Hướng phát triền cho đề tài:

+ Giảm thiểu các thuộc tính cho các lớp bằng các biến cục bộ

+ Tìm kiếm thêm hình ảnh để giao diện game trau chuốt hơn

+ Thêm hướng dẫn chơi để người chơi dễ hiểu

Dù vẫn còn một số thiếu sót, những kết quả đạt được từ bài tập lớn lần này đã giúp chúng em tự tin hơn và nuôi dưỡng động lực để tiếp tục rèn luyện kỹ năng lập trình Những thành quả này củng cố niềm tin vào bản thân, đồng thời thúc đẩy đam mê với lập trình và định hướng phấn đấu để đạt được nhiều thành tựu trên con đường công nghệ thông tin.

Chúng em rất mong nhận được những đánh giá của thầy.

Chúng em xin chân thành cảm ơn!

TIEU LUAN MOI download : skknchat@gmail.com

TIEU LUAN MOI download : skknchat@gmail.com

Ngày đăng: 19/07/2022, 20:04

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w