Bảng đặc tả use-case mua

Một phần của tài liệu Xây dựng game nuôi thú ảo ứng dụng công nghệ blockchain (Trang 97)

4.1.4.3. Đặc tả Use-case bán Puppy:

Use-case ID UC-1.3

Tên Use-case Bán Puppy

Actor(s) Người dùng

Mức độ Phải có

Trigger - Người dùng muốn bán Puppy

- Thiết bị người dùng đã kết nối internet khi thực hiện mua

Pre- Condition(s)

- Người dùng truy cập thành công vào game - Người dùng truy cập vào My Puppy

- Người dùng chọn Puppy cần bán - Người dùng chọn phương thức bán - Người dùng chọn bán

Post- Condition(s)

- Người dùng bán Puppy thành công

Basic flow 1. Người dùng truy cập vào ứng dụng CryptoPuppy 2. Người dùng đăng nhập vào ứng dụng

3. Người dùng vào My Puppy 4. Người dùng chọn Puppy cần bán 5. Người dùng chọn phương thức bán 6. Người dùng chọn bán

7. Hệ thống xác nhận bán Puppy thành công

8. Hệ thống ghi nhận thông tin bán vào database

Exception flow 1. Số dư không đủ 2. Người dùng chọn lệnh hủy bán Use-case dừng lại Bảng 10. Bảng đặc tả use-case bán

4.1.4.4. Đặc tả Use-case giao phối Puppy:

Use-case ID UC-1.4

Tên Use- case

Mô tả Người dùng giao phối hai Puppy đang sở hữu với nhau

Actor(s) Người dùng

Mức độ Phải có

Trigger - Người dùng muốn giao phối Puppy

- Thiết bị người dùng đã kết nối internet khi thực hiện mua

Pre- Condition(s)

- Người dùng truy cập thành công vào game

- Người dùng truy cập vào danh sách Puppy sở hữu - Người dùng chọn mục giao phối

Post- Condition(s)

- Người dùng giao phối Puppy thành công

Basic flow 1. Người dùng truy cập vào ứng dụng CryptoPuppy 2. Người dùng đăng nhập vào ứng dụng

3. Người dùng mở danh sách Puppy đang sở hữu 4. Người dùng chọn mục giao phối

5. Người dùng chọn Puppy để giao phối 6. Người dùng chọn xác nhận giao phối

7. Hệ thống xác nhận giao phối Puppy thành công 8. Hệ thống ghi nhận thông tin giao phối, con sinh ra vào database

Exception flow

1. Puppy được chọn giao phối không hợp lệ 2. Người dùng chọn lệnh hủy giao phối

Use-case dừng lại

Bảng 11. Bảng đặc tả use-case giao phối

4.1.4.5. Đặc tả Use-case tạo Puppy:

Use-case ID UC-1.5

Mô tả Admin tạo ra Puppy mới

Actor(s) Admin

Mức độ Phải có

Trigger - Admin muốn tạo Puppy mới

- Thiết bị người dùng đã kết nối internet khi thực hiện mua

Pre- Condition(s)

- Admin mở Visual Studio Code - Admin mở dự án CryptoPuppy

- Admin Khởi chạy contract tạo Puppy mới

Post- Condition(s)

- Admin tạo Puppy thành công

- Hệ thống ghi nhận tạo thành công vào database

Basic flow 1. Admin mở Visual Studio Code 2. Admin mở dự án CryptoPuppy 3. Admin khởi chạy contract tạo Puppy

4. Hệ thống xác nhận tạo Puppy thành công

5. Hệ thống ghi nhận thông tin Puppy mới vào database

Exception flow

1. Người dùng chọn lệnh hủy tạo

Use-case dừng lại

Bảng 12. Bảng đặc tả use-case tạo puppy

4.1.4.6. Đặc tả Use-case nhượng quyền Puppy:

Use-case ID UC-1.6

Tên Use-case Nhượng quyền Puppy

Mô tả Admin nhượng quyền Puppy

Actor(s) Admin

Mức độ Phải có

- Thiết bị người dùng đã kết nối internet khi thực hiện mua

Pre- Condition(s)

- Admin mở Visual Studio Code - Admin mở dự án CryptoPuppy

- Admin Khởi chạy contract nhượng quyền Puppy

Post- Condition(s)

- Admin chuyển nhượng Puppy thành công

- Hệ thống ghi nhận chuyển thành công vào database

Basic flow 1. Admin mở Visual Studio Code 2. Admin mở dự án CryptoPuppy

3. Admin khởi chạy contract chuyển nhượng Puppy 4. Hệ thống xác nhận chuyển Puppy thành công 5. Hệ thống ghi nhận thông tin Puppy mới vào database

Exception flow

1. Người dùng chọn lệnh hủy chuyển

Use-case dừng lại

4.2. Sơ đồ hoạt động: 4.2.1. Đăng nhập:

4.2.2. Mua Puppy:

4.2.3. Bán Puppy:

4.2.4. Cho Puppy giao phối:

4.2.5. Tạo Puppy:

4.2.6. Nhượng quyền Puppy:

4.3. Sơ đồ trạng thái: 4.3.1. Đăng nhập: 4.3.1. Đăng nhập:

4.3.2. Xem tất cả Puppies:

4.3.3. Phối giống:

4.3.4. Chuyển nhượng:

4.4. Sơ đồ lớp:

4.4.1. Sơ đồ lớp hoàn chỉnh:

4.4.2. Danh sách các lớp đối tượng:

STT Tên lớp Loại Chú thích

1 Ownable Concrete class Chứa thông tin về chủ sở hữu (nhà phân phối) của trò chơi và phương thức thay đổi địa chỉ của chủ sở hữu đó.

2 Puppy Instance class Định nghĩa các thuộc tính của một con vật trong trị chơi (bao gồm mã gen, thời gian sinh, thời gian bắt đầu cooldown trước khi có thể giao phối, ID của bố mẹ, ID của con vật được giao phối cùng, chỉ số cooldown và chỉ số thế hệ).

3 Cooldown Instance class Định nghĩa các mốc thời gian cooldown trước khi có thể giao phối của Puppies.

4 PuppyBase Concrete class Chứa cơ sở dữ liệu những con vật có trong trị chơi, địa chỉ (address) của chủ sở hữu (owner) của trò chơi và một số phương thức để tạo, chuyển nhượng Puppies.

5 ERC721 Interface Định nghĩa các phương thức cần thiết để tổ chức, chuyển nhượng, thể hiện quyền sở hữu NFTs theo tiêu chuẩn ERC721.

6 PuppyOwnership Concrete class Chứa các phương thức tra cứu chủ sở hữu của Puppies, những Puppies mà một người sở hữu, chuyển nhượng cũng như các

phương thức khác liên quan.

7 GeneScience Instance class Chứa thuật toán phối giống (với mã gen của bố và mẹ) để truy xuất trong PuppyBreeding.

8 PuppyBreeding Concrete class Chứa các phương thức để khởi tạo việc mang thai và sinh sản của Puppy trong trò chơi.

9 PuppyMinting Concrete class Bao gồm các phương thức khởi tạo Puppies nhằm quảng bá trò chơi (hoặc tặng cho người chơi khi cần thiết).

10 PuppyCore Concrete class Gồm những phương thức phục vụ việc truy cập, lấy thông tin về Puppies.

Bảng 14. Bảng danh sách các đối tượng

4.4.3. Mô tả chi tiết các lớp đối tượng: 4.4.3.1. Ownable: 4.4.3.1. Ownable:

STT Tên thuộc tính (phương thức)

Loại Ràng buộc Ý nghĩa

1 owner addres s

Địa chỉ tồn tại trên

blockchain

Địa chỉ của chủ sở hữu (nhà phát hành trò chơi) ở trên blockchain.

() chơi sang địa chỉ mới, chỉ chủ sở hữu của trị chơi mới có quyền sử dụng phương thức này.

Bảng 15. Bảng mô tả chi tiết lớp Ownable

4.4.3.2. Puppy: STT Tên thuộc

tính (phương

thức)

Loại Ràng buộc Ý nghĩa

1 genes uint25 6

Dãy số thể hiện mã gen của Puppy

2 birthTime uint64 Thời gian Puppy được sinh ra (được tính theo timestamp)

3 cooldownStart uint64 Thời gian bắt đầu cooldown. Thông thường, đây là thời gian gần nhất mà Puppy được sinh ra.

4 matronId uint32 ID hợp lệ của Puppy hoặc 0 (nếu Puppy là gen 0)

ID của Puppy cha

5 sireId uint32 ID hợp lệ của Puppy hoặc 0

(nếu Puppy là gen 0)

6 siringWithId uint32 ID hợp lệ của Puppy hoặc 0

ID của Puppy đang mang thai (nếu có) với Puppy hiện tại. Nếu khơng trong trạng thái mang thai, siringWithId có giá trị là 0.

7 cooldownInde x

uint16 Lớn hơn hoặc bằng 0

Chỉ số thể hiện tổng thời gian cooldown (cho đến lượt mang thai tiếp theo) của Puppy.

8 generation uint16 Lớn hơn hoặc bằng 0

Chỉ số thể hiện thế hệ của Puppy với giá trị nhỏ nhất là 0.

Bảng 16. Bảng mô tả chi tiết lớp Puppy

4.4.3.3. Cooldown: STT Tên thuộc tính (phương thức) Loại Ràng buộc Ý nghĩa 1 cooldownTime uint32[ ]

Mảng các giá trị thời gian (timestamps) quy định thời gian cooldown mà Puppies có thể trải qua trước khi có khả năng tiếp tục giao phối và sinh sản.

2 getCooldownTime ()

uint32 Lấy thông tin cooldown theo một chỉ số (index) xác định.

4.4.3.4. PuppyBase: STT Tên thuộc

tính (phương thức)

Loại Ràng buộc Ý nghĩa

1 ownerAddress address Địa chỉ tồn tại trên blockchain

Địa chỉ của chủ sở hữu (owner) hay nhà phát hành của trò chơi.

2 puppies Puppy[ ]

Mảng các Puppies. Nói cách khác, đây là cơ sở dữ liệu chứa tất cả Puppies hiện có trong trị chơi với chỉ số (index) là ID của Puppy.

3 transfer() void Chuyển nhượng Puppy cho một địa chỉ xác định nào đó trên blockchain.

4 createPuppy() uint256 Tạo một Puppy mới với những thuộc tính xác định (trong tham số của hàm này).

Bảng 18. Bảng mô tả chi tiết lớp PuppyBase

4.4.3.5. ERC721: STT Tên thuộc tính

(phương thức)

Loại Ràng buộc Ý nghĩa

1 balanceOf() uint256 Đếm số lượng tất cả các NFTs mà một địa chỉ sở hữu.

2 ownerOf() address Tìm chủ sở hữu của một NFT bất kỳ.

3 safeTransferFrom( )

void Chuyển nhượng NFT từ một địa chỉ đến một địa chỉ khác với những ràng buộc để đảm bảo giao dịch được diễn ra an toàn và hợp lệ.

4 transferFrom() void Chuyển nhượng NFT từ một địa chỉ đến một địa chỉ khác.

5 approve() void Thay đổi hoặc tái xác nhận địa chỉ (approved address) của một NFT.

6 setApprovalForAll ()

void Bật hoặc tắt xác nhận đối với NFT từ bên thứ ba.

7 getApproved() address Lấy địa chỉ (đã được xác nhận) của một NFT.

8 isApprovedForAll( )

bool Kiểm tra xem liệu một địa chỉ có được uỷ quyền bởi một địa chỉ khác hay không.

Bảng 19. Bảng mô tả chi tiết lớp ERC721

4.4.3.6. PuppyOwnership: STT Tên thuộc tính (phương thức) Loại Ràng buộc Ý nghĩa

1 owns() bool Kiểm tra liệu một NFT có thuộc quyền sở hữu của một địa chỉ hay không.

2 ownerOf() uint256 Tái định nghĩa các hàm trong interface ERC721 ở trên. 3 safeTransferFrom() address 4 transferFrom() void 5 approve() void 6 setApprovalForAll() void 7 getApproved() void 8 isApprovedForAll() address

9 totalSupply() uint Trả về giá trị là số Puppies mà một địa chỉ đang sở hữu.

10 ownerOf() address Trả về địa chỉ của chủ sở hữu một NFT (được đưa vào trong tham số).

11 tokensOfOwner() uint256[] Lấy tất cả Puppies mà một địa chỉ đang sở hữu.

Bảng 20. Bảng mô tả chi tiết lớp PuppyOwnership

4.4.3.7. GeneScience: STT Tên thuộc tính

(phương thức)

1 mixGenes() uint256 Giao phối giống. Trả về mã gen của Puppy con khi đưa vào mã gen của bố mẹ.

Bảng 21. Bảng mô tả chi tiết lớp GeneScience

4.4.3.8. PuppyBreeding: STT Tên thuộc tính

(phương thức)

Loại Ràng buộc Ý nghĩa

1 pregnantCount uint256 Số lượng Puppy đang mang thai trên toàn hệ thống

2 geneScience GeneScienc e

Contract GeneScience hiện đang được sử dụng để phối giống.

3 breedWith() void Thực hiện việc giao phối với một Puppy khác.

4 giveBirth() uint256 Sinh ra Puppy khác. Hàm này gọi event Birth để thêm Puppy vào cơ sở dữ liệu được định nghĩa ở trên.

4.4.3.9. PuppyMinting: STT Tên thuộc tính

(phương thức)

Loại Ràng buộc Ý nghĩa

1 promoCreatedCount uint256 Số lượng Puppies được phát hành miễn phí (dưới dạng quà tặng) cho người chơi trên toàn hệ thống.

2 createPromoPuppy() void Tạo một Puppy mới để tặng cho một địa chỉ cụ thể.

Bảng 23. Bảng mô tả chi tiết lớp PuppyMinting

4.4.3.10. PuppyCore: STT Tên thuộc

tính (phương

thức)

Loại Ràng buộc Ý nghĩa

1 PuppyCore() Constructo r

Khởi tạo một contract PuppyCore mới (để cập nhật lên phiên bản mới trong trường hợp phiên bản cũ gặp vấn đề).

2 getPuppy() Puppy Lấy tồn bộ thơng tin của một Puppy với ID xác định.

CHƯƠNG 5. THIẾT KẾ GIAO DIỆN

5.1. UI Flow:

Hình 45. Hình ảnh UI Flow

5.2.1. Màn hình Marketplace:

5.2.2. Màn hình My Puppy:

5.2.3. Màn hình Puppy Detail:

5.2.4. Màn hình Breeding:

5.3. Giao diện hồn chỉnh: 5.3.1. Màn hình trang chủ: 5.3.1. Màn hình trang chủ:

Hình 50. Màn hình giao diện home

5.3.2. Màn hình My Puppies

5.3.3. Màn hình Marketplace:

Hình 52. Màn hình giao diện Marketplace

5.3.4. Màn hình chi tiết Puppy:

5.3.5. Màn hình Breeding:

CHƯƠNG 7. KẾT LUẬN

7.1. Kết quả đạt được:

Nhìn chung, qua q trình thực hiện đồ án, nhóm đã có cơ hội được học hỏi thêm nhiều kiến thức bổ ích về blockchain và các công nghệ liên quan như Ethereum, NFT. Ngồi ra, nhóm cũng được tìm hiểu và ứng dụng các cơng nghệ, thư viện có liên quan để phát triển trị chơi MyPuppies.

Bên cạnh đó, nhóm cũng đã ứng dụng quy trình phát triển, xây dựng phần mềm được học từ những môn học trước; thiết kế các thành phần, xây dựng được một bài nghiên cứu hồn chỉnh. Dù vẫn cịn nhiều thiếu sót về sản phẩm cuối cùng và vẫn chưa đáp ứng đầy đủ những yêu cầu đề ra từ ban đầu, tuy nhiên, nhóm thực hiện xem đây là một bài học đáng giá để thực hiện những sản phẩm về sau tốt hơn, kỹ lưỡng và hồn thiện hơn.

7.2. Phân tích ưu - nhược điểm: 7.2.1. Ưu điểm: 7.2.1. Ưu điểm:

- Nhóm biết cách tìm hiểu, nghiên cứu để thực hiện đề tài;

- Trò chơi MyPuppies mang tính xu hướng, có khả năng tiếp tục phát triển và triển khai ra cộng đồng;

- Dù khơng có q nhiều thời gian thực hiện, nhóm vẫn cố gắng làm và hoàn thiện báo cáo.

7.2.2. Nhược điểm:

- Phân bổ thời gian, sức lực và sắp xếp công việc chưa hợp lý; - Chưa thực hiện đầy đủ những yêu cầu đề ra từ ban đầu.

7.3. Hướng phát triển:

Trong tương lai, nhóm có mong muốn tiếp tục phát triển game để tiến tới thực hiện khóa luận tốt nghiệp, cũng như mang được sản phẩm ra thị trường. Tuy nhiên,

để đạt được những mục tiêu đó, nhóm cần phải tiếp tục phát triển sản phẩm theo những hướng sau:

- Theo hướng trò chơi:

- Hồn chỉnh trị chơi hơn về mặt đồ hoạ, gameplay cơ bản;

- Xây dựng cửa hàng vật phẩm trong game, cho phép người chơi mua động vật và vật phẩm trang trí (nếu có);

- Cải thiện đồ hoạ của game, thiết kế nhân vật kỹ lưỡng và hoàn thiện hơn theo hướng game 2.5D hoặc 3D;

- Đưa thuật toán giải mã mã gen lên server để nâng cao tính bảo mật cho trò chơi;

- Tiếp tục đảm bảo bảo mật bằng cách thực thi các phương pháp xác thực (mật khẩu cấp 2, nhận diện vân tay, khuôn mặt, v.v) đối với những giao dịch nhạy cảm liên quan đến tài sản của người chơi;

- Có thể xây dựng một khu vườn (hoặc đảo, căn phòng, v.v) những vật phẩm mà người chơi sở hữu; cho phép ghé thăm nhau để tấn công hoặc tặng quà;

- Phát triển tính năng mượn và cho mượn vật phẩm;

- Áp dụng nhiều phương thức thanh tốn trong q trình mua vật phẩm trong cửa hàng;

- …

- Theo hướng blockchain:

- Cải thiện, tối ưu smart contracts để giảm tải chi phí thực thi hàm trên mạng Ethereum;

- Nghiên cứu, triển khai tiền mã hoá riêng cho game, giúp người chơi thuận tiện hơn trong việc mua bán vật phẩm;

- Triển khai sản phẩm trên mainnet để người chơi có thể đầu tư, mua bán và quy đổi sang tiền thật;

- … - Mở rộng:

- Nghiên cứu và ứng dụng các cơng nghệ AR, VR vào trị chơi để đưa vật phẩm “ra ngồi thế giới thực”, nâng cao tính tương tác và tính xã hội cho trị chơi;

- Đưa các vật phẩm quà tặng ngẫu nhiên vào những khu vực nhất định, ở thời điểm ngẫu nhiên để thu hút người chơi dành nhiều thời gian hơn cho game;

TÀI LIỆU THAM KHẢO

A - Tổng quan đề tài:

Một phần của tài liệu Xây dựng game nuôi thú ảo ứng dụng công nghệ blockchain (Trang 97)

Tải bản đầy đủ (PDF)

(141 trang)