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

báo cáo đồ án cuối kì cơ sở lập trình xây dựng và lập trình trò chơi

19 1 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 đề Xây dựng và lập trình trò chơi
Tác giả Nguyễn Thảo Trân, Phạm Duy Hoàng, Võ Nguyên Bảo, Đặng Lê Khánh Ly, Biện Bùi Duy Quang, Trần Thành Đạt
Người hướng dẫn Lê Hữu Thanh Tùng
Trường học Đại học Kinh tế Thành phố Hồ Chí Minh
Chuyên ngành Cơ sở lập trình
Thể loại Báo cáo đồ án cuối kì
Năm xuất bản 2023
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 19
Dung lượng 4,51 MB

Nội dung

Cụ thể hơn, trong dự án này,việc tạo ra một trò chơi thì cần phải phân tích thành nhiều phần nhỏ để có thể đưamột trò chơi tối ưu nhất cho người dùng, một bài lập trình ngắn gọn, dễ nhìn

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO

ĐẠI HỌC KINH TẾ THÀNH PHỐ HỒ CHÍ MINH KHOA CÔNG NGHỆ THÔNG TIN KINH DOANH

-BÁO CÁO ĐỒ ÁN CUỐI KÌ MÔN: CƠ SỞ LẬP TRÌNH

Giảng viên hướng dẫn: Lê Hữu Thanh Tùng

Sinh viên thực hiện: Nguyễn Thảo Trân 31231026116

Phạm Duy Hoàng 31231026117

Võ Nguyên Bảo 31231021638 Đặng Lê Khánh Ly 31231022099 Biện Bùi Duy Quang 31231025156 Trần Thành Đạt 31231021353

Lớp học phần: 23C1lNF50900509

Ngành: Khoa học máy tính

Khóa /Hệ: K49, Đại học chính quy

Thành phố Hồ Chí Minh, tháng 12 năm 2023

1

Trang 2

BẢNG PHÂN CÔNG CÔNG VIỆC

1 Nguyễn Thảo Trân 31231026116 Lên ý tưởng trò chơi, nối code, tìm lỗi của

chương trình, chỉnh sửa và định dạng output

2 Phạm Duy Hoàng 31231026117 Nhập dữ liệu ban đầu: mô tả trò chơi, lên ý

tưởng bộ skills cho trò chơi

3 Biện Bùi Duy Quang 31231025156

4 Đặng Lê Khánh Ly 31231022099

Viết chương trình, chỉnh sửa và thêm hiệu ứng skills, sửa lỗi logic

5 Võ Nguyên Bảo 31231021638

6 Trần Thành Đạt 31231021353

Trang 3

Mục Lục

I ĐẶT VẤN ĐỀ: 3

1 Giới thiệu 3

2 Mục tiêu 3

3 Cơ sở lý thuyết 4

3.1 Phần mềm hỗ trợ VISUAL STUDIO 4

3.2 Tổng quan về ngôn ngữ lập trình C# 4

II PHÂN TÍCH VÀ THIẾT KẾ 4

1 Phân tích 4

1.1 Khái niệm và lợi ích: 4

1.2 Mục tiêu đồ án: 5

1.3 Các phần phân tích: 5

2 Thiết kế 5

2.1 Khai báo thư viện: 5

2.2 Mô tả trò chơi: 5

2.3 Nhập dữ liệu ban đầu: 6

2.4 Vòng lặp và lượt đi: 7

2.5 Kết thúc trò chơi: 14

2.6 Tùy chỉnh thêm cho trò chơi: 16

III KẾT QUẢ ĐẠT ĐƯỢC 16

1 Tính ứng dụng và tương tác người chơi 16

2 Học hỏi và đánh giá 18

3 Tương lai và tiềm năng phát triển 18

IV KẾT LUẬN 18

2

Trang 4

I ĐẶT VẤN ĐỀ:

1 Giới thiệu

Nói đến Công Nghệ Thông Tin, chúng ta không thể không nghĩ đến một môi trường phát triển năng động bậc nhất trên toàn thế giới hiện nay Nó được ứng dụng vào mọi mặt của đời sống của con người, từ công việc cho tới giải trí Đi cùng với các xu hướng công nghệ hiện đại hiện nay là các lập trình viên Lập trình viên là những người tạo ra các sản phẩm tiện ích giúp con người làm việc hiệu quả hơn khi thao tác với thiết bị công nghệ Để tạo ra một sản phẩm công nghệ thì bạn cần phải biết những ngôn ngữ lập trình kết nối giữa người dùng và máy tính Cùng với sự phát triển vượt bậc của Công Nghệ Thông Tin, con người đã xây dựng, phát triển và bảo trì các trang thông tin được lưu trữ trên internet dưới nhiều hình thức Trước nhu cầu giải trí của con người sau những giờ làm việc căng thẳng thì các trò chơi được tạo ra để giải quyết vấn đề ấy Nhưng một vấn đề mới được sinh ra cho các lập trình viên là làm sao để đáp ứng nhu cầu của người chơi và cải thiện đời sống tinh thần của họ

Chính vì thế, nhóm em đã tạo ra một trò chơi để phục vụ cho nhu cầu giải trí của người dùng Thay vì bỏ nhiều thời gian hay tiền bạc để giải trí bản thân thì bây giờ, chúng ta có thể ngồi tại nhà để thưởng thức các trò chơi thú vị, không tốn quá nhiều chi phí, thao tác đơn giản và trên hết là đáp ứng đủ nhu cầu cơ bản Hơn thế nữa, không chỉ để giải trí mà người chơi còn có thể học thêm nhiều kỹ năng qua các trò chơi chuyên về giáo dục Đó cũng là lí do nhóm chúng em quyết định chọn

đề tài " xây dựng và lập trình trò chơi" cho đồ án nghiên cứu lần này

2 Mục tiêu

Trò chơi của chúng em được tạo ra với mục tiêu lớn nhất là phục vụ nhu cầu giải trí cơ bản của người dùng Ngoài ra, nhóm em còn đáp ứng được các mục tiêu như sau:

• Giải trí tại nhà, tiện lợi, an toàn

• Tiết kiệm tiền, không cần phải đến những khu vui chơi giải trí khác

• Thao tác đơn giản, dễ sử dụng

• Giao diện thân thiện với người dùng

Trang 5

3 Cơ sở lý thuyết

3 1 Phần mềm hỗ trợ VISUAL STUDIO

Visual studio là một phần mềm hỗ trợ đắc lực hỗ trợ công việc lập trình website Công cụ này được tạo ra vào năm 2003 và thuộc quyền sở hữu của ông lớn công nghệ Microsoft

Visual Studio là hệ thống tập hợp tất cả những gì liên quan tới phát triển ứng dụng, bao gồm trình chỉnh sửa mã, trình thiết kế, sửa lỗi Tức là, bạn có thể viết code, sửa lỗi, chỉnh sửa thiết kế ứng dụng dễ dàng chỉ với 1 phần mềm Visual Studio Không dừng lại ở đó, người dùng còn có thể thiết kế giao diện, trải nghiệm trong Visual Studio như khi phát triển ứng dụng Xamarin, UWP bằng XAML hay Blend vậy

3.

2 Tổng quan về ngôn ngữ lập trình C#

C# ( C Sharp, đọc là "xi-sáp") là một ngôn ngữ lập trình hướng đối tượng đa

năng, mạnh mẽ được phát triển bởi Microsoft, dựa trên C++ và Java và nó được miêu tả là ngôn ngữ có được sự cân bằng giữa C++, Visual Basic, Delphi và Java

II.PHÂN TÍCH VÀ THIẾT KẾ

1 Phân tích

1.1 Khái niệm và lợi ích:

Phân tích là một phương pháp nghiên cứu, chia nhỏ thành nhiều phần từ một vấn đề hoặc dự án lớn, và từ những thành phần nhỏ đó sẽ xử lý và đưa ra kết luận, rồi xâu chuỗi những kết luận từ phần nhỏ, từ đó ta có kết quả thu được Phương pháp này sẽ giúp chúng ta hiểu rõ được vấn đề, dự án hơn, hoặc có thể giúp chúng

ta đưa ra được những hướng đi mới, giải pháp mới, Cụ thể hơn, trong dự án này, việc tạo ra một trò chơi thì cần phải phân tích thành nhiều phần nhỏ để có thể đưa một trò chơi tối ưu nhất cho người dùng, một bài lập trình ngắn gọn, dễ nhìn nhất cho người lập trình

4

Trang 6

1.2 Mục tiêu đồ án:

Mục tiêu của đồ án này chủ yếu là để nâng cấp, cải thiện kỹ năng tư duy, lập trình, tính toán và tạo giải thuật, sử dụng kết hợp các hàm chức năng nối ghép với nhau, nối ghép những phần nhỏ để tạo thành phần hoàn chỉnh đó chính là chương trình trò chơi

1.3 Các phần phân tích:

Trong bài dự án lập trình trò chơi này sẽ được chia thành hai phần: nhập dữ liệu ban đầu và thuật toán

Nhập dữ liệu ban đầu: đối với người lập trình sẽ là phần đặt tên biến, kiểu dữ liệu biến hoặc những hàm chức năng nhỏ, ví dụ như: “int player1HP = 100;”,

“static void Trò chơi() ”, Còn đối với người chơi, người chơi chỉ cần nhập tên cho nhân vật và thực hiện theo lệnh đã được lập trình sẵn

Thuật toán là một quy trình hoặc phương pháp để giải quyết một vấn đề, nhiệm

vụ nào đó, cụ thể hơn trong dự án trò chơi này, thuật toán được người lập trình sử dụng trong việc thiết lập trò chơi để tính toán, xác định người chiến thắng

2 Thiết kế

Trò chơi trong dự án này sẽ được thiết kế bằng chương trình Visual Studio 2022

và bằng ngôn ngữ C# Dựa vào phần phân tích đã được đề cập ở trên, thiết kế của trò chơi cũng được chia làm nhiều mục nhỏ

2.1 Khai báo thư viện:

Để có thể lập trình ra trò chơi theo dự án, phần khai báo thư viện là không thể thiếu trong đoạn mã lập trình Các thư viện sẽ được sử dụng ở hình 1

Hình 1: Khai báo thư viện

Trang 7

2.2 Mô tả trò chơi:

Trò chơi trong dự án này được lấy ý tưởng từ các trò chơi đối kháng đời đầu, sẽ

có hai nhân vật trong trò chơi là người chơi và máy, hai nhân vật sẽ chiến đấu với nhau, mỗi bên sẽ có một bộ kĩ năng để đấu, nhưng người chơi sẽ chọn ngẫu nhiên một số từ một đến mười để tung kĩ năng nhưng không được biết trước kĩ năng đó

ra sao cả, và nhân vật máy cũng vậy, người lập trình trò chơi sẽ thiết lập máy chọn ngẫu nhiên một kĩ năng để đối đầu với người chơi trong mỗi lượt Nếu như bên nào có chỉ số máu bằng không trước thì sẽ thua cuộc và phần thắng cuộc sẽ dành cho bên còn lại (Xem cụ thể ở hình 2.)

Hình 2: Mô tả trò chơi

Ở dòng 19, “Console.OutputEncoding = Encoding.UTF8;” cho phép người lập trình có thể lập trình và xuất ra màn hình chữ Tiếng Việt có dấu

2.3 Nhập dữ liệu ban đầu:

Theo hình 3.1, trò chơi bắt đầu bằng việc nhập tên của người chơi (dòng 52,53)

và cho người chơi với máy một số chỉ số nhất định khi bắt đầu trò chơi (từ dòng

54 đến dòng 60) Dựa theo cơ chế may rủi của xúc xắc, cụ thể là tài/ xỉu để xác định lượt đi của người chơi đánh trước hay đánh sau ( từ dòng 63 đến dòng 75), ở đoạn này, người chơi sẽ nhập “tai” hoặc “xiu”, và máy chủ sẽ ngẫu nhiên tung một quả xúc xắc để đưa ra một số từ một đến sáu Ta có quy ước: “xỉu” tương ứng với con số “một”, “hai”, “ba” của quả xúc xắc, “tài” tương ứng với con số “bốn”,

“năm”, “sáu” Nếu như người chơi đoán trúng với khoảng số xúc xắc đổ ra thì người chơi sẽ được đi trước và ngược lại Ta có được kết quả như hình 3.2

6

Trang 8

Hình 3.1: Nhập dữ liệu và xác định lượt đi của trò chơi.

Dòng lệnh “Thread.Sleep(500);” ở trên hình 3.1 có tác dụng giãn thời gian xuất hiện của dòng lệnh giữa các lệnh, góp phần tăng tính chân thật và để cho người chơi dễ dàng bắt kịp được nhịp của trò chơi

Hình 3.2: Mô tả trò chơi, nhập dữ liệu và xác định lượt đi

2.4 Vòng lặp và lượt đi:

Theo hình 5, một vòng lặp được sử dụng để biểu diễn lượt đi của cả người chơi

và máy, sử dụng lệnh “if (nguoiDoan == ketQua)” dành cho lượt của người chơi đi trước (được hiển thị trong hình 4.1 và 4.2), nếu người chơi đi sau thì đoạn mã lệnh

sẽ chạy trong phần else (được hiển thị trong hình 4.3 và 4.4) Vì lượt người chơi đi trước hay lượt của người chơi đi sau đều được thiết lập chung một cấu trúc lượt đi nên trong mục này chỉ đề cập đại diện lượt đi của người chơi đi trước

Trang 9

Hình 4.1: Người chơi đoán trúng và lượt của người chơi

Hình 4.2: Người chơi đoán trúng và lượt của máy

Hình 4.3: Người chơi đoán trật và máy được đi trước

Hình 4.4: Người chơi đoán trật và lượt của người chơi

Lượt đi của người chơi.

Khi đến lượt, người chơi sẽ nhập vào một con số bất kì từ một đến mười để sử dụng kĩ năng, mỗi số tương ứng với một kĩ năng khác nhau Hàm Switch-case sẽ

là phương pháp tối ưu nhất cho trò chơi, mỗi một case sẽ đại diện cho một số mà người chơi nhập vào, để người lập trình có thể dễ quan sát và theo dõi lệnh, phần lượt đi của người chơi sẽ được đặt ở một nơi khác đó chính là “static void PlayerTurn(string player1Name, ref int targetHP, ref int targetDefend, ref int selfHP)”, các biến kiểu string và kiểu int được sử dụng để thi triển kĩ năng lên đối thủ Xem thêm chi tiết ở hình 4.5 và 4.6

8

Trang 10

Hình 4.5: Bộ kĩ năng của người chơi

Hình 4.6: Bộ kĩ năng của người chơi

Nếu người chơi cố tình nhập dữ liệu ngoài khoảng từ một đến mười thì lượt đi

đó không hợp lệ và sẽ bị coi là mất lượt ( dòng 339 đến dòng 341 hình 4.6)

Lượt đi của máy:

Đến lượt của máy, người lập trình sẽ dùng hàm “random” để ngẫu nhiên chọn

ra một số cho máy (int machineChoice = new Random().Next(1, 11); được thể hiện như hình 4.2 và 4.4), từ số ngẫu nhiên đó sẽ tương ứng với một kĩ năng trong hàm Switch-case tương tự như lượt đi của người chơi (hình 4.7, 4.8, 4.9)

Trang 11

Hình 4.7: Bộ kĩ năng của máy

Hình 4.8: Bộ kĩ năng của máy

Hình 4.9: Bộ kĩ năng của máy

Chi tiết các kĩ năng

Trừ máu theo phòng thủ

Ở các kĩ năng, lượng sát thương mà nhân vật có thể gây được cho đối thủ được tính bằng công thức (ví dụ: “(targetHP -= Math.Max(0, 40 – targetDefend)”), công thức trên sẽ lấy sát thương gốc trừ cho chỉ số phòng thủ có sẵn đối thủ sẽ cho được sát thương đầu ra Ví dụ như hình, máy có 100 máu, 10 phòng thủ và người chơi

10

Trang 12

sử dụng kĩ năng gây 40 sát thương cho máy, nhưng máy có 10 chỉ số phòng thủ nên máy lúc này chỉ nhận vào 30 sát thương

Hình 4.10: Ví dụ về lượt đánh

Trừ máu qua mỗi lượt

Ở kĩ năng một và kĩ năng sáu, có cơ chế đặc biệt đó chính là gây hiệu ứng xấu qua mỗi lượt Ta sẽ đặt biến “soLuotThieuDotPlayer1” và

“soLuotDinhDocPlayer1” cho người chơi, và sẽ là Player2 cho máy Ví dụ (hình 4.15), người chơi sử dụng kĩ năng 1 vào máy đang có 100 máu, 10 phòng thủ, dựa vào phần trừ máu theo phòng thủ ở trên, máy sẽ nhận vào 15 máu và đồng thời bị gán hiệu ứng xấu( soLuotThieuDotPlayer2 = 2;) trong hai lượt tiếp theo (hình 4.12)

Hình 4.11: Đặt biến cho hiệu ứng xấu

Hình 4.12: Chi tiết về kĩ năng

Trang 13

Hình 4.12: Hiệu ứng xấu được thực hiện

Khi bắt đầu của mỗi lượt mới, ta sẽ có các câu lệnh if ở đầu để hiệu ứng xấu diễn ra, nếu hiệu ứng xấu còn hiệu lực ( > 0) thì sẽ bị trừ máu theo phần hiệu ứng xấu được thực hiện (hình 4.12)

Hình 4.13: Ví dụ về hiệu ứng xấu

12

Trang 14

Giải hiệu ứng và hồi phục

Khi người chơi hoặc máy chọn vào kĩ năng thứ tám này, trong lượt hành động này người sử dụng kĩ năng sẽ không gây lên người đối thủ mà thay vào đó là gây lên nhân vật bản thân, ngay lập tức được hồi phục 25 máu và xóa mọi hiệu ứng xấu, “giaiThua =1;” được sử dụng để đặt “soLuotThieuDotPlayer = -1;” và

“soLuotDinhDocPlayer = -1;” đồng nghĩa với việc bản thân sẽ không bị hiệu ứng xấu trong những lượt tiếp theo

Hình 4.14: Giải hiệu ứng và hồi phục

Hình 4.15: giaiThuat

Hiệu ứng choáng và mất lượt

Đối với người chơi chọn kĩ năng thứ chín này, sẽ gây một lượng sát thương cho máy và hiêu ứng choáng, khi máy bị choáng đồng nghĩa với việc lượt đi của máy lúc này sẽ không được thực hiện, thay vào đó người chơi sẽ được thực hiện lượt đi tiếp theo (hình 4.16) Ví dụ cụ thể khi in ra màn hình ở hình 4.17

Hình 4.16: Hiệu ứng choáng của người chơi

Hình 4.17: Màn hình hiệu ứng choáng

Trang 15

Đối với lượt đi của máy nếu như chọn kĩ năng có hiệu ứng choáng này, máy sẽ

tự động chọn kĩ năng tiếp theo Như hình 4.18 và ví dụ cụ thể ở hình 4.19

Hình 4.18: Hiệu ứng choáng của máy

Hình 4.19: Màn hình hiệu ứng choáng của máy

2.5 Kết thúc trò chơi:

Người chơi chiến thắng:

Trải qua nhiều lượt đấu giữa người chơi và máy, bên nào có số máu bằng 0 trước thì sẽ là người thua cuộc, ngược lại người kia sẽ là người chiến thắng Như hình 5.1, dòng lệnh if sẽ đảm nhiệm vị trí này, nếu như “player2HP”( máu của nhân vật máy) về mức 0 thì máy sẽ được coi là thua cuộc, lúc này người chơi sẽ chiến thắng như hình 5.2

14

Trang 16

Hình 5.1: Người chơi chiến thắng

Hình 5.2: Màn hình người chơi chiến thắng

Người chơi thất bại

Nếu như “player1HP” (máu của người chơi) bằng 0 trước, thì lúc này người chơi sẽ nhận được thông báo thất bại Như hình 5.3 và cụ thể ở hình 5.4

Hình 5.3: Người chơi thất bại

Hình 5.4: Màn hình người chơi thất bại

“Bạn có muốn chơi lại không?”

Ở bước cuối cùng của trò chơi, thay vì người chơi muốn chơi lại phải thoát ra

và chạy đoạn mã trò chơi, người lập trình đã thiết lặp vòng lặp “do-while” để giúp người chơi có thể chơi lại trò chơi mà không cần phải chạy đoạn mã trò chơi

Trang 17

Hình 5.5: Chơi lại hoặc kết thúc trò chơi

Nếu như người chơi nhập “yes” thì trò chơi sẽ được thiết lập lại và bắt đầu một trò chơi mới, “no” thì trò chơi sẽ kết thúc

2.

6 Tùy chỉnh thêm cho trò chơi:

Ở đây (hình 6.1), người chơi có thể điều chỉnh được độ trễ của các dòng chữ thông qua lệnh “Thread.Sleep(30);” được đặt trong vòng lặp “foreach” Điều này

sẽ giúp cho các dòng chữ hiện ra trên màn hình không còn xuất hiện cùng một lúc nữa, mà thay vào đó là sẽ xuất hiện lần lượt từng chữ cái trông mượt mà và làm dễ chịu người chơi hơn Số được thiết lập trong lệnh “Thread.Sleep(30);” đó được tính theo đơn vị ms (millisecond), số càng nhỏ thì dòng chữ sẽ xuất hiện nhanh hơn và ngược lại

Hình 6.1: Tùy chỉnh thêm cho trò chơi

III KẾT QUẢ ĐẠT ĐƯỢC

1 Tính ứng dụng và tương tác người chơi

Hiểu rõ hơn về cách thức khai báo các thư viện, mô tả trò chơi cũng như nhập

dữ liệu ban đầu giúp người chơi cảm thấy thuận tiện và thích thú hơn.

16

Trang 18

Biết cách sử dụng các cấu trúc rẽ nhánh: if…else, switch…case, cấu trúc vòng lặp: do…while để tạo ra những bộ kĩ năng trong trò chơi, tạo ra các hiệu ứng chi tiết cho từng kỹ năng, giúp trò chơi trở nên đa dạng, thú vị, cuốn hút hơn

Hình ảnh trên minh họa cho việc sử dụng cấu trúc rẽ nhánh tạo bộ kĩ năng cho

người chơi

2 Học hỏi và đánh giá

Học hỏi thêm được cách hoàn thiện một bài lập trình, biết cách giải thuật toán sao cho thuận tiện nhất

Cải thiện kỹ năng tư duy, lập trình, tính toán và tạo giải thuật, sử dụng kết hợp các hàm chức năng nối ghép với nhau, nối ghép những phần nhỏ để tạo thành phần hoàn chỉnh đó chính là chương trình trò chơi

Biết vận dụng kiến thức đã học để sửa những lỗi sai trong bài lập trình

Hình ảnh mô tả cách biết áp dụng tư duy, kiến thức để làm ra một trò chơi hoàn chỉnh

Ngày đăng: 10/08/2024, 16:05

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w