Vì vậy, việc lựa chọn C# để phát triển game “UEH SURVIVAL” khôngnhững tạo ra một tựa game giải trí mới mà còn giúp nhóm dự án có thể phát triển kỹ nănghọc tập, nghiên cứu và áp dụng được
Trang 1ĐẠI HỌC UEH TRƯỜNG CÔNG NGHỆ VÀ THIẾT KẾ KHOA CÔNG NGHỆ THÔNG TIN KINH DOANH
BÁO CÁO ĐỒ ÁN CUỐI KỲ
BỘ MÔN CƠ SỞ LẬP TRÌNH
NHÓM 8
ĐỀ TÀI: UEH SURVIVAL
Thành viên: Nguyễn Hoàng Nhật - 31231026537
Nguyễn Hoài Thu - 31231026200
Trang 23 Đối tượng nghiên cứu
4 Phương pháp nghiên cứu
II MÔ TẢ CHƯƠNG TRÌNH
1 Mô tả các chức năng của hệ thống/ chương trình
2 Source code của nhóm dự án
III PHÁT TRIỂN CHƯƠNG TRÌNH
1 Lập trình giao diện
2 Màn hình khởi chạy
b) Nút CANCEL
c) Nút INTRODUCTION
d) Nút INSTRUCTION
3 Thông tin người chơi
4 Xử lý điều khiển từ người chơi
5 Lập trình chuyển động cho các vật thể
6 Thêm thử thách và xử lý va chạm
7 Thiết lập Game over
8 Thiết lập lưu điểm bằng tệp văn bản bên ngoài
9 Thiết lập xử lý ngoại lệ
IV KẾT LUẬN
1 Đánh giá
2 Những kết quả đã thực hiện
3 Những hạn chế
4 Ý tưởng phát triển
V PHỤ LỤC
1 Danh mục hình ảnh
2 Tài liệu tham khảo
Trang 3BẢNG PHÂN CÔNG CÔNG VIỆC
HOÀNTHÀNHNguyễn Hoài
Thu 31231026200 - Soạn nội dung thuyết trình và làmslide
- Viết báo cáo phần: Phát triểnchương trình
- Viết code phần:
+ Tạo các form, design nhân vật
+ Xử lý action form, chuyển đổi giữacác form
+ Lưu highScore, play music
+ Xử lý sự kiện trong lúc chơi
Trang 4đã có được một lượng lớn người chơi cũng như biết đến Game là một lựa chọn thú vị đểgiải tỏa áp lực học tập, giúp học sinh, sinh viên thư giãn và giảm stress Zombie Shooter
là một nền tảng vững chắc để nhóm dự án có thể đào sâu và triển khai thêm nhiều khíacạnh mới từ tựa game này Chính vì thế, nhóm dự án đã quyết định kết hợp giữa các yếu
tố học tập (môi trường tại UEH và các điểm số) vào các yếu tố sinh tồn nhằm tạo ra mộtgóc nhìn và trải nghiệm mới lạ Từ đó mang đến một tựa game tương tự nhưng đậm néthọc đường mang tên “UEH SURVIVAL”
Ngôn ngữ lập trình C# được sử dụng phổ biến để xây dựng ứng dụng và game Bêncạnh đó, ngôn ngữ C# cũng đang được học tập và áp dụng trong môn chuyên ngành củanhóm dự án Vì vậy, việc lựa chọn C# để phát triển game “UEH SURVIVAL” khôngnhững tạo ra một tựa game giải trí mới mà còn giúp nhóm dự án có thể phát triển kỹ nănghọc tập, nghiên cứu và áp dụng được ngôn ngữ này
2 Mục tiêu nghiên cứu
Nhóm dự án hướng đến nghiên cứu 2 mục tiêu chính:
● Nghiên cứu và vận dụng ngôn ngữ lập trình C#, winform vào lập trình mộtgameplay dựa trên tựa game đã có Điều này không chỉ giúp các ý tưởng đượcchuyển thành sản phẩm hoàn chỉnh mà còn giúp nhóm nâng cao, tổng hợp đượccác kiến thức về lập trình
● Dự án phát triển game "UEH SURVIVAL" hướng tới mục tiêu tạo ra một trò chơibắn súng hấp dẫn và độc đáo Bên cạnh việc xây dựng một gameplay cuốn hút vớicác tính năng như di chuyển, bắn súng và các mô hình đa dạng, dự án còn tậptrung vào việc nghiên cứu và tối ưu hóa các cơ chế cốt lõi để đảm bảo trải nghiệmchơi game mượt mà cho người dùng, tạo nên sự khác biệt so với các trò chơi cùngthể loại
Trang 5● Lấy cảm hứng từ không gian và hoạt động của môi trường đại học UEH để tạo rabối cảnh cho game.
4 Phương pháp nghiên cứu
● Tìm hiểu yêu cầu của đồ án, từ đó nghiên cứu, tham khảo, góp ý để quyết định vàtriển khai game
● Xác định những thành phần sẽ có trong game như: nhân vật người chơi, các conđiểm, vũ khí, đạn, điểm số…
● Tìm kiếm và tham khảo các source code đã có sẵn từ các tựa game tương tự
● Chỉnh sửa và mở rộng game từ các source code ban đầu
● Thiết kế giao diện thân thiện và trực quan, sử dụng hình ảnh và âm thanh thêmsinh động
● Thực hiện kiểm tra thử để phát hiện và sửa lỗi, đồng thời điều chỉnh game đểngười dùng có được trải nghiệm tốt nhất
1 Mô tả các chức năng của hệ thống/ chương trình
Game UEH SURVIVAL được thiết kế với hệ thống chức năng được mở rộng, kếthợp yếu tố học đường, sinh tồn và chiến thuật Trong trò chơi này, người chơi sẽ hóa thânvào nhân vật một cậu sinh viên, bằng kĩ năng và chiến thuật thông minh, người chơi phảiđiều khiển nhân vật tiêu diệt nhiều điểm F nhất có thể và không được bỏ lỡ điểm A nào Dưới đây là mô tả các chức năng chính của hệ thống, giúp người chơi hiểu rõ cáchchơi, mục tiêu và những yếu tố quan trọng trong trải nghiệm chơi game
Chức năng điều khiển nhân vật:
Trang 6năng lượng, cứ mỗi lần chạm vào điểm F, máu sẽ giảm đi 1 Không những thế,thời gian chạm vào điểm F càng lâu thì máu của người chơi sẽ tụt đi nhanh chóng.Khi máu của người chơi còn lại 0 thì trò chơi sẽ kết thúc.
● Hệ thống điểm số: Nhiệm vụ của người chơi chính là sống sót và đạt được mứcđiểm cao nhất có thể Bạn cần phải tiêu diệt tất cả điểm F trong màn chơi và đạtđược nhiều điểm A để có nhiều đạn nhằm bảo vệ bản thân càng lâu càng tốt Hệthống điểm sẽ dựa trên số lượng điểm F mà bạn đã tiêu diệt Sau mỗi màn chơi,điểm số của người chơi sẽ được lưu trữ và ghi nhớ từ đó đề ra được mức điểm caonhất trong tất cả các vòng chơi của bạn
2 Source code của nhóm dự án
Để dự án có thể hoàn thành trong thời gian cho phép và đảm bảo chất lượng, nhóm
dự án đã quyết định lựa chọn phương án sử dụng những đoạn mã nguồn có sẵn làm nềntảng Trên cơ sở đó, nhóm đã mở rộng và phát triển thêm các tính năng mới dựa vàonhững kiến thức đã học, từ đó có thể phát triển một tựa game tương tự nhưng cũng khôngkém phần mới lạ và thú vị Cách tiếp cận này không chỉ giúp nhóm hoàn thành dự án màcòn học hỏi và phát triển thêm nhiều kỹ năng lập trình
● Link source code đã tham khảo
Trang 7Hình 1
Hình 2
Hình 3
Trang 8Hình 6
Hình 7
Trang 9Hình 9
Hình 10
Trang 10Hình 13
Hình 14
Trang 11Hình 16
Hình 17
Trang 12Hình 20
Hình 21
Trang 13Hình 23
Hình 24
Hình 25
Trang 14Hình 28
Hình 29
Trang 16III PHÁT TRIỂN CHƯƠNG TRÌNH
1 Lập trình giao diện
Phần lập trình giao diện được thực hiện thông qua việc chèn hình ảnh vào form củaứng dụng Việc này không chỉ giúp làm phong phú thêm trải nghiệm người chơi mà còncung cấp một cái nhìn trực quan rõ ràng về các yếu tố trong game Tất cả hình ảnh đượcsắp xếp hợp lý và có thể tương tác, tạo điều kiện cho người chơi tham gia vào cuộc phiêulưu trong trò chơi một cách hiệu quả
2 Màn hình khởi chạy
Main menu là giao diện đầu tiên xuất hiện khi khởi động game Giao diện bao gồmcác nút chính: Play Cancel Instruction, , và Introduction Tùy vào lựa chọn của ngườichơi, mỗi nút sẽ dẫn đến một màn hình khác nhau, giúp cung cấp hướng dẫn, giới thiệu,
Trang 18Khi nhấn vào nút Instruction, hàm button1_Click tạo một thể hiện Intro, hiển thị mànhình giới thiệu và ẩn giao diện chính Kế tiếp người chơi có thể nhấn nút Back để quaylại màn hình main menu.
Hình 34: Giao diện giới thiệu
Trang 19Khi người chơi nhấn nút Back trên màn hình Introduction, hàm btnBackIntro_Clickđược gọi Hàm này ẩn màn hình Introduction và tham chiếu lại màn hình giao diện mainmenu trước đó, giúp tối ưu tài nguyên và giữ trạng thái của màn hình main menu.
Trang 20Chương trình game sử dụng một số thông tin cơ bản để theo dõi tiến trình của ngườichơi, bao gồm số lần tiêu diệt điểm F, số đạn còn lại, thanh máu và điểm số cao nhất.
Những thông tin này giúp đánh giá thành tích và tiến độ của người chơi trong suốt quátrình trải nghiệm game, từ đó giúp người chơi theo dõi mục tiêu của mình một cách rõràng
Trang 21máu nhỏ hơn hoặc bằng 1, trạng thái gameOver sẽ được kích hoạt, hình ảnh nhânvật đổi sang trạng thái "chết", dừng bộ đếm thời gian
● Số lượng đạn: txtAmmo.Text hiển thị số đạn hiện tại (ammo), cho phép người
chơi kiểm soát đạn
● Điểm số (score) và điểm cao nhất (highScore): txtScore1.Text cập nhật số điểm
F đã tiêu diệt Chương trình dùng hàm If để kiểm tra nếu điểm số hiện tại (score)lớn hơn điểm cao nhất, highScore được cập nhật và lưu lại, sau đó hiển thị giá trịmới trên txtHighScore.Text
4 Xử lý điều khiển từ người chơi
Phương thức KeyIsDown được dùng để xử lý khi người dùng nhấn phím Tùy thuộc
vào phím được nhấn, biến trạng thái chuyển động (goLeft, goRight, goUp, goDown) sẽkiểm tra và nếu đúng thì cập nhật thành true và hướng của người chơi (facing) được thayđổi theo hướng mặt tương ứng
Trang 225 Lập trình chuyển động cho các vật thể
a) Điểm F
Phương thức MoveZombie xử lý chuyển động của các vật thể điểm F theo hướng
của người chơi (player) Nó so sánh tọa độ Left và Top của điểm F và người chơi, rồithay đổi tọa độ của điểm F để tiến dần đến vị trí của người chơi
Trang 23Phương thức MakeZombies tạo các điểm F mới với vị trí ngẫu nhiên Hàm này
cũng áp dụng các thuộc tính để hiển thị điểm F với hình ảnh và kích thước phù hợp:
b) Điểm A
Phương thức DropAmmo sinh ra các vật thể điểm A (đạn dược) tại vị trí ngẫu nhiên
Trang 24thử thách cho người chơi khi tiến độ game cao hơn.
Trang 25b) Xử lý va chạm
Tương tự vòng lặp foreach cũng được sử dụng để phát hiện các va chạm Khi nhânvật người chơi tiếp xúc với đối tượng có tag là ammo (điểm A), số lượng đạn sẽ đượctăng thêm Ngược lại, khi va chạm với đối tượng zombie (điểm F) thì thanh máu sẽ bịgiảm xuống Ngoài ra, hàm này còn gọi MoveZombies để điều khiển chuyển động củacác con điểm F
Trang 27Kế tiếp, nếu người chơi lựa chọn Restart thì chương trình sẽ khởi tạo lại hoặc Exit đểthoát.
8. Thiết lập lưu điểm bằng tệp văn bản bên ngoài
● File.Exists( ) dùng để kiểm tra xem tệp lưu điểm cao có tồn tại hay không
● File.Create( ) dùng để tạo tệp mới tại đường dẫn chỉ định nếu tệp chưa tồn tại
● StreamWriter dùng để ghi điểm cao vào tệp lưu trữ
● StreamReader dùng để đọc điểm cao từ tệp lưu trữ
● int.TryParse( ) dùng để chuyển đổi nội dung từ tệp thành số nguyên, lưu vào biếnđiểm cao (highScore)
Trang 28● Console.WriteLine( ) ghi thông báo lỗi ra console, bao gồm chi tiết lỗi
Trang 30học tập và giải trí thông qua trò chơi bắn zombie, mang lại một trải nghiệm mới lạ, sáng
Trang 312 Những kết quả đã thực hiện
Nhóm đã thành công phát triển một hệ thống gameplay mượt mà, tích hợp các tínhnăng như di chuyển linh hoạt, bắn đạn, và tiêu diệt zombie Người chơi có thể sử dụngcác thao tác cơ bản để đạt được điểm số cao và duy trì sự sống sót Giao diện được thiết
kế trực quan, phong cách vui nhộn, gợi cảm giác thân thiện và gần gũi Các nút chứcnăng như Play, Introduction và Instruction đều rõ ràng, giúp người chơi dễ dàng thao tác
mà không cần nhiều thời gian làm quen.Bên cạnh đó dự án đã tích hợp thành công hệthống điểm số, cho phép người chơi lưu lại điểm cao nhất và so sánh với những lần chơitrước đó
3 Những hạn chế
Do hạn chế về kỹ năng và kinh nghiệm lập trình, các chuyển động phức tạp củazombie còn nhiều hạn chế, chưa thể mang đến sự đa dạng và thử thách cao cho ngườichơi Dự án chỉ hoàn thành các tính năng cơ bản trong thời gian hạn hẹp Một số ý tưởngnâng cao như tăng cường hiệu ứng đồ họa hay thêm vào các cấp độ thử thách phức tạphơn chưa được thực hiện Việc thiết kế các màn chơi với cốt truyện hay nhiệm vụ đadạng còn chưa đầy đủ dẫn đến trải nghiệm còn đơn giản, dễ gây nhàm chán nếu ngườichơi tham gia nhiều lần
4 Ý tưởng phát triển
Trong tương lai, nhóm có thể phát triển thêm các màn chơi phong phú hơn với nhiềubối cảnh và giao diện đa dạng như thư viện, phòng học, hoặc khu thể thao của trường đạihọc, Mỗi bối cảnh sẽ có các yếu tố thử thách và vật phẩm riêng, giúp tăng trải nghiệmngười chơi Bên cạnh đó, đầu tư thêm vào hình ảnh và hiệu ứng âm thanh sống độngđồng thời nâng cấp hệ thống đồ họa để các yếu tố như zombie, nhân vật người chơi, vàcác màn chơi đều trở nên sinh động và chân thực hơn và có thể thêm chế độ chơi như
"Team Play" - chế độ đồng đội, giúp trò chơi phù hợp với nhiều người chơi và tăng tínhtương tác
Trang 32Tạo ứng dụng Windows Forms trong Visual Studio bằng C#:
https://learn.microsoft.com/en-us/visualstudio/ide/create-csharp-winform-visual-studio?view=vs-2022
https://www.youtube.com/watch?v=5Dm8kXii7zU