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

(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

35 10 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

Tiêu đề Xây dựng game Battle Ship
Tác giả Đinh Duy Anh, Đỗ Vũ Tùng Lâm, Nguyễn Đắc Hoàng Anh, Cao Thành Huy, Nguyễn Viết Toàn
Người hướng dẫn ThS. Nguyễn Mạnh Tuấn
Trường học Trường Đại học Bách khoa Hà Nội
Chuyên ngành Lập Trình Hướng Đối Tượng
Thể loại Bài tập lớn
Năm xuất bản 2022
Thành phố Hà Nội
Định dạng
Số trang 35
Dung lượng 2,06 MB

Cấu trúc

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

Nội dung

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

+ Lưu lại kết quả điểm số đạt được (điểm số và số lần dự đoán người chơi đã thực hiện) và lịch sử trận chiến (các bước dự đoán của người chơi và kết quả bắn trúng / bắn trượt)

+ 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

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

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

- Đặ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

1a System Đổi hướng tàu nếu player ấn chuột phải 1b System Trả tàu về vị trí cũ nếu player thả tàu ở ngoài map 1c System Trả tàu về vị trí cũ nếu player thả tàu vào tàu khác 2a System Đổi hướng tàu nếu player ấn chuột phải 2b System Trả tàu về vị trí cũ nếu player thả tàu ở ngoài map 2c System Trả tàu về vị trí cũ nếu player thả tàu vào tàu khác Điều kiện sau Tất cả các tàu đều được xếp lên Map

- Đặc tả use case Fight

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

Tác nhân Người chơi (Player) Điều kiện trước Người chơi click vào nút ready trong giao diện xếp tàu và tất cả các tàu đều đã được sắp xếp lên Map

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 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

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

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

Biểu đồ lớp

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

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 : 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ướng dẫn chơi

Lớp HighScore: hiển thị điểm cao mà người chơi đã đạt được, nếu muốn xóa các điểm cao đã đạt được thì người chơi ấn nút reset, nếu ấn nút back thì quay về MainMenu Lớp Creator : hiển thị khung chứa các tàu chiến và hiển thị bản đồ để người chơi có thể đặt các con tàu lên bản đồ đó Ngoài ra người chơi có thể sử dụng nút Auto để tự động sắp xếp tàu với vị trí ngẫu nhiên.

Lớp PlayGame : hiển thị 2 bản đồ (bản đồ của người chơi và bản đồ của máy) Người chơi sẽ lựa chọn tọa độ để bắn trên bản đồ của máy và ngược lại (máy sẽ bắn trên bản đồ của người chơi được cài đặt từ Creator), đồng thời hiển thị các thông số game như: vị trí người chơi đã bắn, bắn trúng hay bắn trượt

Lớp EndScreen: hiển thị số điểm của người chơi, tạo âm thanh, hiển thị kết quả thắng thua của người chơi, nút Highscore để vào HighScore, nút Play Again để quay về MainMenu

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ó 1 phương thức khởi tạo với tham số truyền vào là (length, w, h, isNgang) lần lượt là chiều dài con tàu (ứng trên bản đồ), chiều dài và rộng của hình ảnh con tàu đó (ứng với màn hình của người chơi) và tham số kiểm tra tàu ngang hay dọc

- 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

Là lớp thực hiện nhiệm vụ hiển thị Menu với các lựa chọn cho người chơi, bao gồm: bắt đầu chơi, bật/tắt âm thanh, chọn chế độ chơi (khó/dễ), xem điểm cao, thoát khỏi trò chơi, hướng dẫn chơi Lớp Menu có 1 JFrame để chứa màn hình lựa chọn cho người chơi, JFrame bao gồm 1 JLabel menu1 chứa các button tương ứng với các chức năng để người chơi sử dụng như trên đó là

+ 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 còn bao gồm 1 đối tượng của lớp Creator, đối tượng này sẽ được khởi tạo khi người chơi bấm vào nút Play và 1 đối tượng của lớp HighScore, đối tượng này cũng sẽ được khởi tạo khi ấn vào nút HighScore

+ Biến clip với kiểu dữ liệu Clip trong lớp MainMenu có chức năng phát âm thanh trong trò chơi, biến static isPlaySound có kiểu boolean, giúp chương trình nhận biết âm thanh đang bật hay tắt

+ Lớp có 1 phương thức khởi tạo với các tham số truyền vào lần lượt là các biến (w, h, playSound) với w, h là chiều dài, chiều rộng của frame, playSound là biến boolean giúp nhận biết âm thanh đang bật hay tắt (isPlaySound = playSound) Trong phương thức khởi tạo này, màn hình menu1 được khởi tạo, đồng thời âm thanh (clip) có thể được khởi tạo nếu người chơi 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ý sự kiện trên các button Đối với button Play, khi người chơi click vào thì đối tượng của lớp Creator sẽ được khởi tạo, chương trình sẽ chuyển qua phần sắp sếp tàu chiến; còn với button HighScore, đối tượng của HighScore được khởi tạo, chương trình chuyển qua phần hiển thị lịch sử điểm cao; button sound dùng để bật/ tắt âm thanh; button gameMode để chọn chế độ khó/ dễ; với button gameRule khi người chơi ấn vào thì label showRules được set visible và khi ấn lại vào button gameRule thì label showRules sẽ được xóa bỏ; và cuối cùng nếu ấn vào button

Exit thì sẽ thoát khỏi chương trình

Lớp HighScore có phương thức khởi tạo với 3 tham số truyền vào là w, h và playSound, dùng để add frame và các button là reset (xóa lịch sử điểm cao) và back (quay về menu chính)

+ Phương thức resetHighScore() : dùng để sửa file high.txt để các giá trị đều bằng 0 + Phương thức showScore(): đọc file high.txt và hiển thị lịch sử điểm của 5 lần điểm cao nhất

+ 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.

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 đó.

+ 1 JFrame (frame) dùng để chứa các Label và button để hiển thị lên màn hình Các Label chính bao gồm: shipContainer dùng để chứa hình ảnh của tàu, bản đồ (map) Các button bao gồm back (quay trở lại màn hình menu của lớp MainMenu), auto (tự động sắp xếp tàu trên bản đồ theo thuật toán được cài sẵn), ready (chuyển sang màn hình PlayGame khi người chơi đã sắp xếp hết các con tàu lên map).

+ Mảng ship[] là mảng các đối tượng của lớp Ship, dùng để lưu hình ảnh các con tàu với kích thước khác nhau để dán lên label shipContainer Mảng lengShip[] lưu chiều dài cảu con tàu.

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 ấ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 toá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 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:

+ 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.

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

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 đồ

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

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

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.

Số lượng tàu chiến của từng loại tàu được quy định sẵn là 5 tàu với 5 kích thước (độ dài tàu ứng với số ô trên bản đồ là tàu độ dài 1, 2, 3, 4, 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

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

Mặc dù còn một số thiếu sót, tuy vậy những gì thu được từ bài tập lớn lần này giúp chúng em tự tin hơn để tiếp tục đam mê trong lập trình.

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!

Ngày đăng: 30/11/2022, 14:13

HÌNH ẢNH LIÊN QUAN

+ 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) - (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
ho 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) (Trang 6)
+ 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) - (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
ho 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) (Trang 26)
+ 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) - (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
ho 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) (Trang 29)

TỪ KHÓA LIÊN QUAN

w