1. Trang chủ
  2. » Tất cả

Thiết kế game trên giao diện winform bằng ngôn ngữ c

13 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ế game trên giao diện Winform bằng ngôn ngữ C
Tác giả Nguyễn Phước Bảo Khoa, Trần Hoàng Trọng, Nguyễn Tiến Đạt, Vũ Minh Thịnh
Người hướng dẫn ThS. Phạm Thị Kim Ngoan
Trường học Trường đại học Nha Trang
Chuyên ngành Công nghệ Thông tin
Thể loại Bài tập nhóm
Năm xuất bản 2022
Thành phố Khánh Hòa
Định dạng
Số trang 13
Dung lượng 797,59 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Untitled Khánh Hoà Tháng 12/2022 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC NHA TRANG KHOA CÔNG NGHỆ THÔNG TIN  BÁO CÁO BÀI TẬP NHÓM Thiết kế game trên giao diện Winform bằng ngôn ngữ C# Giảng viên hướ[.]

Trang 1

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

TRƯỜNG ĐẠI HỌC NHA TRANG



Thi ết kế game trên giao diện Winform bằng ngôn ngữ C#

4 Vũ Minh Thịnh

Trang 2

M ỤC LỤC

I.Gi ới thiệu 2

II Nêu bài toán: 2

1.Gi ới thiệu về game thẻ bài: 2

2.Yêu c ầu thực hiện: 2

III Phân công công vi ệc: 2

IV.Mô t ả thiết kế game 3

1.Lu ật chơi: 3

2.Gi ới thiệu hình ảnh và các thao tác cơ bản trong game: 3

3.Hướng giải quyết 4

4.Quy trình thi ết kế ứng dụng 5

V Đánh giá các thành viên 11

Trang 3

B ÀI TẬP NHÓM

I.Giới thiệu

1 Tên đề tài: Lập trình game “RevelationCard” trên giao diện Windows Form bằng ngôn ngữ C#

2 Tên nhóm: Mùa đông không lạnh

3 Tên game: Thủ lĩnh thẻ bài ( dựa trên game BattleShip )

4 Lĩnh vực nghiên cứu: Ứng dụng Windows Form

5 Loại hình nghiên cứu: Game

6 Thời gian thực hiện: Tháng 12/2022

II Nêu bài toán:

1.Giới thiệu về game thẻ bài:

- Game thẻ bài là gì?

Ý tưởng: là trò chơi mô phỏng theo game Tàu chiến (BattleShip) – một tựa game đã là tuổi thơ của rất nhiều thế hệ Có 2 phe, mỗi phe sẽ chọn 3 thẻ bài bí mật để ẩn đi, và nhiệm vụ của đối phương là tìm ra 3 thẻ bài đó

2.Yêu cầu thực hiện:

- Tạo giao diện của game bao gồm: bản đồ của người chơi và địch, danh sách các tên thẻ bài của địch mà người chơi sẽ thăm dò, nút thăm dò

-Khi đã chọn đúng thẻ bài bí mật thì sẽ hiển thị hình đã chọn đúng và cộng điểm thêm

1, ngược lại hiển thị hình ảnh đã chọn sai

- Game kết thúc khi round = 0 hoặc điểm số = 3, phe nào có số điểm cao hơn sẽ chiến thắng

1.Lựa chọn và phân tích đề tài: Trần Hoàng Trọng

2.Ý tưởng và thiết kế giao diện, chức năng Cả nhóm

3.Giải quyết bài toán Cả nhóm

4.Tiến hành code mã nguồn Trần Hoàng Trọng

Nguyễn Tiến Đạt 5.Tiến hành kiểm thử Vũ Minh Thịnh

Nguyễn Phước Bảo Khoa Nguyễn Tiến Đạt

6.Viết báo cáo và tổng hợp Nguyễn Tiến Đạt

Nguyễn Phước Bảo Khoa 7.Trình bày sản phẩm Trần Hoàng Trọng

Vũ Minh Thịnh

Trang 4

IV.Mô tả thiết kế game

1 Luật chơi:

- Có 10 vòng chơi, tối đa 3 điểm, người nào đạt đủ 3 điểm trước hoặc điểm cao hơn đối phương sau 10 vòng chơi là người thắng cuộc

- Người chơi và địch(máy) sẽ được một bản đồ với kích thước là 4x4 ô

- Người chơi sẽ được chọn 3 vị trí bất kỳ để giấu thẻ bài của mình

- Sau khi chọn vị trí để đặt thẻ của bản thân thì có thể chọn một vị trí bất kỳ trong khu vực của địch để điều tra

- Nếu người chơi chọn và điều tra được thẻ của địch thì sẽ được cộng 1 điểm cho bản thân và tương tự như của địch

2.Giới thiệu hình ảnh và các thao tác cơ bản trong game:

-Một số hình về các nút lệnh trong game:

+Vùng bản đồ của người chơi: gồm 16 ô là các Button được đặt tên như hình:

+Vùng bản đồ của địch : cũng gồm 16 ô là các Button được đặt tên như hình:

Trang 5

+Vùng tấn công:

+Hình ảnh khi chọn đúng thẻ bài

+Hình ảnh khi chọn sai thẻ bài

3.Hướng giải quyết

- Lựa chọn lập trình trên Winform của C# (Visual Studio): đơn giản, dễ sử dụng

- Dựa vào yêu cầu thực hiện bài toán, ta xử lí như sau:

+ Tạo ra các 16 Buttons ở mỗi bên, người chơi phải chọn 3 vị trí trí bất kì để ẩn thẻ bài rồi mới có thể tiến hành bước thăm dò địch; địch (máy) sẽ chọn ngẫu nhiên 3 vị trí để ẩn thẻ bài ( sử dụng hàm Random để xử lý)

+ Tạo danh sách(List) để lưu trữ vị trí dò tìm:

Phe ta: tạo 1 List danh sách các vị trí thuộc bản đồ địch ( tạo 1 ComboBox lưu các phần tử trong List để người chơi có thể chọn vị trí), sau khi chọn xong mới có thể nhấn được nút “Probe”

Phe địch: tạo 1 List danh sách các vị trí thuộc bản đồ của người chơi, cho địch chọn

1 vị trí ngẫu nhiên ở bản đồ của người chơi dò tìm ( sử dụng hàm Random để làm việc này),vị trị được chọn sẽ hiện thị vào ô “Enemy’s investigation”

+ Tạo ô hiển thị điểm số (textbox) khi chọn đúng thì điểm tăng thêm 1

+Tạo ô hiển thị vòng chơi (textbox), mỗi bên có 10 lượt chọn, khi người chơi và địch

đã chọn 1 vị trí ở bản đồ của đối phương thì số vòng chơi giảm đi 1

V ị trí người chơi dò tìm thẻ

bài địch

V ị trí địch dò tìm thẻ bài người chơi

Nút điều tra

Trang 6

+Game kết thúc khi round = 0 hoặc điểm số tăng lên 3( sử dụng sự kiện của toolbox Timer )

4.Quy trình thiết kế ứng dụng

B1 Lập trình tính năng xử lý cơ bản

B2 Định hướng xây dựng tính năng bổ sung

B3 Hoàn tất giao diện:

*Hàm thi ết lập cho địch ẩn 3 thẻ bài

B1:Lập trình tính năng xử lý cơ bản:

-Vị trí địch lựa chọn: Đặt điều kiện để không bị chọn trùng ô

Biến index: Chọn 1 ô ngẫu nhiên trong vị trí của địch

+ Vị trí của địch sẽ được chọn ngẫu nhiên 3 ô từ w1 đến z4

+ Nếu vị trí ô đó chưa được chọn và chưa được gán nhãn thì ta sẽ gán nhãn là:

“enemyCard”

+ Nếu không thỏa điều kiện thì sẽ quay ngẫu nhiên vị trí tiếp theo

+ Debug: Hiển thị vị trí được máy random trong debug

*Hàm kh ởi động trò chơi:

+ Khởi tạo danh sách các nút cho vị trí người chơi từ w1 đến z4

+ Khởi tạo danh sách các nút cho vị trí của địch từ a1 đến d4

+ Khởi tạo ô chọn vị trí của địch bằng “null”

+ Thông báo cho người chơi biết phải chọn 3 ô khác nhau để bắt đầu trò chơi + Ở vòng for đầu tiên ta khởi tạo trạng thái ban đầu của vị trí của địch

+ Ở vòng for đầu tiên ta khởi tạo trạng thái ban đầu của vị trí của người chơi + Gọi hàm thiết lập cho địch ẩn 3 thẻ bài (EnemyLocationPicker())

+ Khi Restart Game thì nút Probe sẽ không được phép nhấn

Trang 7

*Hàm ẩn thẻ bài của người chơi:

+ Nếu tổng số thẻ bài lớn hơn 0 thì:

Để 1 biến cục bộ “button” bằng tham số sender để chuyển “sender” thành kiểu dữ liệu Button(nút)

Nếu người chơi nhấn chọn nút thì chính nút đó sẽ bị vô hiệu hóa

Màu nền của nút đã được chọn sẽ chuyển thành xám để phân biệt rõ ràng giữa trạng thái của các nút

Sau đó những nút được chọn sẽ được gán nhãn thành “playerCard” để nhận biết thẻ đó

đã được sắp đặt

Sau mỗi lần chọn nút thì số lượng thẻ giảm đi 1

+ Nếu tổng số thẻ bằng 0 :

Cho btnProde.Enable = true (nút Probe trên giao diện) để có thể nhấn vào

Sau đó dòng chữ gợi ý sẽ được chuyển để cho người chơi biết được bước tiếp theo để làm gì

Trang 8

*Hàm thiết lập lượt chơi của địch:

1.Xử lí lượt chơi của địch

- Khi vòng chơi còn lớn 0

Máy sẽ chọn ngẫu nhiên 1 vị trí ở bản đồ của người chơi ( xử lý nhờ hàm Random)

Biến index là 1 biến để chọn ngẫu nhiên vị trí bên vị trí người chơi.

+ Nếu máy chọn đúng vị trí có thẻ bài đã ẩn của người chơi

(playerPositionButtons[index].Tag == “enemyCard”)

Hiển thị hình thẻ chọn đúng => ta xử lý chèn hình ảnh vào như sau:

playerPositionButtons[index].BackgroundImage = Properties.Resources.Card (Card là tên file ảnh )

Vị trí được máy chọn để tấn công sẽ hiện lên trên ô “enemyMove”.

Ô được chọn sẽ được vô hiệu hoá.

Sau đó ô đó sẽ được xóa thuộc tính đã chọn khỏi danh sách.

Cộng điểm của máy lên 1

Sau đó hàm dừng lại.

+ Ngược lại nếu máy chọn sai:

Hiển thị hình thẻ chọn sai => xử lý chèn hình ảnh tương tự như khi chọn đúng:

playerPositionButtons[index].BackgroundImage = Properties.Resources.x (x là tên file ảnh )

Vị trí được máy chọn để tấn công sẽ hiện lên trên ô “enemyMove”.

Ô được chọn sẽ được vô hiệu hoá.

Sau đó ô đó sẽ được xóa thuộc tính đã chọn khỏi danh sách.

Sau đó hàm dừng lại

2 Xử lý kết thúc game:

-Khi số vòng bé hơn 1 hoặc điểm của địch bằng 3 hoặc điểm của người chơi bằng 3 thì:

+ Nếu điểm người chơi lớn hơn điểm của máy thì:

Hiển thị ra thông báo người chơi đã thắng.

Khởi động lại game mới.

+ Nếu điểm máy lớn hơn điểm của người chơi thì:

Hiển thị ra thông báo máy đã thắng.

Khởi động lại game mới

Trang 9

+ Nếu điểm máy bằng điểm của người chơi thì:

H iển thị ra thông báo hòa.

Khởi động lại game mới

*Hàm thi ết lập người chơi dò tìm thẻ bài của địch:

+ Nếu danh sách chọn vị trí tấn công của địch đã có vị trí sẽ tấn công thì:

Biến provePosition lưu các giá trị sau khi chuyển đổi thành chữ thường ở EnemyLocationListbox (vd:W1->w1) => Mục đích là để so sánh với các “name” ở List enermyPositionButtons (danh sách các ô bên bản đồ của địch) có giống nhau không

Biến index lưu chỉ số những phần tử có “nam” giống nhau => sử dụng phương thức Findindex kết hợp với biểu thức lambda để thực thi.

+ Nếu ô vị trí của địch chưa được chọn và số vòng chơi lớn hơn 0 thì:

Số vòng chơi sẽ trừ đi 1

+ Nếu người chơi chọn đúng ô địch đã chọn thì:

Ô của địch bị chọn đúng sẽ bị vô hiệu hoá.

Hiển thị hình thẻ chọn đúng(tương tự như của địch).

Điểm người chơi sẽ tăng lên 1

Sau đó đến lượt chơi của địch

+ Nếu người chơi chọn sai thì:

Ô của địch bị chọn đúng sẽ bị vô hiệu hoá.

Hiển thị hình thẻ chọn sai(tương tự như của địch).

Sau đó đến lượt chơi của địch

+ Nếu người chơi chưa chọn ô để tấn công thì sẽ có một cảnh báo nhắc người chơi chọn ô

để tấn công.

Trang 10

9

Trang 11

10

B2 Định hướng xây dựng tính năng bổ sung

- Có thể định hướng bổ sung một số tính năng để game tối ưu hơn như sau:

+ Khi người chọn vị trị đặt thẻ bài, nếu chọn nhầm có thể chọn lại bằng cách click chuột thêm 1 lần nữa

+ Thêm hiệu ứng âm thanh vào game để người chơi cảm thấy thú vị hơn

B3 Hoàn tất giao diện:

-Giao diện game khi chưa bắt đầu:

- Game bắt đầu khi người chơi đã chọn xong 3 vị trí để ẩn thẻ bài và đã chọn vị trí người chơi muốn dò tìm

Trang 12

11

Nguyễn Tiến Đạt : A

Trần Hoàng Trọng : A

Vũ Minh Thịnh : B

Nguyễn Phước Bảo Khoa : A

Trang 13

12

*Tài li ệu tham khảo:

- Kiến thức lập trình Windows Form (học phần lập trình hướng đối tượng C#) đã học

- Phân tích và hướng dẫn làm game:

https://www.youtube.com/watch?v=ZMppynIIqKs&t=2775s

Ngày đăng: 01/02/2023, 16:25

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w