1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo Đồ Án i thiết kế một trò chơi trên pc sản phẩm game bắn máy bay bằng ngôn ngữ c++ và thư viện sdl

17 6 0
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ế Một Trò Chơi Trên PC Sản Phẩm: Game Bắn Máy Bay Bằng Ngôn Ngữ C++ Và Thư Viện SDL
Tác giả Nguyễn Minh Phúc
Người hướng dẫn TS. Trần Ngọc Tuấn
Trường học Đại Học Bách Khoa Hà Nội
Thể loại báo cáo đồ án
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 17
Dung lượng 871,52 KB

Nội dung

Ngoài ra, game còn giúp con người có thể tập trung cao độ hơn, rèn luyện tính quyết tâm, kiên trì, tích lũy kinh nghiệm xử lý vấn đề… Em chọn đề tài “Thiết kế một trò chơi trên PC” và s

Trang 1

KHOA ĐIỆN TỬ

*****  *****

BÁO CÁO ĐỒ ÁN I :

Thiết kế một trò chơi trên PC

Sản phẩm:

Game bắn máy bay bằng ngôn ngữ C++ và thư viện SDL

Mã lớp: 736219

Sinh viên: NguyễnMinh Phúc - 20203531

Giảng viên hướng dẫn: TS Trần Ngọc Tuấn

Hà Nội, 12/2023

Trang 2

Lời nói đầu

Dưới đây là bài báo cáo đồ án I của em về chương trình game mà em đã tự mình thiết kế với ngôn ngữ C++ và thư viện SDL

Trong quá trình hoàn thiện báo cáo cũng như sản phẩm, em đã cố gắng tìm hiểu, tổng hợp kiến thức học hỏi và tìm tòi từ nhiều nguồn khác nhau, nhưng

do hạn chế về mặt thời gian và kiến thức nên vẫn còn có những thiếu sót, có những ý tưởng hay nhưng không đủ khả năng thực hiện Em mong nhận được lời nhận xét và góp ý, hỗ trợ từ thầy để em có thể hoàn thiện sản phẩm của mình hơn

Vì phần code khá dài nên em xin phép không đưa vào trong báo cáo mà sẽ đưa ra khi nộp sản phẩm

Em xin chân thành cảm ơn thầy Trần Ngọc Tuấn đã tạo điều kiện, định hướng

và dẫn dắt em trong suốt quá trình hoàn thành sản phẩm cũng như báo báo này

Trang 3

MỤC LỤC

Nội dung

I Tổng quan về đề tài và sản phẩm 5

1.1 Lý do chọn đề tài : 5

1.2 Mục tiêu của đề tài : 6

II Cơ sở lý thuyết về công cụ của đề tài 6

2.1 Tổng quan về trò chơi máy tính : 6

2.2 Ngôn ngữ C++ và thư viện SDL: 6

2.2.1 Ngôn ngữ C++: 7

2.2.2 Thư viện SDL: 8

III Mô tả và các chức năng sản phẩm 9

3.1 Mô tả về sản phẩm: 9

3.2 Các chức năng chính và chi tiết: 9

3.2.1 Start, Exit ở màn hình menu: 9

3.2.2 Kẻ địch xuất hiện: 9

3.2.3 Di chuyển và tấn công: 9

3.2.4 Tiêu diệt kẻ thù: 9

3.2.5 Game Over: 9

3.2.6 Tính điểm: 10

3.2.7 You Win: 10

3.3 Các hạn chế của sản phẩm hiện tại: 10

Trang 4

IV Lớp thành viên (Member Class) 10

4.1 Các lớp thành viên: 10

4.2 COMMON FUNCTION: 11

4.3 BASE OBJECT: 11

4.4 AMO OBJECT: 11

4.5 THREAT OBJECT: 11

4.6 MAIN OBJECT: 12

4.7 EXPLOSION OBJECT: 12

4.8 TEXT OBJECT: 12

4.9 MAIN: 12

V Giao diện game 13

5.1 Menu bắt đầu 13

5.2 Khi đang chơi 13

5.3 Khi thất bại 14

5.4 Khi chiến thắng 15

SƠ ĐỒ CHỨC NĂNG 16

VI Kết luận 17

6.1 Những vấn đề đạt được 17

6.2 Những vấn đề còn hạn chế 17

Trang 5

I Tổng quan về đề tài và sản phẩm

1.1 Lý do chọn đề tài :

Trong những năm gần đây, trò chơi điện tử hay game là một thứ không thể không kể đến khi nói về lĩnh vực giải trí Game vừa là hình thức giúp ta giải trí, giúp chúng ta có khả năng tư duy, nhạy bén về đầu óc Ngoài ra, game còn giúp con người có thể tập trung cao độ hơn, rèn luyện tính quyết tâm, kiên trì, tích lũy kinh nghiệm xử lý vấn đề…

Em chọn đề tài “Thiết kế một trò chơi trên PC” và sản phẩm “Lập trình game bắn máy bay bằng ngôn ngữ C++ và thư viện SDL” vì đây là một dạng game

đã xuất hiện từ lâu trên thế giới , nhưng ưu điểm của game mà em thiết kế là tốc độ game nhanh, không yêu cầu cấu hình mạnh, không yêu cầu trình độ quá cao, rèn luyện khả năng phản xạ,…Chính vì vậy mà nó giải quyết được những vướng mắc gặp phải khi thiết kế theo phương pháp lập trình thủ tục thuần túy:

- Mã chương trình rõ ràng, dễ đọc, dễ hiểu

- Chương trình có tính linh hoạt, mềm dẻo cao

Trang 6

- Có khả năng tái sử dụng tài nguyên

1.2 Mục tiêu của đề tài :

- Tìm hiểu ngôn ngữ C++ và thư viện SDL, đồng thời vận dụng để xây dựng

game bắn máy bay

- Nắm được các lớp, các phương thức cần thiết để xây dựng game

- Nâng cao trình độ, tự nghiên cứu, học hỏi, tư duy, rèn luyện khả năng chịu

áp lực thời gian, làm nền tảng vững chắc cho sinh viên sau khi ra trường

II Cơ sở lý thuyết về công cụ của đề tài

2.1 Tổng quan về trò chơi máy tính :

Trò chơi máy tính còn gọi là PC game, là thể loại trò chơi video được chơi trên các máy tính cá nhân (PC), thay vì chơi trên máy chơi trò chơi điện tử tại gia hoặc máy chơi trò chơi arcade Các đặc điểm cố định của nó bao gồm: phần cứng và phần mềm chơi game đa dạng hơn và do người dùng quyết định;

và nói chung là công suất lớn hơn trong đầu vào, xử lý, đầu ra video và âm thanh Hiện nay, về bản chất là do không có sự phối hợp nào rõ ràng trong thị trường trò chơi PC, và việc thiếu các phương tiện truyền thông vật lý, khiến việc đánh giá chính xác quy mô của nó trở nên khó khăn Năm 2018, thị trường game PC toàn cầu được định giá khoảng 27,7 tỷ USD

Các trò chơi trên máy tính gia đình trở nên phổ biến hơn sau sự cố trò chơi điện tử năm 1983, dẫn đến kỷ nguyên của "coder phòng ngủ" Vào thập niên

1990, các trò chơi trên PC đã đánh mất đi sức hút từ thị trường đại chúng vào tay máy chơi trò chơi điện tử, trước khi hồi sinh vào giữa thập niên 2000 thông qua phân phối kỹ thuật số

Ngày nay, phần lớn các trò chơi máy tính được thiết kế để chạy trên dòng

hệ điều hành Microsoft Windows Trong khi các trò chơi trước đây được viết cho DOS sẽ bao gồm mã để giao tiếp trực tiếp với phần cứng thì ngày nay giao diện lập trình ứng dụng (API) cung cấp giao diện giữa trò chơi và hệ điều hành, giúp đơn giản hóa việc thiết kế trò chơi DirectX của Microsoft là một API được các trò chơi máy tính ngày nay sử dụng rộng rãi để giao tiếp với phần cứng âm thanh và đồ họa OpenGL là một API đa nền tảng cũng được sử dụng để kết xuất đồ họa Phiên bản trình điều khiển của card đồ họa được cài đặt thường có thể ảnh hưởng đến hiệu suất trò chơi và cách chơi

2.2 Ngôn ngữ C++ và thư viện SDL:

Trang 7

2.2.1 Ngôn ngữ C++:

C++ là một ngôn ngữ lập trình được phát triển vào năm 1979 tại phòng thí nghiệm Bell bởi Bjarne Stroustrup Đây được gọi là ngôn ngữ bậc trung (middle-level) và là một phần mở rộng của ngôn ngữ lập trình C hoặc “C với các lớp Class” vì C++ là sự kết hợp các tính năng của ngôn ngữ cấp cao và cấp thấp

Ngôn ngữ lập trình này có thể chạy trên nhiều nền tảng khác nhau như: Windows, macOS và Unix Từ những thập niên 1990, C++ đã trở thành một trong những ngôn ngữ thương mại được ưa thích của các lập trình viên Theo thời gian nó đã mở rộng đáng kể và hiện nay có nhiều tính năng như: lập trình tổng quát, lập trình thủ tục, lập trình hướng đối tượng,

• Các đặc trưng cơ bản của C++ :

• C++ là một ngôn ngữ tầm trung, bạn hoàn toàn có thể sử dụng nó để phát triển các chương trình bậc thấp hay những chương trình bậc cao, mà vẫn hoạt động tốt trong phần cứng

• C++ là ngôn ngữ lập trình hướng đối tượng, sử dụng các Class và Object cùng các khái niệm như tính kế thừa, tính đa hình, tính đóng gói để tạo

ra các chương trình

• C++ được tạo ra dựa trên nền tảng ngôn ngữ C, nên nó có hầu hết mọi tính năng của C và được bổ sung thêm khái niệm functions trong quá trình thiết

kế chương trình

• Các chương trình được tạo ra bởi C++ đều có thể chạy được trên các hệ điều hành như Mac OS, Windows, hay một số biến thể của Unix

• Các điểm mạnh nổi bật của ngôn ngữ C++ là :

Tính phổ biến: Lập trình viên C++ là một trong những công việc được các

nhà tuyển dụng trên toàn cầu tìm kiếm nhiều Điều này có thể cho thấy C++ là một trong những ngôn ngữ lập trình phổ biến nhất trên thế giới

Dễ hiểu và dễ sử dụng: C++ được biết đến là ngôn ngữ lập trình đơn giản

nhất Lập trình này hoạt động theo nguyên tắc phân nhỏ các nhiệm vụ lớn thành các nhiệm vụ nhỏ cho bất kỳ dự án nào Cấu trúc câu lệnh dễ hiểu, ít

từ khóa nên khá dễ học và dễ sử dụng

Trang 8

Thư viện đa dạng, phong phú: có nhiều tài nguyên hỗ trợ cho ngôn ngữ

này như đồ họa API, 2D, 3D, vật lý các thiết bị âm… giúp cho các lập trình viên dễ thực thi

Đa mô hình: C++ cũng cho phép bạn lập trình theo cấu trúc tuyến tính,

hướng chức năng, hướng đối tượng đa dạng tùy theo yêu cầu của người lập trình

Tính di động cao: một đoạn mã code C++ có thể chuyển đổi dễ dàng khi

chạy trong macOS, Window hay Linux Nhờ đó mà lập trình viên không phải tốn thời gian viết lại chương trình khi sử dụng nó để chạy trên nhiều platform khác nhau

• Ngôn ngữ C++ trong mảng game :

C++ là lựa chọn ưu tiên để phát triển các trò chơi Nó cho phép tối ưu hóa các nguồn tài nguyên, hỗ trợ tùy chọn cho nhiều người chơi với mạng Bên cạnh đó, ngôn ngữ này còn cung cấp quyền kiểm soát phần cứng và can thiệp sâu vào CPU Đây là yếu tố quan trọng khi thiết kế các trò chơi Engines Một

số tựa games nổi tiếng có sự "góp mặt" của C++ là World Of Warcraft, Diablo Series, Dom 3, Team Fortress 2,

2.2.2 Thư viện SDL:

Quá trình xây dựng engine game cần một số thư viện cung cấp những hàm API để thao tác với hệ thống cấp thấp bên dưới như âm thanh, bàn phím, chuột và các hệ thống khác Thư viện SDL (Simple DirectMedia Layer) cung cấp đầu đủ những hàm API để làm được những việc đó

• SDL (Simple DirectMedia Layer) là 1 thư viện đa phương tiện, đa nền tảng, bao gồm các API để thao tác với âm thanh, bàn phím, chuột, joystick, 3D hardware thông qua OpenGL, and 2D video

• SDL hỗ trợ các nền tảng như Linux, Windows, Windows CE, BeOS, MacOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX, and QNX

• SDL được viết bằng C nhưng hỗ trợ tốt với C++ và hiện tại cũng đã hỗ trợ các ngôn ngữ khác như Ada, C#, Lua, Ocaml, Pascal và Python

• Các game sử dụng thư viện SDL như Syberia II, 7 Grands Step, Secret Maryo Chronicles,

Trang 9

III Mô tả và các chức năng sản phẩm

3.1 Mô tả về sản phẩm:

Đây là một game cho phép bạn nhập vai vào một phi cơ, chiến đấu chống lại các thế lực phản diện ngoài hành tinh Nó được lập trình bằng ngôn ngữ C++ và thư viện SDL, chạy trên phần mềm Visual Code Studio, theo phương pháp hướng đối tượng Tuy đây là một dạng game khá cơ bản và phổ biến nhưng lại hay và có tính thử thách, đồng thời dễ tiếp cận và không yêu cầu cấu hình máy cao

3.2 Các chức năng chính và chi tiết:

3.2.1 Start, Exit ở màn hình menu:

Giải thích: Để có thể bắt đầu trò chơi, click chuột vào PLAY GAME

Để thoát game, click chuột vào EXIT

3.2.2 Kẻ địch xuất hiện:

Giải thích:

• Kẻ địch xuất hiện ngẫu nhiên và bắn đạn

• Kẻ địch khi bị tiêu diệt hoặc đi hết màn hình thì xuất hiện thêm

kẻ thù

3.2.3 Di chuyển và tấn công:

Giải thích:

• Di chuyển : Đây là chức năng cho phép ta điều khiển phi cơ chiến đấu di chuyển trên toàn màn hình game bằng các phím trên bàn phím như sau :

✓ Di chuyển sang trái: Bấm phím

✓ Di chuyển sang phải: Bấm phím

✓ Di chuyển lên trên: Bấm phím

✓ Di chuyển xuống dưới: Bấm phím

• Tấn công : Đây là chức năng cho phép ta bắn ra đạn từ phi cơ chiến đấu Ta click chuột trái/phải để bắn ra 2 loại đạn khác nhau

3.2.4 Tiêu diệt kẻ thù:

Giải thích: Kẻ thù bị tiêu diệt và phát nổ khi trúng đạn

3.2.5 Game Over:

Trang 10

Giải thích: Phi cơ chiến đấu va chạm với kẻ thù hoặc đạn của kẻ thù và phát nổ, khi đó hiện cửa sổ GameOver thông báo thua và kết thúc trò chơi

3.2.6 Tính điểm:

Giải thích: Mỗi khi tiêu diệt được một kẻ thù được cộng 1 điểm

3.2.7 You Win:

Giải thích: Chiến thắng khi tiêu diệt thành công Boss ở cuối màn, khi

đó sẽ xuất hiện cửa sổ YouWin và kết thúc trò chơi

3.3 Các hạn chế của sản phẩm hiện tại:

• Chưa có nhiều màn chơi

• Chưa có chức năng Save Game, Pause Game

• Chưa có chức năng Multi-player

• Chưa tối ưu được Boss của game

IV Lớp thành viên (Member Class)

4.1 Các lớp thành viên:

BASE OBJECT COMMON FUNCTION

AMO OBJECT

ECT

EXPLOSION OBJECT

MAIN OBJECT TEXT OBJECT

THREAT OBJECT

Trang 11

Với : Kế thừa

Mỗi lớp gồm một file header và một file cpp và file main.cpp kế thừa toàn bộ các lớp trên

4.2 COMMON FUNCTION:

Lớp này là lớp mang nhiệm vụ truy cập vào thư viện SDL nên tất cả các lớp khác đều cần kế thừa từ lớp Common Function Ngoài ra nó còn chứa các biến cố định và các hàm :

• Hàm tạo Background game

• Hàm load ảnh lên màn hình

• Hàm load clip lên màn hình

• Hàm thiết lập va chạm

• Hàm kiểm tra tọa độ vật thể

• Hàm thiết lập Menu

• Hàm giải phóng các đối tượng biến global

4.3 BASE OBJECT:

Đây là một lớp cơ sở chung dùng để chứa đựng các thuộc tính chung cho các lớp khác kế thừa Nó chứa các hàm và thuộc tính:

• Hàm load ảnh vật thể

• Hàm show vật thể

• Hàm xác định và thiết lập tọa độ vật thể và kích thước

• Thuộc tính bề mặt để apply

4.4 AMO OBJECT:

Đây là lớp quản lý các vấn đề về đạn của cả chính diện và phản diện trong game Nó chứa các hàm và thuộc tính:

• Chiều dài và rộng của đạn

• Hàm quỹ đạo và tốc độ đạn của nhân vật chính

• Hàm quỹ đạo và tốc độ đạn của kẻ thù

4.5 THREAT OBJECT:

Đây là lớp quản lý các vấn đề về các mối đe dọa, kẻ thù của người chơi Nó chứa các hàm và thuộc tính:

Trang 12

• Chiều dài và chiều rộng của kẻ thù

• Hàm thiết lập di chuyển và vị trí xuất phát của kẻ thù

• Hàm tạo và thiết lập đạn của từng loại kẻ thù

• Hàm load hình ảnh đạn của từng loại đạn của từng loại kẻ thù

• Hàm reset lại kẻ thù và đạn của chúng khi bị tiêu diệt

4.6 MAIN OBJECT:

Đây là lớp xử lý các vấn đề xoay quanh nhân vật chính Nó chứa các hàm và thuộc tính:

• Tọa độ và kích thước nhân vật chính

• Hàm thiết lập sự kiện và hoạt động khi người chơi điều khiển bằng nút/chuột

• Các hàm thiết lập đạn của nhân vật chính

• Hàm thiết lập di chuyển của nhân vật chính

4.7 EXPLOSION OBJECT:

Đây là lớp xử lý các vụ nổ khi các vật thể có va chạm Nó chứa các hàm và thuộc tính:

• Hàm thiết lập clip nổ

• Hàm show vụ nổ

4.8 TEXT OBJECT:

Đây là lớp xử lý các văn bản trong game như điểm, tên game, lựa chọn

ở menu Nó chứa các hàm và thuộc tính:

• Màu văn bản

• Hàm thiết lập màu văn bản

• Hàm tạo văn bản

4.9 MAIN:

Đây là phần quan trọng nhất trong quá trình lập trình game này Main được phép kế thừa và sử dụng toàn bộ các thuộc tính cũng như các hàm của các lớp thành viên cũng như các thư viện mà nó truy cập Ngoài các hàm và thuộc tính được kế thừa và truy cập, main cũng có một số hàm và hoạt động khác như:

• Đọc file audio âm thanh va chạm

Trang 13

• Hàm khởi tạo các thuộc tính ban đầu

• Load font text

• Hiển thị điểm người chơi

• Tạo phản diện

• Tạo nhân vật chính

• Cập nhật màn hình Window và giữ game chạy liên tục cho đến khi

có lệnh thoát

V Giao diện game

5.1 Menu bắt đầu

5.2 Khi đang chơi

Bắt đầu chơi

Thoát game

Tên game

Thoát game

Trang 14

5.3 Khi thất bại

Kẻ thù 2

Kẻ thù 1

Nhân vật

chính

Điểm

Đạn nhân vật chính

Đạn

kẻ thù

Trang 15

5.4 Khi chiến thắng

Vụ nổ va

Nhấn để thoát game

BOSS

Chiến thắng

Nhấn để thoát game

Trang 16

SƠ ĐỒ CHỨC NĂNG

Play Game

Bắt đầu chơi

GAME

OVER

YOU WIN

Thoát game

Trúng đạn/

Va chạm

Bắn trúng địch

Cộng điểm

Tiêu diệt boss

Trang 17

VI Kết luận

6.1 Những vấn đề đạt được

Với kiến thức được học tập trên trường cùng sự nỗ lực tìm tòi, tham khảo ở nhiều nguồn và tinh thần sáng tạo, mày mò, em đã hoàn thành đồ

án I với đề tài “Thiết kế một chương trình hoàn chỉnh chạy được” với sản phẩm là “Game bắn máy bay bằng ngôn ngữ C++ và thư viện SDL”

Báo cáo này là cái nhìn tổng quát về quá trình hoàn thành và về chính sản phẩm của em

6.2 Những vấn đề còn hạn chế

Do thời gian có hạn cũng như kiến thức vẫn còn hạn chế, nên đồ án của

em đã không thể hoàn thành hết các chức năng như dự định ban đầu đã đặt

ra Tuy nhiên, những chức năng chưa hoàn thiện em sẽ cố gắng bổ sung và hoàn chỉnh về sau

Trong quá trình thiết kế và thực hiện đồ án không tránh khỏi sai sót, mong thầy thông cảm và có những góp ý quý báu nhằm hoàn thiện hơn cho sản phẩm

Ngày đăng: 31/12/2024, 20:33

HÌNH ẢNH LIÊN QUAN

SƠ ĐỒ CHỨC NĂNG - Báo cáo Đồ Án i  thiết kế một trò chơi trên pc sản phẩm game bắn máy bay bằng ngôn ngữ c++ và thư viện sdl
SƠ ĐỒ CHỨC NĂNG (Trang 16)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w