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 0 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

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Í MINHKHOA CÔNG NGHỆ THÔNG TIN KINH DOANH

-BÁO CÁO ĐỒ ÁN CUỐI KÌMÔN: CƠ SỞ LẬP TRÌNHGiả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 31231026116Phạm Duy Hoàng 31231026117Võ Nguyên Bảo 31231021638Đặng Lê Khánh Ly 31231022099Biện Bùi Duy Quang 31231025156Trần Thành Đạt 31231021353

Lớp học phần: 23C1lNF50900509Ngà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 output2 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ơi3 Biện Bùi Duy Quang 31231025156

Trang 3

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ôitrường phát triển năng động bậc nhất trên toàn thế giới hiện nay Nó được ứngdụ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í Đicù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ìnhviê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ạncầ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ùngvớ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áttriể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 chocá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 đờisố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âygiờ, 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 quacá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ầugiả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êunhư 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ìnhwebsite Công cụ này được tạo ra vào năm 2003 và thuộc quyền sở hữu của ônglớ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 ứngdụ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ếtcode, 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 VisualStudio Không dừng lại ở đó, người dùng còn có thể thiết kế giao diện, trải nghiệmtrong Visual Studio như khi phát triển ứng dụng Xamarin, UWP bằng XAML hayBlend vậy.

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ó đượcmiê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ộtvấ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ươngphá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úngta đư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ể đư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 nhấtcho 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ậptrì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ớinhau, nối ghép những phần nhỏ để tạo thành phần hoàn chỉnh đó chính là chươngtrình trò chơi.

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ệmvụ 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 2022và 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ủatrò 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ớinhau, 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ênmộ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ọnngẫ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ênnà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ànhcho 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ậptrì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òng54 đế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ộtquả 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ớicon 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ấthiệ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ườichơ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ơivà máy, sử dụng lệnh “if (nguoiDoan == ketQua)” dành cho lượt của người chơi đitrướ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ệnhsẽ 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 đitrướ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 đinê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ầnlượt đi của người chơi sẽ được đặt ở một nơi khác đó chính là “static voidPlayerTurn(string player1Name, ref int targetHP, ref int targetDefend, ref intselfHP)”, các biến kiểu string và kiểu int được sử dụng để thi triển kĩ năng lên đốithủ 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ọnra 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 tronghà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ủ đượctính bằng công thức (ví dụ: “(targetHP -= Math.Max(0, 40 – targetDefend)”), côngthứ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 đượcsá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ấuqua 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ình4.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ựavà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ình4.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ấudiễ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 ứngxấ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 độngnà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âylê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 ứngxấ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 ứngxấ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 chomá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áylú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 đitiế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 0trướ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ủanhâ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ườichơ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 ravà 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úpngườ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ộttrò chơi mới, “no” thì trò chơi sẽ kết thúc.

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àysẽ 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úcnữ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);” đó đượctính theo đơn vị ms (millisecond), số càng nhỏ thì dòng chữ sẽ xuất hiện nhanhhơ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ậpdữ 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ònglặp: do…while để tạo ra những bộ kĩ năng trong trò chơi, tạo ra các hiệu ứng chitiế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 chongười 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ànchỉnh

Trang 19

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

Phát triển thêm tính năng để đưa vào trò chơi, giúp trò chơi hấp dẫn, lôi cuốnhơn.

Cải thiện trải nghiệm của người chơi.Thêm giao diện và đồ họa sinh động

Tối ưu và chỉnh sửa các lỗi sai không đáng có trong trò chơi.Thêm sự kiện và những hoạt động khác

Khảo sát cộng đồng người chơi để có thể hiểu được những mong muốn của họ,từ đó xây dựng trò chơi một cách hoàn thiện hơn

IV.KẾT LUẬN

Nhìn chung, trò chơi đối kháng giữa người và máy được lập trình bằngngôn ngữ C# của chúng em không chỉ mang lại trải nghiệm giải trí hấp dẫn mà cònlà 1 nền tảng cho sự tương tác và cạnh tranh của người chơi Sự đa dạng trong cáckĩ năng không chỉ tạo ra những trận đấu độc đáo mà còn mở ra những thách thứcmới, khuyến khích người chơi phải tìm hiểu và thích ứng nhanh chóng Ngoài raviệc làm game giúp chúng em cải thiện kĩ năng lập trình cùng với sự thông thạotrong sử dụng các hàm của ngôn ngữ để hoàn thành đồ án

18

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

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

TÀI LIỆU LIÊN QUAN

w