báo cáo game mario

29 3.5K 19
báo cáo game mario

Đ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

ĐẠ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ÁO CÁO GAME 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 game Mario 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 game mario 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 game mario 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 game mario 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

Ngày đăng: 12/03/2014, 11:24

Hình ảnh liên quan

3 Width Float Chiều rộng trên màn hình 4HightFloat Chiều cao trên màn hình 5IDInt Mỗi đối tượng sẽ có một mã 6RectRECTLưu vị trí của đối tượng  - báo cáo game mario

3.

Width Float Chiều rộng trên màn hình 4HightFloat Chiều cao trên màn hình 5IDInt Mỗi đối tượng sẽ có một mã 6RectRECTLưu vị trí của đối tượng Xem tại trang 8 của tài liệu.
16 sBig Sprite* Quản lý hình ảnh mario bự 17collisionListList&lt;Object*&gt; - báo cáo game mario

16.

sBig Sprite* Quản lý hình ảnh mario bự 17collisionListList&lt;Object*&gt; Xem tại trang 10 của tài liệu.
hình 5 ResetWhenReload(Sprite*  - báo cáo game mario

hình 5.

ResetWhenReload(Sprite* Xem tại trang 14 của tài liệu.
lên màn hình - báo cáo game mario

l.

ên màn hình Xem tại trang 15 của tài liệu.
3 Render() void Vẽ đối tượng Stone lên màn hình - báo cáo game mario

3.

Render() void Vẽ đối tượng Stone lên màn hình Xem tại trang 15 của tài liệu.
8 Render() void Vẽ đối tượng Coin lên màn hình 9GetVariable(char  - báo cáo game mario

8.

Render() void Vẽ đối tượng Coin lên màn hình 9GetVariable(char Xem tại trang 16 của tài liệu.
3.2.3.3 Class Hill (núi đồi) - báo cáo game mario

3.2.3.3.

Class Hill (núi đồi) Xem tại trang 16 của tài liệu.
4 Render() void Vẽ đối tượng Star lên màn hình - báo cáo game mario

4.

Render() void Vẽ đối tượng Star lên màn hình Xem tại trang 20 của tài liệu.
4 Giải quyết vấn đề - báo cáo game mario

4.

Giải quyết vấn đề Xem tại trang 22 của tài liệu.
Hình 1.1.1 - Sử dụng cây tứ phân trong phân hoạch không gian - báo cáo game mario

Hình 1.1.1.

Sử dụng cây tứ phân trong phân hoạch không gian Xem tại trang 26 của tài liệu.
Hình 1.2 - Một hình ảnh về đệ quy - báo cáo game mario

Hình 1.2.

Một hình ảnh về đệ quy Xem tại trang 27 của tài liệu.
 Chức năng : Thêm một đối tượng vào cây sao cho hình chữ nhật - báo cáo game mario

h.

ức năng : Thêm một đối tượng vào cây sao cho hình chữ nhật Xem tại trang 27 của tài liệu.

Từ khóa liên quan

Mục lục

  • 1 Giới thiệu về game Mario

  • 2 Giới thiệu vấn đề

  • 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

      • 3.1.2 Sơ đồ các class kế thừa trong game.

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

          • 3.2.1.2 Class Mario : quản lý mario

          • 3.2.2 Terrain

            • 3.2.2.1 Class Brick :

            • 3.2.2.2 Class Qbrick

            • 3.2.2.3 Class Castle (lâu đài)

            • 3.2.2.4 Class Flag

            • 3.2.2.5 Class Ground : mặt đất

            • 3.2.2.6 Class Pipe (ống dẫn)

            • 3.2.2.7 Class Stone (Đá)

            • 3.2.3 Scene

              • 3.2.3.1 Class Cloud : đám mây

              • 3.2.3.2 Class Clumn :

              • 3.2.3.3 Class Hill (núi đồi)

              • 3.2.4 Items

                • 3.2.4.1 Class Coin (Đồng xu)

                • 3.2.4.2 Class LifeFungus (nấm khi Mario còn nhỏ, nếu mario lớn thì nó là hoa)

                • 3.2.4.3 Class Pirhana (bông hoa trong ống dẫn):

                • 3.2.4.4 Class PowerUp : quản lý đối tượng nấm (ăn được) và hoa(có đạn).

Tài liệu cùng người dùng

Tài liệu liên quan