Và đây sẽ là bài học đáng nhớcho em để có thể cẩn thận và tỉ mỉ nhiều hơn.Để tạo nên một chương trình hoàn thiện, chất lượng và cóthể sử dụng trong thực tiễn thì đòi hỏi chúng ta phải có
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
TRƯỜNG ĐIỆN – ĐIỆN TỬ
BÁO CÁO BÀI TẬP LỚN
Đề tài:
GAME: SHOTPLANE
Sinh viên thực hiện: Nguyễn Thị Hồng Ánh – 20203319
Giảng viên hướng dẫn: PGS.TS TRẦN THỊ THANH HẢI
Hà Nội, tháng 01 năm 2022
Trang 2MỤC LỤC
LỜI NÓI ĐẦU 1
CHƯƠNG 1: GIỚI THIỆU CHUNG 2
1.1 Giới thiệu về chủ đề 2
1.2 Khó khăn và thách thức 2
1.3 Mục tiêu của đề tài 3
CHƯƠNG 2: PHÂN TÍCH BÀI TOÁN 3
2.1 Tổng quát 3
2.2 Sơ đồ hoạt động (Class Diagram) 3
2.3 Mô tả chi tiết chức năng 4
2.4 Đánh giá 5
CHƯƠNG 3: PHƯƠNG PHÁP THỰC HIỆN 5
3.1 Phương pháp đề xuất 5
3.2 Cài đặt thử nghiệm 6
3.3 Thực nghiệm 6
CHƯƠNG 4: KẾT LUẬN 6
4.1 Kết luận 6
4.2 Thiếu sót và điều sẽ bổ sung trong tương lai 7
4.3 Kiến nghị, đề xuất 7
TÀI LIỆU THAM KHẢO 8
Trang 3LỜI NÓI ĐẦU
Thời đại ngày nay, công nghệ thông tin càng ngày càng phổ biến, sau cuộc cách mạng công nghiệp năm 2013, công nghệ ngày càng phát triển và đặc biệt giải trí bằng công nghệ đã không phải là việc gì hiếm lạ gì nữa Vì muốn tạo cho mình một
cơ sở để bắt đầu vào việc tạo ra nhiều game hay hơn, có thể tăng sự hứng thú của mọi người, giảm stress sau khi lao động vất vả hay có thể làm một game về trí tuệ
Chính vì thế em xin được bắt đầu với một demo game (dù chưa được hoàn chỉnh) có thể giúp mọi người có thể vui vẻ sau khi làm việc vất vả Trong quá trình thực hiện đề tài này, em đã
cố gắng thực hiện thật tốt, nhưng có lẽ, do vốn kiến thức còn hạn hẹp cũng như những yếu tố khách quan khác mà không tránh khỏi những sai sót Chúng em rất mong nhận được sự đóng góp ý kiến, phê bình và hướng dẫn thêm của thầy cô Cuối cùng thì em xin gửi lời cảm ơn đến PGS.TS Trần Thị Thanh Hải đã hướng dẫn tận tình, giảng giải những kiến thức giúp em hoàn thành bài tập lớn này
Chúng em xin chân thành cảm ơn!
P a g e | 1
Trang 4CHƯƠNG 1: GIỚI THIỆU CHUNG
1.1 Giới thiệu về chủ đề
Ngày nay công nghệ thông tin trở thành một lĩnh vực mũi nhọn trong công cuộc phát triển kinh tế xã hội Cùng với công nghệ sinh học và năng lượng mới, công nghê thông tin (CNTT) vừa là công cụ, vừa là động lực thúc đẩy quá trình công nghiệp hóa, hiện đại hóa đất nước
Có thể nói game đã và đang trở thành một nhu cầu giải trí thiết yếu trong cuộc sống của con người hiện nay Game bắn trứng khủng long hay là game bắn gà đã không còn xa lạ gì nữa Game đòi hỏi người chơi phải khéo léo cũng như khả năng quan sát để có thể được điểm cao, vượt qua vô số vật cản có mức độ từ dễ đến khó Một đặc điểm nổi bật của game này là cấu hình nhẹ, dễ sử dụng đối với người dùng Cũng từng là một người chơi game này đến mức nghiện thì em muốn có thể phát triển game này Nhưng hiện tại kiến thức còn chưa đủ nên em chỉ mới làm ra một phần demo đơn giản Tên gọi của nó là
“ShotPlane”
1.2 Khó khăn và thách thức
Trong quá trình thực hiện viết chương trình game, em cũng
đã gặp không ít khó khăn cũng như thách thức về nội dung, kỹ thuật
Ngay cả lúc add thư viện SDL em đã làm không chính xác dẫn đến nhiều kết quả sai lệch Và đây sẽ là bài học đáng nhớ cho em để có thể cẩn thận và tỉ mỉ nhiều hơn
Để tạo nên một chương trình hoàn thiện, chất lượng và có thể sử dụng trong thực tiễn thì đòi hỏi chúng ta phải có kiến thức nền tảng về ngôn ngữ lập trình C++ một cách chắc chắn, đầy đủ và chính xác, đặc biệt là lập trình hướng đối tượng (OOP) nhằm đảm bảo tính bảo mật cao, dễ dàng quản lý code khi có
sự thay đổi và góp phần tiết kiệm tài nguyên hiệu quả Thêm vào đó, chương trình game khi được thực hiện phải được chuẩn
bị kỹ, sẵn sàng thực hiện các thao tác hợp lý, chính xác, chương
P a g e | 2
Trang 5trình phải được tối ưu, cần phải tính toán và điều chỉnh phù hợp các giá trị thực tế như các hàm để tính trọng lực, khoảng cách… của các vật thể cũng như là nhân vật người chơi mà đây là một công việc đòi hỏi sự tỉ mỉ, độ nhanh nhạy, chuẩn xác cao Bên cạnh đó, việc tìm lỗi và sửa lỗi trong chương trình cũng gặp rất nhiều khó khăn không mong muốn của người lập trình,
sẽ khiến cho việc thực hiện chương trình bị ảnh hưởng, dẫn đến chương trình chạy không đúng ý người lập trình hoặc chạy sai chức năng
Ngoài ra, chương trình cũng phải đáp ứng các yêu cầu như
dễ dàng sử dụng, thuận tiện cho người dùng, phải nhẹ, phù hợp với mọi loại thiết bị và đảm bảo tính giải trí, đáp ứng nhu cầu của người dùng
1.3 Mục tiêu của đề tài
+ Chia sẻ một tựa game phù hợp cho mọi lứa tuổi giúp thư giãn vào lúc rảnh rỗi, giảm bớt các căng thẳng trong học tập cũng như là công việc,
+ Việc học ở cấp độ đại học có thể nói là rất căng thẳng nên
đề tài game này có thể một phần nào đó giúp các bạn sinh viên Bách Khoa nói riêng và các bạn học sinh sinh viên nói chung có thể giải trí, kích thích trí não, và luyện phản xạ mắt sau những giờ học ở trường
CHƯƠNG 2: PHÂN TÍCH BÀI TOÁN
2.1 Tổng quát
1 Thiết lập hình nền hay gọi là thế giới cho game
2 Thiết lập nhân vật chính (Player)
3 Thiết lập các mối đe dọa (Threats)
4 Thiết lập những hiệu ứng của nhân vật chính và mối đe dọa
- Di chuyển thông qua bàn phím (Left – Right – Top – Bottom)
P a g e | 3
Trang 6- Bắn đạn (Bullet) thông qua con chuột (Mouse)
5 Thiết lập những hiệu ứng khi va chạm
- Nhân vật chính trúng đạn hay đụng vô mối đe dọa sẽ tử vong và các mối đe dọa trúng đạn sẽ biến mất
6 Thiết lập âm thanh cho các vụ nổ (Explosion)
7 Thiết lập màn hình có thể di chuyển
- Tạo không gian và có nhiều điều thú vị trong thế giới của game
8 Thiết lập số mạng cho nhân vật chính
2.2 Sơ đồ hoạt động (Class Diagram)
Danh sách các Class:
1 Class Common_Function.h: chứa những dữ liệu cứng để có thể thay thế nhanh gọn khi cần thiết và chứa những hàm xử lí hình ảnh (input và output background, player và threats, vụ nổ)
2 Class BaseObject.h: Là class chứa các hàm xử lí tọa độ xuất hiện của nhân vật chính và các mối đe dọa và update liên tục màn hình
3 Class MainObject: Là class kế thừa của BaseObject chứa những hàm xử lí những vấn đề liên quan đến nhân vật chính: nhận sự kiện từ bàn phím tạo ra những di chuyển, nhận sự kiện
từ chuột để bắn đạn
4 Class ThreatsObject: Là class kế thừa của BaseObject chứa những hàm xử lí những vấn đề liên quan đến mối đe dọa: các mối đe dọa sẽ xuất hiện ngẫu nhiên và cũng liên tục bắn đạn và quỹ đạo di chuyển đều là đường thẳng
5 Class BulletObject: Là class kế thừa của BaseObject chứa những hàm xử lí vẫn đề liên quan đến đạn: đạn của nhân vật chính xuất hiện lúc nào và đi đến đâu sẽ biến mất
6 Class ExplosionObject: Là class xử lí vụ nổ, khi nhân vật chính bị đạn của mối đe dọa hay mối đe dọa đụng đến thì sẽ có một vụ nổ diễn ra
P a g e | 4
Trang 77 Class Playerpower: Là class xử lí về số mạng của nhân vật chính
Quá trình phần mềm chạy:
Đầu tiên khi phần mềm được khởi chạy, chưa được hoàn thiện nên chưa có giao diện của trò chơi, nên khi khởi chạy sẽ bắt đầu luôn vô game chính, sau đó sử dụng phím (Right – left – bottom – top) để di chuyển mỗi lần nhấn nút, màn hình sẽ được update liên tục và cũng sẽ giải phóng bộ nhớ liền Và khi nhân vật chính sử dụng hết số mạng sẽ gặp cửa sổ “Game Over” Và khi đó kết thúc
2.3 Mô tả chi tiết chức năng
2.3.1 Giao diện trong game
+ Nền của trò chơi (bao gồm hình ảnh bầu trời, con đường) + Hình ảnh người chơi: máy bay
+ Thanh công cụ tính điểm
+ Các loại vật cản được thiết kế là các máy bay tiến đến ở một tọa độ ngẫu nhiên
2.3.3 Lối chơi (Gameplay)
Trò chơi được thiết kế để người chơi thư giãn và luyện phản
xạ Mục tiêu của trò chơi được lấy cảm hứng từ game bắn gà, với lối chơi là né tránh các vật cản và sống sót càng lâu càng tốt
Cách chơi rất đơn giản, người chơi sử dụng các phím (Right – Left – Top – Bottom) để điều khiển nhân vật và sử dụng nhấn chuột trái (Laser) và phải (đạn cầu) để tiêu diệt mối đe dọa Các vật cản sẽ ngẫu nhiên xuất hiện và di chuyển nhanh về phía người chơi dựa trên độ khó hiện tại của game Trò chơi diễn
ra càng lâu, độ khó sẽ ngày càng tăng Từ đó, điểm số người chơi nhận được sẽ tỉ lệ thuận với độ khó
2.3.4 Màn hình kết thúc (Gameover)
Khi người chơi va chạm với vật cản, người chơi sẽ bị nổ và mất một mạng, và đến khi nhân vật chính sử dụng hết số mạng
P a g e | 5
Trang 8mình có (hiện tại em để là 3 mạng), màn hình kết thúc sẽ xuất hiện “GameOver”
2.4 Đánh giá
Để tạo nên trò chơi này, chúng em đã sử dụng những kiến thức học được ở trên lớp và sự hỗ trợ của SDL cùng với những thư viện khác <vector> hay <string> để tạo ra những Class khác nhau đảm nhận từng chức năng cụ thể trong trò chơi Tuy nhiên, vì hạn chế về mặt kiến thức và chưa đủ nghiên cứu nên trò chơi vẫn chưa được hoàn thiện và còn rất nhiều điều có thể phải hoàn thiện nữa
CHƯƠNG 3: PHƯƠNG PHÁP THỰC HIỆN 3.1 Phương pháp đề xuất
+ Nhằm tạo ra một tựa game để mọi người giải trí miễn phí,
em đưa ra phương pháp để giải quyết mục tiêu là: tạo ra một game với Gameplay đơn giản, mối đe dọa đơn giản và tên cho
nó là “ShotPlane”
+ Sử dụng các thuật toán dùng ngôn ngữ lập trình C/C++ để thực hiện viết chương trình và tạo nên ứng dụng (Môi trường – Visual Studio 2022)
+ Sử dụng môi trường lập trình thông minh, thuận tiện để phát triển nhanh các chương trình một cách dễ dàng và tạo được các chương trình một cách nhanh chóng dựa trên ngôn ngữ lập trình C/C++
+ Dựa vào những kiến thức về lập trình C/C++ đã được học trên lớp, sự hỗ trợ của giảng viên bộ môn và cùng tham khảo tài liệu trên mạng internet, từ đó viết được chương trình theo mục tiêu: Sử dụng thư viện SDL, một số hàm đơn giản sẵn có để phát triển lối chơi và tạo hình ảnh trong game
+ Sau khi tạo lập ứng dụng thì dùng thử và sửa lỗi (nếu có) + Viết bài cáo về game từ các bước thực hiện, phương pháp, mục tiêu, kết quả
P a g e | 6
Trang 9Sơ lược lý thuyết của phương pháp:
+ Từ các chức năng có sẵn trong môi trường lập trình như mẫu (Templates lớp (Class) kết hợp với ngôn ngữ C++ (con trỏ, chuỗi, mảng )
+ Sử dụng các lý thuyết cơ bản về lập trình hướng đối tượng
để tạo ra cấu trúc hợp lý cho phần mềm
+ Tạo ra giao diện trò chơi và hệ thống vẽ trò chơi với sự trợ giúp của thư viện SDL
+ Cuối cùng là thử nghiệm ứng dụng và khắc phục các lỗi (nếu có)
3.2 Cài đặt thử nghiệm
3.2.1 Môi trường cài đặt
+ Bản đầy đủ của game có thể được cài đặt trên nền tảng Windows
+ Mã nguồn của game có thể được sử dụng để build game có thể chạy được trên Windows sau khi cài đặt một số thư viện và phần mềm
3.2.2 Triển khai cài đặt
Hiện tại em chưa đưa game này lên được Vì thế nếu có thể trong thời gian tới em sẽ cố gắng hoàn thiện và phát triển hơn rồi đưa lên ạ
3.3 Thực nghiệm
Không có
CHƯƠNG 4: KẾT LUẬN 4.1 Kết luận
Sau khi kết thúc quá trình làm kết quả đạt được:
- Xây dựng được gameplay đơn giản, giúp người chơi dễ tiếp cận
- Thiết kế giao diện gần gũi, hài hước
P a g e | 7
Trang 10- Hoàn thiện trò chơi với hầu hết các chức năng cơ bản của một tựa game 2D
- Phần mềm được xây dựng với cấu trúc cực kì khoa học, giúp cho việc phát triển và sửa lỗi được dễ dàng hơn Chúng em đạt được việc này với sự trợ giúp của những lý thuyết cơ bản về lập trình hướng đối tượng
4.2 Thiếu sót và điều sẽ bổ sung trong tương lai
Menu game và có boss cuối của game nếu chiến thắng sẽ qua cửa
Sẽ thêm về vấn đề thời gian
Sẽ thêm về vấn đề level cấp của game
4.3 Kiến nghị, đề xuất
4.3.1 Đối với bài tập lớn
Chúng em hy vọng, cô có thể giới thiệu thêm nhiều chủ đề bài tập lớn hơn trong quá trình giảng dạy
4.3.2 Đối với môn học
Chúng em xin gửi lời cảm ơn đến PGS.TS Trần Thị Thanh Hải
đã hướng dẫn tận tình, giảng giải những kiến thức, giúp chúng
em hiểu rõ hơn những kiến thức về lập trình C/C++ qua những bài giảng lí thú, hấp dẫn đối với sinh viên chúng em
P a g e | 8
Trang 11TÀI LIỆU THAM KHẢO
[1] Giáo trình C++ và lập trình hướng đối tượng (2018) – Nhà
xuất bản Bách Khoa Hà Nội – Phạm Văn Ất
[2] Phát Triển Phần Mềm 123AZ - Sức Mạnh Của Đam Mê (phattrienphanmem123az.com) trang web làm game
[3] Thư viện SDL : Thư viện SDL_Input - Tải xuống (onworks.net)
P a g e | 9