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

báo cáo thiết kế game nhập môn lập trình

13 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
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

Tiêu đề Thiết kế game nhập môn lập trình
Tác giả Trần Nguyễn Song Chỉ, Lờ Hoàng Lõm, Nguyễn Lờ Thiờn Lý, Lờ Vừ Xuõn Hưng, Nguyễn Mạnh Tường
Người hướng dẫn Vũ Quốc Hoàng
Trường học Trường Đại học Khoa học Tự nhiên ĐHQG-HCM
Chuyên ngành Công nghệ thông tin
Thể loại Báo cáo thiết kế game
Năm xuất bản 2023
Định dạng
Số trang 13
Dung lượng 3,32 MB

Nội dung

Nhân vật sẽ phải di chuyển về phía trước và người chơi gần phải tính toán thời gian, khoảng cách và đưa ra quyết định, kết hợp với sự khéo léo để vượt qua các chướng ngại vật tĩnh / động

Trang 1

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN ĐHQG-HCM

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO THIẾT KẾ GAME

MÔN: NHẬP MÔN LẬP TRÌNH

Giảng viên: Vũ Quốc Hoàng

Nhóm 4

Trang 2

Nội dung báo cáo

II 20 ae 3

MU 0 0 ha 3

2 _ Kế hoạch làm việc hàng tuần . - + nh nành TH ng HH TH TH HT ng TH HH 3 3 Công cụ hỗ trợ L4 H111 T121 11 1111111111115111511151511 11111 1ET1111E111E1111.1x E1 4

IMII 4T .4ẦỔ 5

II 2121 5a ố 5

HN na ae .e 5

E5 ' '”'"'"'.'.-"'"-"'"-.”- 5

4 Da dang va ii na cố se ằ e 8

5 _ Hiệu ứng âm thanh — Background MUSÍC - Q1 vn nh HH TH ng HH ng HH ryy 8 Ill Tổng quan Kỹ thuật lập trình và Thuật toán: . - S002 HErkrkrrrrrrrrerersre 9 1 Kỹ thuật lập trình và cách tổ chỨC - 1 21 E11 E* SE HT TT TH Tnhh ng 9 PIN 2.5m 434A 9

a _ Xác định va chạm (Collision Detection) - cnnn HH TH ng HH ng ng rryy 9 b Tao ban 28 .4Ầ 11

LAN ah 0n 13

"ha 13

2 Nhược điểm nh HH HH HE HE TT Thy 13 "AT j2.) —— 13

'/JTEE Nhu 5a 4äầAĂA-7+ 13

Trang 3

NOI DUNG BAO CAO

Thông tỉn nhóm

1 Thành viên và vai trò

23127162 | Trần Nguyễn Song Chỉ | Đồ họa — Tester tnschi23@clc.fitus.edu.vn

23127216 | Lê Hoàng Lâm Thiết kế - Coder lhlam23 @clc.fitus.edu.vn

23127223 | Nguyễn Lê Thiên Lý Thư ký - Tester nltly23@clc.fitus.edu.vn

23127371 | Lê Võ Xuân Hưng Nhóm trưởng — lvxhung23@clc.fitus.edu.vn

Thuyết trình

23127514 | Nguyễn Mạnh Tường | Hiệu ứng âm thanh | nmtuong23@clc.fitus.edu.vn

2 Kế hoạch làm việc hàng tuần

Hạn kế hoạch làm viéc: 4/12/2023

Tuần 1 (từ 16/0 dén 23/10) : Tim hiéu vé thư viện Pygame của Python và lên

ý tưởng cho game

Tuan 2 va tuan 3 (tir 23/10 đến 6/11):

©

©

©

Hoàn thiện điều khiển nhân vật

Hoàn thiện chuyển động của các vật thể

Hoàn thiện các cơ chế tương tác giữa các vật thể và nhân vật

Tuần 4 (từ 6⁄41 đến 13/11):

©

©

©

©

Hoàn thiện phần khởi tạo màn chơi

Hoàn thiện cơ chế tính điểm cho người chơi

Hoàn thiện giao diện màn chơi

Sửa lỗi và điều chỉnh cơ chế tương tác của các vật thể

Tuần 5 (tir 13/11 dén 20/11):

© Hoàn thiện giao diện màn chơi

Hoàn thiện giao diện mở đầu

Hoàn thiện giao diện lựa chọn nhân vật

Bổ sung các cơ chế còn thiếu của game

Sửa lỗi các phần trước đó

Tuần 6 (từ 20/11 đến 27/41):

©

©

©

©

n

©

©

©

©

Hoàn thiện cơ chế game cuối cùng

Thêm sound effect + bgm cho game

Ưu hóa trải nghiệm người dùng

Fix lỗi xảy ra trong khi chơi

Tuần 7 (từ 27⁄41 đến 4/12):

Kiểm tra lỗi

Trang 4

©_ Viết báo cáo đồ án

© Lam PowerPoint thuyết trình

Công cụ hỗ trợ

Visual Studio Code — Code game

Clip Studio Paint — Đồ họa

Facebook Messenger — Trao đổi thông tin

Microsoft OneDrive — Thư mục làm việc, chia sẻ tài liệu Microsoft Word — Tạo báo cáo

Trang 5

Thiết kế game

1 Thông tỉn chung về game

a Tên game: Crossover Weather

b Thể loại:

- Endless Runner

- 1 người choi

c Ý tưởng: Lấy cảm hứng từ tựa game huyền thoại: Crossy Road

d Mô tả ngắn: Người chơi sẽ phải điều khiển nhân vật vượt qua các thử thách, chướng ngại vật để đi xa nhất

e Ngôn ngữ lập trình: Python

f Mục tiêu của trò chơi: Vượt qua các thử thách và chướng ngại vật, đi xa nhất

và giành điểm cao nhất có thể

2 Gameplay

- Điều khiển:

© Di chuyển: WASD / mũi tên lên, xuống, trái, phải

[^J[s J[b]

© Di chuyển nhanh: phím cach (Space)

- Quy luat choi:

o_ Người chơi điều khiển nhân vật của mình di chuyển bằng các nút điểu khiển (WASD / mũi tên và phím cách) Nhân vật sẽ phải di chuyển về

phía trước và người chơi gần phải tính toán (thời gian, khoảng cách)

và đưa ra quyết định, kết hợp với sự khéo léo để vượt qua các chướng ngại vật tĩnh / động

©_ Một khi rơi xuống dòng sông hoặc cây ngã đè lên nhân vat hoặc bị

quả cầu tuyết lăn qua, người chơi sẽ thua và được ghi điểm tự động

3 Đồ họa

Các tất cả hình ảnh, vật thể (môi trường, nhân vật, chướng ngại vật) đều được thành viên phụ trách đồ họa vẽ tay bằng Clip Studio Paint

a Môi trường và chướng ngại vật

- Có 2 kiểu thời tiết: mùa hạ và mùa đồng

Trang 6

© Cầu tuyết:

b Nhân vật

1 Cat (Mèo)

Trang 7

3 Dinosaur (Khủng Long) & di ey i

|

6 Frog (Ech) § s1 40 Qe

c Giao diện

Phong cách đồ họa pixel 2D đơn giản, dễ thương và gần gũi với người chơi Nhân vật và môi trường được thiết kế với tông màu sáng, tạo cảm giác tươi

sáng cho trò chơi

Giao diện game:

Your character:

Version 1.7

O Giao diện tạm dừng / kết thúc trò chơi:

Trang 8

4 Đa dạng và độ khó

Paused Game Over

Highest score: 10560 Your score: 1100

6 @

- C6 3 d6 kho: Easy, Medium, Hard

© Ché dé Easy (Dé):

Với cấp độ đơn giản nhất, các chướng ngại vật tương đối chưa

quá phức tạp Chỉ gồm các khúc gỗ bình thường trôi trên sông, và

những khúc gỗ chặn đường có xác suất xuất hiện

Ché độ Medium (Trung Bình):

Với cấp độ khó Trung Bình, các chướng ngại vật khó chịu sẽ dần xuất hiện nhiều hơn Với việc các khúc gỗ chặn đường sẽ luôn xuất hiện, các khúc gỗ trôi nay đã có thể bị nứt khi đứng quá lâu, cũng như các cây bên đường cũng có khả năng bị đổ bất ngờ

Ché độ Hard (Khó):

Với cấp độ khó nhất, các chướng ngại vật sẽ hầu như không có quá nhiều thay đổi so với cấp độ khó Trung bình Nhưng lúc này, độ

khó sẽ tăng thông qua việc tăng khoảng cách giữa các bờ hay sẽ xuất hiện ba con sông liên tiếp nhau

Hiệu ứng âm thanh — Background Music

Intro BMG: The Hairy Orange Spider | Royalty-free Music - Pixabay

Playing BMG: Cute Creatures | Royalty-free Music - Pixabay

Press Button: Interface | Royalty-free Music - Pixabay

Touch Button: Button | Royalty-free Music - Pixabay

Game Over: Game Over — Super Mario

Trang 9

Ill Tổng quan Kỹ thuật lập trình và Thuật toán

1 Kỹ thuật lập trình và cách tổ chức

a Kỹ thuật lập trình

Lập trình hướng đối tượng OOP (Object - Oriented Programming)

b Cách tổ chức

Để thuận tiện cho việc quản lý và sửa lỗi, mã nguồn (source code) của game được chia thành các tệp (file) source code khác nhau, và được sử dụng bằng cách import module của Python

main.py : chứa mã nguồn (code) phục vụ cho việc khởi tạo của Pygame và thực hiện vòng lặp game (GameLoop)

PlayerManager.py: chứa mã nguồn (code) của lớp đối tượng (class) Player — người chơi

ObstacleManager.py: chứa mã nguồn (code) của các lớp đối tượng (class) chướng ngại vật

ValueManager.py: chứa các giá trị (value) mặc định và dùng để dùng chung cho game

ObjectManager.py: chứa mã nguồn (code) của các lớp đối tượng (class) của

phần UI

GameMechanism.py: chứa mã nguồn (code) của các hàm liên quan đến tương tác của người chơi với nhân vât, giữa nhân vật và các chướng ngại vật,

và vận hành của màn chơi

ScreenManager.py: chứa mã nguồn (code) của các lớp đối tượng (class) của các giao diện màn hình của game

FileManager.py: chứa mã nguồn (code) của các hàm liên quan đến phần đọc,

ghi file

report.py: chứa mã nguồn (code) cho việc hiển thị một số cảnh báo

2 Thuật toán cốt lõi

a Xác định va chạm (Collision Detection)

Collision Dection gồm 2 loại: Toán học (Mathematically) và Đồ họa (Graphically)

% Về mặt Toán học (Mathematically)

- Toán hoc (Mathematically): la dung cdc mé hinh toán học để mô tả vị trí và hình dạng giữa những đối tượng Từ đó kiểm tra xem 2 đối tượng có va chạm với nhau không

Với mỗi đối tượng (object) sẽ có một thành phần (attribute) la Rect — là một hình chữ nhật bao quanh vật thể, đây là một thành phần (attribute) được kế thừa từ lớp (class)

Sprite của Pygame

Trang 10

midtop

center left midleft e midright $ right h

(centerx,centery) midbottom

w

Dưới đây là một số hàm để xác định va chạm (Collsion Dectection):

.rect.bottom

player

bottom_limit Tect.bottom

(

left_limit < player.centerx <right_limit

top_limit <= player.bottom <= bottom_limit

% Về mặt Đồ họa (Graphically)

- Đồ họa (Graphically): là sử dụng các định nghĩa về pixel của những đối tượng, và xác định xem nếu có pixel nào chồng lấp (overlap) lập tức là 2 đối tượng va chạm Ngược lại

là không

Với mỗi đối tượng (object) sẽ có một thành phần (attribute) là mask — gồm những pixel không trong suốt của surface, mỗi pixel sẽ sử dụng 1 bit để xem pixel đó có bị chồng lấp,

va chạm không

Trang 11

MO.) tect[1]

iesfinrast mask

njgƒtùnnnsit mask

leftmask (rightmask, (xoffset, yoffset))

Vì Pygame đã có hàm hỗ trợ trong vấn đề này nên là trong tài liệu này chỉ có đoạn code

áp dụng hàm đó

(

Dygame.SpDFIfe

Một bản đồ sẽ có dạng là các tầng xếp chồng lên nhau Gồm có 12 tầng, được đánh số

từ 1 đến 12 theo thứ tự từ dưới lên

Nhân vật sẽ xuất phát tại tầng 1, và đi đến cuối tầng 12 để hoàn thành một màn chơi Khi hoàn thành màn chơi, nhân vật sẽ được đặt lại vị trí tầng 1 và lặp lại quá trình như trên

Để tạo được tính khả thi cho việc vượt màn thì trong một bản đồ sẽ gồm 2 loại tầng

khác nhau là tầng trống và tầng ngại vật

«_ Tầng trống là tầng thoáng, nhân vật sẽ được tự do di chuyển hơn nhưng vẫn sẽ

xuất hiện chướng ngại vật, cản trở hoặc tấn công nhân vật

« Tầng ngại vật là tầng chứa chướng ngại vật, hạn chế khả năng di chuyển của

người chơi

Trang 12

Như vậy, để nhân vật có thể di chuyển qua được mỗi các tầng thì cần phải tính toán và

quy định một số vị trí đặc biệt để tồn tại cách di chuyển để nhân vật vượt qua

Đối với tầng thoáng: Là tầng nghỉ, là chuyển giao giữa một hoặc nhiều tầng ngại vật nên

vì thể phải có vị trí để nhân vật đặt chân lên, nhưng cũng phải có chút cản trở

« Cây: Được đặt sát phía ngoài ở một trong hai bên của tầng Như vậy, người chơi

sẽ có cái nhìn thoáng hơn, tránh gây cản trở tầm nhìn Nhưng khi lên đến độ khó cao hơn sẽ có xác suất đổ hoặc sẽ đổ về phía người chơi, tạo bất ngờ khiến người

chơi thua hoặc cản trở người chơi

« Ngại vật chặng đường: sẽ được đặt trong khoảng giữa của tầng, trong một phạm

vi nhất định để người chơi có thể có chỗ đứng để tiếp tục qua màn hoặc né tránh cây đổ

Đối với tầng ngại vật:

« _ Trường hợp 1: Chỉ có một tầng ngại vật riêng lẻ, người chơi hoàn toàn có thể Vượt qua được

«_ Trường hợp 2: Có hai tầng ngại vật nằm cạnh nhau, khi đó người chơi sẽ có ít

cách di chuyển hơn, để tồn tại được cách di chuyển đúng đắn, ta sẽ làm như sau:

© Đặt hai ngại vật tại hai vị trí xác định để có giao điểm nằm trong vùng

nhìn thấy

«_ Trường hợp 3: Có ba tầng ngại vật nằm cạnh nhau, khi đó người chơi sẽ phải chọn một cách đi hiệu quả hơn, như vậy ta phải làm sao để tồn tại cách di chuyển đó:

© Ba ngại vật có cùng tốc độ phải di chuyển ngược chiều xen kẽ nhau Ngại vật tiếp theo phải có chiều ngược lại ngại vật trước đó

o Đặt ba ngại vật tại những vị trí được xác định để tồn tại cách di chuyển Vị trí của ngại vật tiếp theo phụ thuộc vào vị trí ngại vật trước đó để có cách di

chuyển

Ngoài ra, sau khi đạt được các điều kiện nhất định sẽ dần đến thay đổi môi trường hoặc

độ khó của màn chơi, khi đó chỉ cần thay đổi ngại vật được đặt vào, và vẫn hoàn toàn giữ cơ chế tạo bản đồ ban đầu

Trang 13

IV Đánh giá và nhận xét

1 Ưu điểm

- _ Đơn giản và dễ chơi, không đòi hỏi quá nhiều kĩ thuật cao, nhưng không quá dễ dàng để vượt qua nhiều màn chơi

- Đồ họa, âm thanh, nhân vật, được thiết kế theo phong cách đáng yêu Nhân vật và

môi trường mang màu sắc tươi sáng Thiết kế đơn giản nhưng thu hút, thân thiện

- _ Không giới hạn thời gian chơi Người chơi có thể chơi trong thời gian rảnh và có

dừng lại khi cần thiết mà không gặp khó khăn gì từ game

2 Nhược điểm

- Đồ họa đơn giản tuy là một phần của phong cách nghệ thuật, nhưng cũng có thể

làm giảm sự hấp dẫn của trò chơi

-_ Thiếu tính thử thách, phong phú Mặc dù có thay đổi môi trường và nhân vật chơi, nhưng không quá nhiều và vẫn giữ nguyên gameplay do đó các hành động của người chơi được lặp đi lặp lại có thể gây nhàm chán

-_ Thiếu mối liên kết giữa các người chơi Chưa cung cấp chế độ nhiều người chơi để

các người chơi chơi cùng và so tài với bạn bè

V Tỉ lệ đóng góp

23127514 | Nguyễn Mạnh Tường Hiệu ứng âm thanh 17.5%

VI - Tài liệu tham khảo

._ Tài liệu về Pygame: Pygame Front Page — pygame v2.6.0 documentation

._ Tài liệu hướng dẫn về Pygame: Pygame Fundamentals - ClearCode

._ Tài liệu hướng dẫn về OOP: Understanding classes and object-oriented programming

Python Tutorial]

Ngày đăng: 26/09/2024, 17:28

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w