Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 29 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
29
Dung lượng
609,75 KB
Nội dung
ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
LỚP CNPM03
oOo
BÁO CÁO ĐỒ ÁN
MÔN : CA PHƯƠNG PHÁP LẬP TRÌNH
CHỦ ĐỀ : BÁOCÁOGAME MARIO
GVHD : TS. NGÔ THANH HÙNG
Nhóm sinh viên:
1. Trần Quốc Công 08520046
2. Nguyễn Công Huy08520148
3. Cù Duy Khoa 08520181
4. Bùi Ngọc Huy 08520544
Thành phố Hồ Chí Minh, ngày 17 tháng 1 năm 2011
Lời cảm ơn
Chúng em xin chân thành cảm ơn Khoa Công nghệ phần mềm, trường Đại học
Công nghệ thông tin – ĐHQG Tp. HCM đã tạo điều kiện cho chúng em được
thực hiện đồ án môn học “Các phương pháp lập trình”. Chúng em cũng xin chân
thành cám ơn TS. Ngô Thanh Hùng, thầy đã giảng dạy cho chúng em những
kiến thức cần thiết cho môn học này. Những kiến thức đó đã giúp cho chúng em
rất nhiều trong quá trình làm đồ án môn học. Chúng em xin chân thành cám ơn
quý Thầy cô trong Khoa đã tận tình giảng dạy và trang bị cho chúng em những
kiến thức cần thiết trong thời gian qua. Cuối cùng xin gửi lời biết ơn đến gia
đình, bạn bè đã ủng hộ, giúp đỡ và động viên trong những lúc khó khăn cũng
như trong suốt thời gian học tập vừa rồi. Mặc dù nhóm đã cố gắng hoàn thành
đồ án môn học với tất cả nỗ lực của từng thành viên trong nhóm, nhưng đồ án
chắc chắn không tránh khỏi những thiếu sót nhất định, rất mong nhận được sự
cảm thông, chia sẻ và tận tình đóng góp chỉ bảo của quý Thầy Cô.
NHÓM THỰC HIỆN
BÙI NGỌC HUY 08520544
NGUYỄN CÔNG HUY 08520148
CÙ DUY KHOA 08520181
TRẦN QUÔC CÔNG 08520046
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
TP Hồ Chí Minh, ngày … tháng… năm 2011
Ký tên
TS. Ngô Thanh Hùng
Contents
Đồ án cuối kỳ môn CÁC PHƯƠNG PHÁP LẬP TRÌNH
GVHD: TS Ngô Thanh Hùng
1 Giới thiệu về game Mario
Mario (Tiếng Nhật:マリオ) là nhân vật trong game được tạo bởi nhà thiết kế
game người Nhật Shigeru Miyamoto. Mario đã trở thành linh vật biểu trưng cho hãng
Nintendo. Mario được phát họa với dáng lùn, là người anh song sinh của Luigi.
Nguyên bản Mario được thiết kế trên nền đồ họa 2D, nhưng với những phiên bản sau
này được thiết kế với đồ họa 3D.
Mario được mô tả là thợ sửa ống nước người Ý với chiều cao 155cm, dáng vẻ bệ vệ,
sống ở Vương quốc Nấm (Mushroom Kingdom). Anh ta được biết đến với việc
thường xuyên ngăn trở kế hoạch bắt cóc công chúa Quả Đào (Princess Peach) và thôn
tính Vương quốc Nấm của Quốc vương Bowser (King Bowser). Trở thành linh vật
của Nintendo, Mario được bình chọn là nhân vật nổi tiếng nhất trong lịch sử video
game. Với việc bán được hơn 193 triệu bản, loạt gameMario trở thành loạt game bán
chạy nhất trong lịch sử.
2 Giới thiệu vấn đề
Yêu cầu chương trình cuả chúng ta ở đây là làm sao thiết kế được 1 chương
trình game giống (hoặc gần giống) như Mario trên dựa vào các phương pháp lập trình
đã học. Cụ thể là sử dụng phương pháp lập trình hướng đối tượng kết hợp với các mẫu
thiết kế và các giải thuật toán học(đệ quy…).
3 Phân tích và thiết kế
3.1 Phân tích
3.1.1 Danh sách các class sử dụng kế thừa trong game
STT Tên Class Chức Năng
1 Object Đây là lớp cha, chứa các hàm ảo và các thuộc
tính cần thiết cho việc lưu trữ.
2 Brick Chứa các hàm xử lý và hiển thị viên gạch trong
game.
3 PowerUp Chứa các hàm xử lý và hiển thị nấm+súng
4 Mario Chứa các hàm xử lý và hiển thị mario
5 Qbrick
Bùi Ngọc Huy 08520544 Trần Quốc Công 08520046
Nguyễn Công Huy 08520148 Cù Duy Khoa 08520181 Page
Đồ án cuối kỳ môn CÁC PHƯƠNG PHÁP LẬP TRÌNH
GVHD: TS Ngô Thanh Hùng
6 Clumn
7 Ground
8 Koopa Chứa các hàm xử lý và hiển thị con rùa
9 Cloud Quản lý và hiển thị đám mây
10 LifeFungus
11 Stone
12 Pipe Quản lý và hiể thị ống nước
13 Coin Quản lý và hiển thị đồng tiền
14 Castle
15 Star
16 Flag
17 Pirhana Quản lý và hiển thị bông hoa trong ống nước
18 Hill Quán lý và hiển thị ngọn đồi nền
19 Goomba Xử lý và hiển thị quái vật
Bùi Ngọc Huy 08520544 Trần Quốc Công 08520046
Nguyễn Công Huy 08520148 Cù Duy Khoa 08520181 Page
Đồ án cuối kỳ môn CÁC PHƯƠNG PHÁP LẬP TRÌNH
GVHD: TS Ngô Thanh Hùng
3.1.2 Sơ đồ các class kế thừa trong game.
Bùi Ngọc Huy 08520544 Trần Quốc Công 08520046
Nguyễn Công Huy 08520148 Cù Duy Khoa 08520181 Page
Class
Ground
Class
Koopa
Class
PowerUp
Class
Clumn
Class
Brick
Class
QBric
k
Class
Mario
Class
Object
Class
LifeFungu
s
Class
Cloud
Class
Pirhana
Class
Hill
Class
Pipe
Class
Castle
Class
Flag
Class
Stone
Class
Goomba
Class
Star
Class
Coin
Đồ án cuối kỳ môn CÁC PHƯƠNG PHÁP LẬP TRÌNH
GVHD: TS Ngô Thanh Hùng
3.2 Thiết kế:
3.2.1 Other:
3.2.1.1 Class Object : đây là lớp cha. Chủ yếu chứa các biến dùng chung
cho các class dẫn xuất và các hàm ảo.
STT Tên Hàm/ Tên Biến Kiểu Dữ
Liệu / Kiểu
Trả Về
Chức Năng
1 X Float Tọa độ theo phương x trong
màn chơi
2 Y Float Tọa độ theo phương y trong
màn chơi
3 Width Float Chiều rộng trên màn hình
4 Hight Float Chiều cao trên màn hình
5 ID Int Mỗi đối tượng sẽ có một mã
6 Rect RECT Lưu vị trí của đối tượng
trong game
7 Sprite Sprite* Lưu hình ảnh của đối tượng
8 Object() Hàm khởi tạo
9 Object(float _x, float _y, float
_width, float _height)
Hàm khởi tạo giá trị cho các
biến x,y,width,hight
10 ResetRect() Void Hàm ảo
11 ResetWhenReload(Sprite*
_sprite)
Void Hàm ảo
12 SetVariable(char* varName,int
val)
Void Hàm ảo
13 GetVariable(char* varName) Int Hàm ảo
14 Update(list<Object*>*
staObjs,list<Object*>*
dynObjs,Input* input, float
TPF)
Void Hàm ảo
Bùi Ngọc Huy 08520544 Trần Quốc Công 08520046
Nguyễn Công Huy 08520148 Cù Duy Khoa 08520181 Page
Đồ án cuối kỳ môn CÁC PHƯƠNG PHÁP LẬP TRÌNH
GVHD: TS Ngô Thanh Hùng
15 Render(Camera* camera) Void Hàm ảo
16 Save(fstream *fs) Void Hàm ảo
17 Load(fstream *fs) Void Hàm ảo
3.2.1.2 Class Mario : quản lý mario
STT Tên Hàm/ Tên Biến Kiểu Dữ Liệu
/ Kiểu Trả Về
Chức Năng
1 isBig Bool Nếu là true thì mario đang bự,
ngược lại thì nhỏ
2 waitNextRow Float Thời gian tạo hiệu ứng nhấp nháy
3 isHasStar Bool Nếu là true thì mario có áo giáp,
ngược lại thì ko
4 waitLostStar Float
5 Vx Float Vận tốc mario theo phương x
6 Vy Float Vận tốc mario theo phương y
7 Ax Float Gia tốc mario theo phương x
8 Ay Float Gia tốc mario theo phương y
9 xOld Float Vị trí mario cũ theo phương x
10 yOld Float Vị trí cũ của mario theo phương y
11 oldRECT RECT Vị trí cũ của mario
12 isFaceRight Bool Nếu là true thì đang quay qua phải,
ngược lại thì trái
13 isJumming Bool Nếu là true thì mario đang nhảy,
ngược lại thì ko
14 isShotable Bool Nếu là true thì mario có thể bắn,
ngược lại thì ko
15 timeJumped Float Lưu thời gian mà mario nhảy trên
không
Bùi Ngọc Huy 08520544 Trần Quốc Công 08520046
Nguyễn Công Huy 08520148 Cù Duy Khoa 08520181 Page
Đồ án cuối kỳ môn CÁC PHƯƠNG PHÁP LẬP TRÌNH
GVHD: TS Ngô Thanh Hùng
16 sBig Sprite* Quản lý hình ảnh mario bự
17 collisionList List<Object*>
*
Lưu các đối tượng mà mario có thể
va chạm
18 Camera Camera* Quản lý màn hình hiển thị
19 Score Int Lưu điểm số
20 Coint Char Lưu số tiền xu ăn đuọc
21 Numlife Char Số mạng
22 Mario() Hàm khởi tạo
23 Mario(float _x, float
_y,float width,float
height,int _ID,Sprite*
_sSmall,Sprite*
_sBig,Camera*
_camera)
Hàm khởi tạo các giá trị
24 Update(list<Object*>*
staObjs,list<Object*>
* dynObjs,Input*
input, float TPF)
Void Cập nhật lại các giá trị
29 ResetRect() Void Cập nhật lại vị trí mario
30 SetVariable(char*
varName,int val)
Void
31 GetVariable(char*
varName)
Int
32 ResetWhenReload(Spr
ite* _sprite)
Void
33 Save(fstream *fs) Void
34 Load(fstream *fs) Void
Bùi Ngọc Huy 08520544 Trần Quốc Công 08520046
Nguyễn Công Huy 08520148 Cù Duy Khoa 08520181 Page
[...]... 100% 99% 80% 100% 5.3 Kết Quả So với một gamemario hoàn chỉnh thì game của nhóm làm mới chỉ đạt khoảng 70% yêu cầu Mario có thể di chuyển, chơi bình thường Quái trong game có thể di chuyển bình thường, tuy còn thiếu một số quái ở các vòng sau Các item trong game như nấm mạng, đạn, ngôi sao bảo vệ,… nhóm đã làm được khoảng hơn 70% yêu cầu Xử lý va chạm trong game cũng tương đối chính xác Tuy nhiên,... vật trong game được đưa vào một class quản lý Việc chia nhỏ này giúp cho việc quản lý cũng như xử lý trong game dễ dàng hơn Danh sách các class sử dụng kế thừa trong game STT Tên Class Chức Năng 1 Object Đây là lớp cha, chứa các hàm ảo và các thuộc tính cần thiết cho việc lưu trữ 2 Brick Chứa các hàm xử lý và hiển thị viên gạch trong game 3 PowerUp Chứa các hàm xử lý và hiển thị nấm+súng 4 Mario Chứa... được sử dụng trong việc phân chia không gian trong game hai chiều Bùi Ngọc Huy 08520544 Nguyễn Công Huy 08520148 Trần Quốc Công 08520046 Cù Duy Khoa 08520181 Page Đồ án cuối kỳ môn CÁC PHƯƠNG PHÁP LẬP TRÌNH GVHD: TS Ngô Thanh Hùng Hình 1.1.1 - Sử dụng cây tứ phân trong phân hoạch không gian 4.3.1.2 Cây tứ phân trong game - Một vấn đề lớn khi làm gamemario số lượng các đối tượng trong một màn chơi là... không còn 4.2 Hướng đối tượng trong gamemario Nguyên tắc kế thừa cho phép các lớp dẫn xuất sử dụng các phương thức từ lớp cơ sở như những phương thức của chính nó, mà không cần thiết phải định nghĩa lại Để thuận tiện cho việc tái sử dụng lại các phương thức hay dùng trong các đối tượng khác nhau, việc tự động so khớp và thực thi các phương thức và các đối tượng Trong game, chúng em sử dụng 1 class Object... Object(_x,_y,width,height) Cập nhật lại đối tượng Coin về trạng thái, vị trí sau các xử lý va chạm Vẽ đối tượng Coin lên màn hình Lấy giá trị về trạng thái có thể xóa đối tượng Coin Class LifeFungus (nấm khi Mario còn nhỏ, nếu mario lớn thì nó là Bùi Ngọc Huy 08520544 Nguyễn Công Huy 08520148 Trần Quốc Công 08520046 Cù Duy Khoa 08520181 Page Đồ án cuối kỳ môn CÁC PHƯƠNG PHÁP LẬP TRÌNH GVHD: TS Ngô Thanh Hùng STT 1... _Id,Sprite * _sprite) Update(list*staObjs,list*dynObjs,Input 3 Bùi Ngọc Huy 08520544 Nguyễn Công Huy 08520148 Kiểu dữ liệu/Kiểu trả về Int void Chức năng Chứa các Id của đối tượng trong game Hàm khởi tạo đối tượng Star với vị trí (_x,_y), chiều dài, chiều rộng, tính chất (ẩn, hiện), được kế thừa từ Object (_x,_y,width,height) Cập nhật lại đối tượng Star sau các xử lý va chạm Trần Quốc... _state) Void Thay đổi trạng thái 18 UpdateAnimation(float TPF) Void 19 ResetWhenReload(Sprite* _sprite) Void 20 Save(fstream *fs) Void 21 Load(fstream *fs) void 3.2.5.2 Class Goomba (tên quái vật trong game) STT Tên hàm/ tên biến 1 listcollisionList 2 3 oldRect isBright Rect Bool 4 isAlive Bool 5 6 7 8 9 10 xOld yOld Vx Vy ay Goomba(float _x,float _y,float width,float height,bool _isbright,int... Trần Quốc Công 08520046 Cù Duy Khoa 08520181 Page Đồ án cuối kỳ môn CÁC PHƯƠNG PHÁP LẬP TRÌNH GVHD: TS Ngô Thanh Hùng TPF,list* staObjs) UpdateAnimation(float TPF) Render() 13 14 Goomba trong game void Cập nhật lại tốc độ chuyển frame void Vẽ đối tượng Goomba lên màn hình 4 Giải quyết vấn đề 4.1 Phương pháp lập trình lập hướng đối tượng 4.1.1 Khái niệm Lập trình hướng đối tượng (gọi tắt là... được nhìn nhận như là một đơn vị duy nhất Mỗi đối tượng có một tên riêng biệt và tất cả các tham chiếu đến đối tượng đó được tiến hành qua tên của nó Như vậy, mỗi đối tượng có khả năng nhận vào các thông báo, xử lý dữ liệu (bên trong của nó), và gửi ra hay trả lời đến các đối tượng khác hay đến môi trường 4.1.2 Đặc điểm của lập trình hướng đối tượng Tập trung vào dữ liệu thay cho các hàm Chương trình được... _isbright,int _Id,Sprite * _sprite) Update(list void *staObjs,list*dynObjs,Input* input,float TPF) Render() void GetVariable(char Int *varName) 3.2.4.2 hoa) Chức năng Chứa các đối tượng trong game Kiểm tra đặc tính chứa đối tượng Kiểm tra trạng thái của Coin để xóa đối tượng Kiểm tra xem có đối tượng nào chứa Coin không Tên trạng thái hiện tại của đối tượng Coin Hàm khởi tạo đối tượng Coin . TIN
KHOA CÔNG NGHỆ PHẦN MỀM
LỚP CNPM03
oOo
BÁO CÁO ĐỒ ÁN
MÔN : CA PHƯƠNG PHÁP LẬP TRÌNH
CHỦ ĐỀ : BÁO CÁO GAME MARIO
GVHD : TS. NGÔ THANH HÙNG
Nhóm sinh. Hùng
1 Giới thiệu về game Mario
Mario (Tiếng Nhật:マリオ) là nhân vật trong game được tạo bởi nhà thiết kế
game người Nhật Shigeru Miyamoto. Mario đã trở thành