PHÂN CÔNG THÀNH VIÊN TRONG NHÓM Thời gian thực hiện Nguyễn Văn Thịnh Nguyễn Duy Nhất La Quốc Anh Đỗ Đình Nam Bùi Mạnh Thắng Tuần 1 -Tích lũy đầy cả các map -Tích lũy đầy đủ kiến t
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
BÁO CÁO BÀI TẬP LỚN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Đề Tài: Xây Dựng Game 2D
Giảng viên Hướng Dẫn: TS Vũ Thị Hương Giang ThS Trịnh Thành Trung
Nhóm sinh viên thực hiện:
Nguyễn Văn Thịnh MSSV: 20122512
Nguyễn Duy Nhất MSSV: 20120690 Bùi Mạnh Thắng MSSV: 20120884
La Quốc Anh MSSV: 20121195
Đỗ Đình Nam MSSV: 20122099
Hà Nội 05/2015
1
NHÓM 35 LỚP KSCLC K57
Trang 2MỤC LỤC
MỤC LỤC 2
LỜI NÓI ĐẦU 3
PHÂN CÔNG THÀNH VIÊN TRONG NHÓM 4
CHƯƠNG 1 MÔ TẢ YÊU CẦU 7
1.1 Mô tả yêu cầu bài toán 7
1.2 Biểu đồ use case 7
1.3 Đặc tả use case 8
CHƯƠNG 2 THIẾT KẾ CHI TIẾT 11
2.1 Thiết kế lớp 11
2.1.1 Biểu đồ lớp 11
2.1.2 Thiết kế chi tiết lớp 13
2.2 Thiết kế giao diện bắt đầu 15
CHƯƠNG 3 CHƯƠNG TRÌNH MINH HOẠ 17
3.1 Xây dựng chương trình 17
3.2 Kết quả chương trình 17
CHƯƠNG 4 KIỂM CHỨNG CHÉO 24
4.1 Đối tượng kiểm chứng (Verification) 24
4.2 Kiểm chứng cách trình bày báo cáo 24
4.3 Kiểm chứng thiết kế và kỹ năng lập trình 24
4.4 Kiểm thử tích hợp 24
CHƯƠNG 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 26
TÀI LIỆU THAM KHẢO 27
PHỤ LỤC 19
Trang 3LỜI NÓI ĐẦU
Trước sự phát triển như vũ bão của công nghệ thông tin và nhu cầu giải trí của con người cũng tăng lên theo từng ngày, con người ngày càng sử dụng nhiều game cho mục đích giải trí của mình Game đang ngày càng phát triển đa dạng và phong phú trên mọi nền tảng ở mọi thiết bị từ điện thoại di động, smart phone, laptop đến máy tính để bàn…
Trước nhu cầu sử dụng game để giải trí ngày càng gia tăng cùng với sự pháttriển của khoa học cong nghệ và đặc biệt là sự thành công của game flapy bird trong thời gian gần đây đánh dấu một bước ngoặt cho sự phát triển của dòng gameđơn giản và dễ chơi Nắm bắt được cơ hội nhóm chúng em quyết định lựa chọn để tài Xây dựng Game đối kháng
(có chút thay đổi so với đề tài game được giao là xây dựng game RPG) với ưu thế đơn giản dễ chơi, đồ họa đẹp mắt và bám theo cốt truyện của bộ truyện tranh
maga nổi tiếng ONE PIECE chúng em tinh tưởng sản phẩm sẽ có được chỗ đứng trên thị trường
Trong quá trình thực hiện chúng em gặp phải nhiều khó khăn và sai sót mong thầy cô và các bạn đánh giá khách quan và đóng góp giúp nhóm kịp thời sửa chữa Cuối Cùng để hoàn thành được bài tập lớn này, nhóm chúng em xin được gửi lời cảm ơn chân thành đến thầy/cô giáo hướng dẫn đề tài cô Vũ Thị Hương Giang, thầy Trinh Thành Trung, Giảng viên Khoa Công nghệ Thông tin Trường Đại học Bách Khoa Hà Nội - đã hết lòng giúp đỡ, hướng dẫn, chỉ dạy tận tình để nhóm
em hoàn thành được đề tài này
Hà Nội tháng 05 năm 2015 Nhóm 35 lớp KSCLC K57 Danh sách thành viên: Nguyễn Văn Thịnh Nguyễn Duy Nhất
Đỗ Đình Nam
La Quốc Anh Bùi Mạnh Thắng
3
NHÓM 35 LỚP KSCLC K57
Trang 4PHÂN CÔNG THÀNH VIÊN TRONG NHÓM Thời
gian
thực
hiện
Nguyễn Văn
Thịnh Nguyễn Duy Nhất La Quốc Anh Đỗ Đình Nam Bùi Mạnh Thắng
Tuần 1 -Tích lũy đầy
cả các map
-Tích lũy đầy đủ kiến thức java cơ bản -Tìm hiểu và xây dựng thuật toán xử
lý các loại va chạm
-Tích lũy đầy
đủ kiến thức java cơ bản -Thiết kế cấu trúc
background cho mỗi map
và tìm hiểu cách xây dựng giao diện khi khởi chạy
-Tích lũy đầy đủ kiến thức java cơ bản -Tìm hiểu phân tích thiết kế hệ thống âm thanh trong game
và đa luồng
Tìm hiểu tích lỹ đày đủ kiến thức
về graphics
và áp dụng các thuật toán va chạm, chuyển
Tìm hiểu tích lũy đầy đủ kiến thức về
grpahicsjava swing jpanel, jframe,button…
Tìm hiểu
và tích lũy đầy đủ kiến thức
Về java clip, sound, Graphics…
Trang 5động của nhân vật Tuần 3 Thực hiện viết
lý game chính chứa vòng lặp
vô hạn của game, xây dựng phương thức update
Xây dựng thêm các thuộc tính phương thức trong các lớp người chơi và quái vật
để kết nối xử lý
va chạm giữa chúng trong game
Viết mã nguồn giao diện bằng netbean Viết lớp
background để quản lý
background mỗi map
Viết mã nguồn các
âm thanh cho từng
sự kiên Tái cấu trúc lại mã nguồn toàn chương trình
cơ bản character
để các lớp con khác kế thừa
Lắp gép các sự kiện va chạm giữa người và quái thông qua các phương thức update
Lắp gép giao diện với các thành phần còn lại của game, Lắp ghép chuển động của back ground theo nhân vật tương ứng mỗi map
Xây dựng Các lớp bổ trợ trong game như helicopter
và xử lý va chạm nhân vật với các thành phần phụ trong game như hộp máu, hộp dame
Tuần 5 Xây dựng các
lớp đạn và Tổng quát hóa Xây dựng bổ Hoàn thiệ giao diện và các lớp Hoàn thiện nốt các xử
5
NHÓM 35 LỚP KSCLC K57
Trang 6quản lý đạn chuyển
động của các thành phần thông qua lớp
animation
sung các phương thức chuyển động của nhan vật
và các skill
load sprite sheet Tham gia thảo luận
và xây dựng kết nối các thành phần chương trình
lý về âm thanh, các thành phần game và hoàn thiện một phần lớp nhân vật
Tuần 6 Thảo luận và
hệ thống chương trình.
Sửa mã nguồn phù hợp với kết cấu mới
Sửa mã nguồn phù hợp với kết cấu mới
Sửa mã nguồn phù hợp với kết cấu mới
và test, và làm báo cáo, viết tài liệu.
Tính chính, đánh giá
và test,
và làm báo cáo, viết tài liệu.
Tính chính, đánh giá và test, và làm báo cáo, viết tài liệu.
Tính chính, đánh giá
và test, và làm báo cáo, viết tài liệu.
ý kiến, xây dựng
hệ thống
Hoàn thành công việc đúng thời gian quy định.
tích cực tham gia thảo luận, đóng góp
ý kiến, xây dựng
hệ thống.
Hoàn thành công việc đúng
tích cực tham gia thảo luận, đóng góp ý kiến, xây dựng
hệ thống
Hoàn thành công việc đúng thời gian quy định.
Ý thức tốt
tích cực tham gia thảo luận, đóng góp ý kiến, xây dựng hệ thống Hoàn thành công việc đúng thời gian quy định.
Trang 7Ý thức tốt thời gian
quy định.
Ý thức tốt
Ý thức tốt
CHƯƠNG 1: MÔ TẢ YÊU CẦU
1.1Mô tả yêu cầu bài toán:
- Xây dựng game đối kháng giữa người chơi và quái.
- Người chơi có thể: lựa chọn start,help,quit, tấn công quái vật theo 2 skill là
Q và W, di chuyển, nhảy…
- Người chơi có thể lựa chọn các map khi ở giao diện map chinh!.
1.2 Biểu đồ USE CASE
Tác nhân: người chơi
Use Case Diagram
Hình 1: biểu đồ use case
MOVE
EXIT
ATTACKSELECT
MAP
Trang 8Người dung bắt đầu chơi game click START
Hệ thống hiển thị map để người chơi lựa chọn vào các màn
Người dung click HELP
Hệ thống sẽ mở ra một dialog chứa đoạn text hướng dẫn chơi game
và giới thiệu về game
Người dung click X để thoát dialog và trở lại
Người chơi click vào nút back
Hệ thống sẽ quay trở lại menu start
Trang 9cao
Trang 10Khi người chơi tấn công trúng vào quái vật hệ thống sẽ trừ điểm HP của quái vật khi
HP quái vật =0 người chơi sẽ dành chiến thắng
1.3.8 EXIT
a) Mô tả:
Người chơi dùng use case này để thoát khỏi màn hình chơi game
Người chơi nhấn cácphím di chuyển hìnhmũi tên
Nhân vật di
chuyển sang
phải
Nhân vật dichuyển sangtrái
Nhân vậtnhảy lên
Trang 11b) Dòng sư kiện
Khi người chơi nhấn phím F
Hệ thống sẽ xác nhận là người chơi thua và quay trở lại màn hình select map
CHƯƠNG 2: THIẾT KẾ CHI TIẾT
H
11
NHÓM 35 LỚP KSCLC K57
Trang 12Hình 4 Biểu đồ lớp 1
Trang 13Hình 5: biểu đổ lớp 22.1.2 Thiết Kế Chi Tiết Lớp
Trang 14- Board(int level) khới tạo mỗi Board theo từ level
- iniBoard(int level) để thực hiện phương thức Board() ở trên
- paint(Grapichs g): để vẽ lên panel, trong phương thức paint được dùng để vẽ nhân vật, quái vật, background, mà một số thành phần khác của map
- run(): để thực hiện luồng được implement từ Runnable trong phương thức run() sử dụng vòng lặp và Thread.sleep() và gọi đến các hàm update của luffy,min1,bullet,bg và hàm repaint() đẻ vẽ lại jpanel mỗi khi lặp lại
- Iner class TAdapter extends KeyAdapter là mội class trong dùng để nghe các sự kiện
- Ngoài ra còn có các phương thức getert và setert của các thuộc tính tương ứng
Xây dựng lớp LUFFY extends Character
- LUFFY(),LUFFY(int level) hai hàm khởi tạo
- upDate(Enemy min, bulletSkill bullet,Background bg) phương thức dùng để cật nhật dữ liệu cho lớp LUFFY mỗi khi lặp lại trong phương thức có xây dựng các thuật toán chuyển động stand,jump,walk ,các thuật toán tấn công skill,skill1,skillulti và các thuật toán sử lý va chạm với quái vật hay các thành phần khác trong map
- keyPressed(KeyEvent e) bắt sự kiện nhấn phím
- keyReleased(KeyEvent e) bắt sự kiện khi nhả phím
- TopRect() trả về hình chữ nhật chứa nửa thân trên của nhân vật
- BotRect() trả về hình chữ nhật chứa nửa thân dưới của nhân vật
- BoundsRect() trả về hình chữ nhật chứa đường bao ngoài toàn hình của nhân vật
Trang 15- EspaceRect() trả về hình chữ nhật thể hiện vùng đánh quái
- Ngoài ra còn có các phương thức geter,seter tương tứng với các thuộc tính
- Enemy(int level) phương thức khởi tạo quái vật theo từng level
- update(LUFFY luffy) trong phương thức xây dựng các thuật toán chuyển động của quái đuổi theo nhân vật, khi vào một khoảng nhất định quái sẽ tung ra các skill,skill1 để tấn công nhân vật và khi được một quảng thời gian nhất định quái sẽ nhảy lùi lại tung ra skillulti tấn công nhân vật
reong phương thức sử dụng các biến trạng thái boolean để xác định hành động của quái diễn ra
- ngoài ra còn xây dựng các phương thức geter và seter tương ứng với các thuộc tính
2.2 Thiết Kế Giao Diện Tương Tác Ban Đầu
Giao diện được thiết kế trong lớp OnepieceFrame
Trang 17phương thức dùng để khởi tạo frame có chứa 2 panel là Jpanel1 và Jpanel2
Jpanel1 có chứa các button start help quit trên mỗi button được đăng ký để nghe các sựkiện click chuộn
Jpanel 2: có chứa button back và các label từ 0 đến 9
Button và label được gắn các sự kiện chuột để trở lại và vào map chơi game
Các phương thức sử lý sự kiện click chuột
o Tính năng, ưu điểm của các công nghệ này: Kiến trúc thiết kế tốt, cộng đồng
mạnh, do là công nghệ mở, chạy tốt trên nhiều platform khác nhau (nhất là trên linux)
o Lý do lựa chọn/sử dụng công nghệ: các ứng dụng có khả năng chạy thống nhất
trên nhiều nền tảng mà chỉ cần biên dịch một lần
- Môi trường lập trình: NetBean IDE và Eclipse IDE.
Trang 18Hình 6: giao diện khi bắt đầu vào game
Trang 19Hình 7: Dialog Help
19
NHÓM 35 LỚP KSCLC K57
Trang 20Hình 8: giao diện lựa chọn map
Trang 21Hình 9: Giao diện khi Chơi game 1
21
NHÓM 35 LỚP KSCLC K57
Trang 22Hình 10: Giao diện khi chơi game 2
Trang 23Hình 11: Giao diện khi chơi game 3
Hình 12: Giao diện khi chơi game 4
23
NHÓM 35 LỚP KSCLC K57
Trang 24CHƯƠNG 4: KIỂM CHỨNG CHÉO
Đối tượng kiểm chứng (Verification)
Kiểm chứng cho nhóm nào gồm các thành viên nào, đề tài gì.
Kiểm chứng cách trình bày báo cáo
Theo các tiêu chí đánh giá
- Chú ý tránh các lỗi trình bày/lỗi chính tả Không được phép vi phạm các lỗi trình bày cơ bản, VD: các dấu câu phải đi liền với chữ phía trước và cách chữ phía sau 1 dấu cách…
- Cách thức trình bày khoa học, sáng sủa, dễ theo dõi, có gắn kết giữa các phần, đầy đủ các phần theo m ẫu.
Kiểm chứng thiết kế và kỹ năng lập trình
Theo các tiêu chí đánh giá
- Thiết kế và mã nguồn chương trình cần đáp ứng các yêu cầu tối thiểu của các nguyên lý công nghệ hướng đối tượng: Mức độ trừu tượng hoá, đóng gói, mô-đun hoá và phân cấp.
- Phong cách lập trình thống nhất, tuân thủ các quy ước lập trình chung
- Các chức năng của chương trình
Với mỗi chức năng use case của chương trình, cần đưa ra các trường hợp kiểm thử (test case) cần được thực hiện Mỗi trường hợp kiểm thử cần đặc tả chi tiết bao gồm những thông tin sau:
- Tên use case (tên chức năng)
- Tên trường hợp kiểm thử
- Người lập trình (tên thành viên nhóm kia trực tiếp lập trình chức năng này)
Trang 25- Người kiểm thử (tên thành viên nhóm này thực hiện kiểm thử tích hợp)
- Trạng thái: Còn lỗi, Chạy thông Nếu còn lỗi, cần có thêm thông tin: Các bước cần thực hiện để tái tạo lỗi.
Ví dụ về bảng kiểm thử chức năng:
Mã lỗi Tên lỗi Use case Trạng thái Người tạo Loại lỗi Các bước tái tạo lỗi / Dữ liệu kiểm thử Kết quả thực tế
UC01-01 Các thông báo lỗi không là màu đỏ - Thêm/sửa môn thi- Thêm/sửa bài thi Còn lỗi LongNV 2- Giao diện người dùng
Nhập dữ liệu sai ít nhất 1 trường
Nhấn nút Thêm mới/Cập nhật
Thông báo lỗi hiện lên là màu đen
File ảnh đính kèm: StyleDo.jpg
1-UC01-02 Không xử lý validate cho trường
Thời gian thi Cập nhật bài thi Còn lỗi TrangNT
1- Chức năng (logic)
Gõ thời gian thi gồm
cả ký tự
Nhập các trường khác bình thường
Nhấn nút Cập nhật
Thông báo: "Có lỗi nghiêm trọng xảy ra Input string was not
in a correct format"
File ảnh đính kèm: ThoiGianThi.jpg
2-UC02-01 Chức năng Print không hoạt động Thi thật Còn lỗi NhungTT 1- Chức năng (thiếu
chức năng)
Tiến hành chọn bài thi và thi
Trang 26CHƯƠNG 5:KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
- Kết quả đạt được: Hoàn thành chương trình, báo cáo bài tập lớn đúng thời hạn.
- Ưu điểm: Giao diện thân thiện với người dùng, có đầy đủ các chức năng theo yêu cầu, nội dung bám theo đúng cốt truyện
- Nhược điểm: dung lượng chương trình lớn, số lương skill nhân vật còn ít các thành phần trên map còn ít
- Hướng phát triển cho đề tài, cho sản phẩm và khả năng ứng dụng: phát
triển mở rộng số lượng map số lương skill các thành phần trên map, bám theo cốt truyện mở rộng nền tảng sang android
Trang 27TÀI LIỆU THAM KHẢO
[1] Head First JAVA: Kathy Sierra and Bert Bate
[2] Slide lập trình hướng đối tượng trên hệ thống ACU.
[3] Zetcode.com
[4] Kilobolt.com
[5] Docs.oracle.com
[6] Blog study and share trên youtube
[7] Các tài liệu khác trên Internet
PHỤ LỤC
Hướng dẫn cài đặt
Yêu cầu hệ điều hành Windows XP/7/8 hoặc Linux
Cài đặt Java development kit JDK( dowload tại
http://www.oracle.com/technetwork/java/javase/downloads/index.ht ml)
Cài đặt Eclipse IDE(dowload tại https://eclipse.org/downloads/) và thiết lập biến môi trường cho java
Trong giao diện của Eclipse chọn File -> Import
27
NHÓM 35 LỚP KSCLC K57
Trang 28Chọn next
Chọn đường dẫn đến thư mục chứa project
Trang 29Ấn ok Sau đó chuột phải vào project vừa import chọn Run As chọn java application
Hướng dẫn sử dụng
Sau khi khởi chạy chương trình:
29
NHÓM 35 LỚP KSCLC K57
Trang 30Chọn Start đề vào chọn map!
Chọn help đề xem hướng dẫn chơi
Sauk hi chọn start:
Trang 31Click vào mỗi hình elip thể hiện các hòn đảo ở bên tay phải (clicl here) để vào mỗi map và click mũi tên quay lại để trở lại
31
NHÓM 35 LỚP KSCLC K57