Quan hệ giữa các đối tượng trong gĩi Quaivat

Một phần của tài liệu Đề tài: Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android (Trang 60 - 64)

on @Flr ar | Fl8rEr

3.41.3.4 Thiết kế giao diện người dùng.

3.4.1.3.41 — Giao diện menu chính. Xem hình 13.

3.41.3.4.2 Giao diện hiện thị thơng tỉn tác giả. Xem hình 14.

3.4.1.3.43 — Giao diện hiện thị xác mỉnh thốt. Xem hình 15.

3.4.1.3.44 Giao diện hiện thị phần giới thiệu. Xem hình 16.

3.41.3.45 Giao diện hiện thị khi tải dữ liệu. Xem hình 17. 3.441.346 — Giao diện chính của Game. Xem hình 18.

3.4.1.3.47 Giao diện menu phụ. Xem hình 19.

3.4.1.3.49 Giao diện khi người chơi thắng cuộc. Xem hình 21.

3.4.1.3.4.10 Giao diện lưu điểm. Xem hình 22.

3.413.411 Giao diện hiện thị danh sách điểm. Xem hình 23.

3.413.5 Thiết kế các thuật tốn.

3.4.1.3.5.1 Thuật tốn xác định vị trí pX,pY cĩ nằm trong 1 vùng của Maps.

- _ Xác định dữ liệu đầu vào gồm cĩ: + Đối tượng TMXTiledMap + Đối tượng TMXTile

+ VỊ trí pX kiểu float + VỊ trí pY kiểu float

- Xác định đầu ra

Đầu ra dạng đúng/sai (true/false)

+ Nếu tạo độ pX, pY khơng nằm trong TMXTile thì ta trả về kết quả là sai (false).

+ Nếu tọa đỘ pX, pY thuộc trong TMXTile thì ta rả về kết quả

là đúng (true).

Viết thuật tốn bằng ngơn ngữ java.

public boolean collidesWith(TMXTiedMap mIMXTiledMap, TMXLayer

VatCanTMXLaycr, float pX, float pY){

TMXTile mTMXTile = VatCanTMXLayer.gerIMXTileAt(pX,pY);

tryf

Đặng Văn Giỏi - LỚp 508CNT + else{ TMXProperties<TMXTileProperty> mTMXProperties= mTMXTile.getTMXTileProperties(mIMXTiledMap);

TMXTïileProperty mIMXTileProperty = mTMXProperties.get(0);

}

return true; }catch(Exception e){

retun false;

} (adsbygoogle = window.adsbygoogle || []).push({});

Ví dụ minh họa thuật tốn:

Giả sử ta cĩ một map như sau. Xem hình 24.

Với đối tượng TMXTiledMap thì lưu trỮ tồn bộ các hình ảnh để tạo ra map

và đối tượng này cũng chứa luơn cả đối tượng TMXLayer. Đối tượng TMXLayer

trong hình vẽ trên là các viên gạch.

Để kiểm tra xem vị trí pX, pY cĩ nằm trên đối tượng TMXLayer hay khơng ta

phải xác định xem vị trí đĩ cĩ tồn tại 1 TMXTile. Nếu tồn tại thì giá trị TMXTile sẽ

khơng bằng null. Ngược lại là null tức là vị trí pX, pY nằm ngồi TMXLayer. Ảnh thể hiện điểm pX, pY nằm trên đối tượng TMXLayer. Xem hình 25. Ảnh thể hiện điểm pX, pY nằm ngồi đối tượng TMXLayer. Xem hình 26.

3.4.1.3.5.2 Thuật tốn xác định va chạm giữa 2 sprite. - _ Xác định dữ liệu đầu vào.

+ AnimatedSprite A + AnimatedSprite B

+ Dữ liệu trả ra dạng đúng/sai (true/false). Viết thuật tốn bằng ngơn ngữ java.

public boolean vaCham(AnimatedSprite A, AnimatedSprite B){ this.A.setPosition(A.gøgetXQ + 8,A.gøgetYQ + 8); this.B.setPosition(B.getXQ + 8,B.getY() + 8); ií(A.collidesWith(B)) return true;//Cĩ va chạm return false;//Khơng va chạm }

Với thuật tốn này điều kiện ban đầu là phải cĩ 2 AnimatedSprite A, B.

Mỗi 1 đối tượng AnimatedSprite thì được thể hiện bằng 1 hình chữ nhật. Nhưng

hình ảnh thể hiện nhân vật thì cĩ chiều cao và chiều rộng nhỏ hơn hình chữ nhật, nếu ta cứ so sánh bình thường thì kết quả cho thấy sự va chạm là khơng chính xác,

để va xác định va chạm 1 cách chính xác hơn thì ta cần phải tính tốn lại chiều cao và chiều rộng của AnimatedSprite để so sánh.

Ví dụ minh họa:

Giả sử ta cĩ 1 AnimatedSprite với chiều cao và chiều rỘng nhƯ hình vẽ sau.

Kích thƯớc của AnimatedSprite này là 32x32. Nhưng nhân vật nằm trong hình chữ

nhật này lại nhỏ hơn nhiều so với hình chỮ nhật. Hình vẽ thể hiện nhân vật nằm trong AnimatedSprite nhưng lại nhỏ hơn hình chỮ nhật.

Hình màu đỏ tượng trưng cho nhân vật. Như vậy ta cần so sánh giỮa các nhân vật chứ khơng phải so sánh giữa các hình chữ nhật của các AnimatedSprite.

3.4.1.4 Viết chương trình.

3.4.1.4.1 Hiện thị menu chính. > Chuẩn bị. > Chuẩn bị.

Đặng Văn Giỏi - LỚp 508CNT

+

- _ Một số hình ảnh cần thiết để tạo giao diện.

+ Ảnh nền: Xem hình 27.

+ 3 ảnh thể hiện các chức năng chơi, hiện thị thơng tin, yêu cầu thốt khỏi Game. Xem hình 28. (adsbygoogle = window.adsbygoogle || []).push({});

»> Viết mã lệnh.

- _ Trích đoạn tạo ra hiệu Ứng các ảnh trong menu xoay trịn. final Handler handÌler = new Handler() {

Một phần của tài liệu Đề tài: Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android (Trang 60 - 64)