1. Trang chủ
  2. » Luận Văn - Báo Cáo

báo cáo game mario

29 3,5K 19
Tài liệu đã được kiểm tra trùng lặp

Đ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 29
Dung lượng 609,75 KB

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

Nội dung

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ẫuthiế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ử

Trang 1

KHOA CÔNG NGHỆ PHẦN MỀM

LỚP CNPM03 -oOo -

Trang 2

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

Trang 3

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

TP Hồ Chí Minh, ngày … tháng… năm 2011

Ký tên

TS Ngô Thanh Hùng

Trang 4

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

3 Phân tích và thiết kế 1

3.1 Phân tích 1

3.1.1 Danh sách các class sử dụng kế thừa trong game 1

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

3.2 Thiết kế: 4

3.2.1 Other: 4

3.2.2 Terrain 7

3.2.3 Scene 11

3.2.4 Items 12

3.2.5 Enemy 16

4 Giải quyết vấn đề 18

4.1 Phương pháp lập trình lập hướng đối tượng 18

4.1.1 Khái niệm 18

4.1.2 Đặc điểm của lập trình hướng đối tượng 18

4.1.3 Trừu tượng hóa dữ liệu 19

4.1.4 Đa hình 19

4.1.5 Kế thừa 19

4.1.6 Đóng gói dữ liệu 19

4.1.7 Những ưu điểm của lập trình hướng đối tượng 20

4.1.8 Các thành phần trong lập trình hướng đối tượng 20

4.2 Hướng đối tượng trong game mario 20

4.3 Đệ quy trong cây tứ phân 22

4.3.1 Giới thiệu về cây tứ phân (QuadTree) 22

5 Cài đặt và kết quả 25

5.1 Môi trường cài đặt 25

5.2 Quy trình cài đặt 25

5.3 Kết Quả 25

6 Nhận xét, đánh giá 25

Trang 5

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ẫuthiế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

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

Trang 6

6 Clumn

7 Ground

8 Koopa Chứa các hàm xử lý và hiển thị con rùa

10 LifeFungus

11 Stone

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

Trang 7

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

Class Object

Class

Brick

Class PowerUp

Class Mario

Class QBrick

Class Clumn

Class Ground

Class Koopa

Class Cloud Class LifeFungu

s

Class

Stone

Class Star

Class Coin

Class Pipe

Class Castle

Class Flag

Class Pirhana

Class Hill

Class Goomba

Trang 8

trong game

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

Trang 9

15 Render(Camera* camera) 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

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

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,

Trang 10

23 Mario(float _x, float

_y,float width,float

height,int _ID,Sprite*

Void Cập nhật lại các giá trị

29 ResetRect() Void Cập nhật lại vị trí mario

Trang 11

3.2.2 Terrain

3.2.2.1 Class Brick :

Liệu / Kiểu Trả Về

vxBreak1, vxBreak2, ayBreak

Float Lưu giá trị các mảnh vỡ của

viên gạch

6 isContainCoin Bool Nếu là true thì viên gạch có

chứa đồng xu, ngược lại thì ko

7 isNeedDelete Bool Nếu là true thì xóa ra khỏi

Quadtree, ngược lại thì ko

9 Brick(float _x, float _y,float

width,float height,bool

_isBright,int _ID,Sprite*

_sprite)

Hàm khởi tạo các giá trị

10 SetVariable(char*

varName,int val)

Void Thiết lập trạng thái cho đối

tượng viên gạch đang xét

Trang 12

11 GetVariable(char* varName) Int Trả về trạng thái hiện tại của

đối tượng viên gạch đang xét

12 Update(list<Object*>*

staObjs,list<Object*>*

dynObjs,Input* input, float

TPF)

Void Thiết lập lại các giá trị của

đối tượng viên gạch

13 Render(Camera *camera) Void Vẽ đối tượng viên gạch

14 ChangeState(char _state) Void Thay đổi trạng thái cho đối

Chức năng

tượng Qbrick

ngược lại thì ko

6 QBrick(float _x, float _y,float

width,float height,bool _isBright,int

_ID,Sprite* _sprite)

Hàm khởi tạo các giá trị

7 Update(list<Object*>*

staObjs,list<Object*>*

dynObjs,Input* input, float TPF)

Void Cập nhật lại các giá trị

Trang 13

8 SetVariable(char* varName,int val) Void

9 GetVariable(char* varName) Int

10 Render(Camera *camera) Void Hiển thị lên màn hinh

11 ChangeState(char _state) Void Thay đổi trạng thái

12 UpdateAnimation(float TPF) Void

13 ResetWhenReload(Sprite* _sprite) Void

3.2.2.3 Class Castle (lâu đài)

STT Tên hàm/ tên biến Kiểu dữ liệu/

Hàm khởi tạo đối tượng Castle 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

Chức năng

2 Flag(float _x, float _y,float

width,float height,int _ID,Sprite*

_sprite)

Hàm khởi tạo các giá trị

Trang 14

sáng, ngược lại thì sẽ làm tối

3 Ground(float _x, float _y,float

width,float height,bool

_isBright,int _ID,Sprite* _sprite)

Hàm khởi tạo với các giá trị

4 Render(Camera* camera) Void Hiển thị đối tượng lên màn

Trang 15

3.2.3.1 Class Cloud : đám mây

liệu/Kiểu trả về Chức năng

2 Cloud(float _x, float _y,float width,float

height,int _ID,Sprite* _sprite)

Hàm khởi tạo các giá trị

2 Clumn(float _x, float _y,float

width,float height,int _ID,Sprite*

_sprite)

Hàm khởi tạo các giá trị

3 Render(Camera* camera) Void Hiển thị đối tượng lên màn

hình

4 ResetWhenReload(Sprite* _sprite) Void

Trang 16

3.2.3.3 Class Hill (núi đồi)

STT Tên hàm/ tên biến Kiểu dữ liệu/

3.2.4 Items

3.2.4.1 Class Coin (Đồng xu)

1 container Object * Chứa các đối tượng trong game

2 isCheckedContainer Bool Kiểm tra đặc tính chứa đối tượng

3 isNeedDelete Bool Kiểm tra trạng thái của Coin để xóa

Trang 17

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

liệu/Kiểu trả về

Chức năng

1 isChecked bool Thuộc tính thể hiện tính chất kiểm tra

va chạm các đối tượng hay chưa

2 list<Object*>collision

List Chứa các đối tượng mà LifeFungus cóthể va chạm

4 Container Object * Chứa các đối tượng trong Game

10 State Char Thể hiện tên trạng thái của đối tượng

Trang 18

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

kế thừa từ Object (_x,_y,width,height)

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

Liệu / Kiểu Trả Về

Chức Năng

PowerUp (cục gạch có nấm)

tượng

8 isCheckedContainer Bool Nếu là true thì có đối tượng

chứa, ngược lại thì ko

9 isNeedDelete Bool Nếu là true thì sẽ xóa ra khỏi

Trang 19

QuadTree, ngược lại thì ko

11 PowerUp(float _x, float _y,float

width,float height,int

Void Cập nhật lại các giá trị

13 ChangeState(int _state) Void Thay đổi trạng thái

14 Move(float TPF,list<Object*>*

17 UpdateAnimation(float TPF) Void

18 SetVariable(char* varName,int

val)

Void Thiết lập trạng thái

19 GetVariable(char* varName) Int Trả về trạng thái đối tượng

3.2.4.5 Class Star (Ngôi sao):

STT Tên hàm/ tên biến Kiểu dữ liệu/Kiểu

Trang 20

3.2.5.1 Class Koopa : con rùa

1 collisionList List<Object*>

*

Lưu danh sách các đối tượng có thể vachạm

Trang 21

11 Koopa() Hàm khởi tạo

12 Koopa(float _x, float _y,float

width,float height,bool _isBright,int

_ID,Sprite* _sprite)

Hàm khởi tạo các giá trị

13 Update(list<Object*>*

staObjs,list<Object*>*

dynObjs,Input* input, float TPF)

Void Cập nhật lại các giá

trị

14 SetVariable(char* varName,int val) Void

15 GetVariable(char* varName) Int

16 Render(Camera *camera) Void Hiển thị lên màn

hinh

17 ChangeState(char _state) Void Thay đổi trạng thái

18 UpdateAnimation(float TPF) Void

19 ResetWhenReload(Sprite* _sprite) Void

3.2.5.2 Class Goomba (tên quái vật trong game)

1 list<Object*>collisionList Chứa các đối tượng mà Goomba

có thể va chạm

Goomba

Goomba còn sống hay chết

Trang 22

void Thể hiện sự di chuyển của

Goomba trong game

13 UpdateAnimation(float

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à OOP, từ chữ Anh ngữ object-oriented

programming), hay còn gọi là lập trình định hướng đối tượng, là kĩ thuật lập trình hỗ trợ công nghệ đối tượng OOP được xem là giúp tăng năng suất, đơn giản hóa độ

phức tạp khi bảo trì cũng như mở rộng phần mềm bằng cách cho phép lập trình viên tập trung vào các đối tượng phần mềm ở bậc cao hơn Ngoài ra, nhiều người còn cho rằng OOP dễ tiếp thu hơn cho những người mới học về lập trình hơn là các phương pháp trước đó

Một cách giản lược, đây là khái niệm và là một nỗ lực nhằm giảm nhẹ các thao tác viết mã cho người lập trình, cho phép họ tạo ra các ứng dụng mà các yếu tố bên ngoài có thể tương tác với các chương trình đó giống như là tương tác với các đối

tượng vật lý

Những đối tượng trong một ngôn ngữ OOP là các kết hợp giữa mã và dữ liệu mà

chúng đượ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 chia thành các đối tượng độc lập Cấu trúc dữ liệu được thiết kế sao cho đặc tả được các đối tượng Dữ

Trang 23

liệu được che giấu, bao bọc Các đối tượng trao đổi với nhau thông qua các hàm

Chương trình được thiết kế theo hướng tiếp cận từ dưới lên

4.1.3 Trừu tượng hóa dữ liệu

Khi bắt đầu phát triển phần mềm, lập trình viên sẽ không đi vào viết lệnh ngay lập tức Công việc đầu tiên cần nghiên cứu dữ án, phân tích các đặc tả phần mềm, cácthành phần cần có Theo đó, lập trình viên sẽ phải xác định những thông tin, dữ liệu cần thiết cho từng thành phần Như vậy, trừu tượng hóa dữ liệu là quá trình xác định, tập hợp những thuộc tính, hành xử cho một thực thể cụ thể liên quan trong ứng dụng Trong quá trình đó, có thể có những chi tiết sẽ được cài đặt nhưng ngược lại sẽ có

những chi tiết cần loại bỏ vì chúng không nằm trong yêu cầu

Những ưu điểm của việc trừu tượng hóa dữ liệu bao gồm:

- Tập trung vào vấn đề

- Xác định rõ những thành phần và chức năng cần thiết

- Loại trừ những chi tiết không cần thiết

4.1.4 Đa hình

Đa hình là khả năng cho phép một hoạt động có những hành xử khác nhau

trong cùng một đối tượng khái niệm này ám chỉ việc đối tượng có nhiều phương

thức cùng tền nhưng lại thực hiện những nhiệm vụ khác nhau Trình biên dịch và hệ thống thực thi sẽ so khớp mỗi lời gọi phương thức, đối tượng Khả năng tìm kiếm

đúng để sử dụng trong những tình huống phức tạp là bản chất của tính đa hình Đa hình là một trong những đặc trưng quan trọng của hệ thông hướng đối tượng

4.1.5 Kế thừa

Kế thừa là khả năng cho phép một lớp chia sẻ thuộc tính, hành xử được cài đặt trong nó Nguyên lý kế thừa hỗ trợ việc tạo ra cấu trúc phần cấp các lớp Nó được

hiểu như một cở chế sao chép ảo không đơn điệu và có chắt lọc Một lớp có thể thừa

kế từ một hay nhiều lớp khác Theo đó, lớp được kế thừa là lớp cha và lớp kế thừa là lớp con

4.1.6 Đóng gói dữ liệu

Đóng gói dữ liệu là quá trình che dấu những cài đặt cụ thể của một đối tượng với một đối tượng sử dụng khác Dữ liệu được tổ chức có thể phơi bày với thế giới bên ngoài hoặc che dấu vào bên trong đối tượng Những thuộc tính, hành xử được

phởi bày để được truy cập, triệu gọi từ một đối tượng khác Ngược lại, những thuộc tính, hành xử được che giấu chỉ đảm nhận hành xử hay lưu trữ dữ liệu cho chính đối tượng đó, chúng không có khả năng truy cập từ ngoài vào

Trang 24

4.1.7 Những ưu điểm của lập trình hướng đối tượng.

Loại bỏ được những dư thừa, trùng lặp trong việc xây dựng ứng dụng Cài đặt đối tượng giúp xức tiến việc sử dụng lại, trao đổi giữa các đối tượng với nhau do đó

sẽ giảm kích thước, thời gian xử lý,… thời gian phát triển hệ thống, tăng năng xuất lao động Dễ bảo trì, nâng cấp, giảm lỗi

4.1.8 Các thành phần trong lập trình hướng đối tượng

- class: các chức năng, thành phần của một thực thể được định nghĩa một cách chungnhất trong một mẫu cụ thể được gọi là class

- Object: là một đối tượng cụ thể của class

- Attribute: là những thành phần được định nghĩa trong một class

- Operation: giống như một dịch vụ được triệu gọi bởi một đối tượng

- Method: còn gọi là phương thức định nghĩa cụ thể một operation

-Message: là những đòi hỏi, những thông tin cần có cho một operation

- Event: là những kích hoạt để thực thi một hay nhiều operation

- Construction: là triệu gọi đầu tiên khi một object được tạo Constructor là một

method đặc biệt được gọi đầu tiên trước khi một method hay attribute có thể được sử dụng trong một object của một class Constructor có thể khỏi gán nhữn thuộc tính, cấp phát bộ nhớ nếu cần thiết

- Destruction: là phương thức đặc biệt được gọi để hủy một object Destruction sẽ

xóa object, giải phóng bộ nhớ mà constructor cấp phát Theo đó, mọi khả năng sử

dụng truy cập tới object này sẽ 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 là class cha và các class dẫn xuất

Việc sử dụng chung con trỏ của lớp cha và tự động trỏ đến đúng đối tượng dẫn xuất giúp cho việc xử lý trở nên dễ dàng hơn

Mỗi 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

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

HÌNH ẢNH LIÊN QUAN

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 (Trang 26)
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 (Trang 27)

TỪ KHÓA LIÊN QUAN

w