1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Xây dựng trò chơi rắn săn mồi đơn giản với đồ họa là màn hình console

34 40 0

Đ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 Trò Chơi Rắn Săn Mồi Đơn Giản Với Đồ Họa Là Màn Hình Console
Định dạng
Số trang 34
Dung lượng 249,05 KB

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

Nội dung

Trải qua quá trình tìm hiểu, học tập dưới sự hướng dẫn của giảng viên Trương Toàn Thịnh, nhóm 3- 21CTT4 đã xây dựng thành công một phiên bản của Hunting Snake Game có các chức năng chính

Trang 1

MỤC LỤC

I LỜI CẢM ƠN 3

II GIỚI THIỆU ĐỒ ÁN 3

A Xác định yêu cầu 3

B Yêu cầu chức năng 4

C Yêu cầu tin học 5

III MODULE SYSTEM: 5

A File System.h 5

B File System.cpp 6

1 Hàm FixConsoleWindow() 6

2 Hàm GotoXY() 7

3 Hàm ShowCur() 7

4 Hàm SetColor() 7

5 Hàm DisableSelection() 8

6 Hàm ShowScrollbar() 8

7 Hàm resizeConsole() 8

IV MODULE PREPARE 9

A File Prepare.h 9

B File Prepare.cpp 9

1 Hàm IsValidLevel1() 9

2 Hàm GenerateFood() 10

3 Hàm ResetDataLV1() 11

V MODULE PROCESSGAME 12

A File ProcessGame.h 12

B File ProcessGame.cpp 12

1 Hàm StartGame() 12

2 Hàm PauseGame(HANDLE t) 14

3 Hàm SaveGame() 14

4 Hàm LoadGame() 16

5 Hàm Eat() 18

6 Hàm ProcessDead() 20

7 Hàm MoveLeft(), MoveRight(), MoveUp(), MoveDown() 21

8 Hàm ThreadFunc() 22

9 Hàm Menu() 23

Trang 2

10 Hàm InGame(int oldgame=0) 23

11 Hàm GameOver() 23

12 Hàm QuitGame() 23

13 Hàm Information() 24

14 Hàm SetSnakeColor() 24

15 Hàm SetSpeed() 24

16 Hàm SetSound() 24

17 Hàm Setting() 24

VI MODULE DRAW 24

A File Draw.h 24

B File Draw.cpp 25

1 Hàm DrawBoard(int x, int y, int width, int height, int curPosX = 0, int curPosY = 0) 25

2 Hàm SmallBoard() 26

3 Hàm DrawSnakeAndFood(const char str, int start_char = 0) 26

4 Hàm DrawWallLevel2(), DrawWallLevel3(), DrawWallLevel(4) 26

5 Hàm DrawGateLevel1(), DrawGateLevel2(), DrawGateLevel3(), DrawGateLevel4() 27

6 Hàm DrawContinueGame() 27

VII MODULE DEAD 28

A File Dead.h 28

B File Dead.cpp 29

1 Các hàm ReachBodyLeft(), ReachBodyRight(), ReachBodyUp(), ReachBodyDown() 29

2 Các hàm LeftDeadLevel1(), RightDeadLevel1(), UpDeadLevel1(), DownDeadLevel1() 29

VIII TẬP TIN MAIN.CPP 30

Trang 3

I LỜI CẢM ƠN

Trong suốt quá trình tìm hiểu và hoàn thành đồ án, nhóm 3 đã nhận được sự

hỗ trợ từ nhiều phía, nhóm xin gửi lời cảm ơn chân thành đến:

- Sự giúp đỡ và hỗ trợ của các giảng viên phụ trách giảng dạy về kiến thứclập trình

- Những người bạn đã giúp nhóm có thêm nhiều ý tưởng mới trong quá trình thực hiện đồ án

- Những người đã ủng hộ và hộ trợ tinh thần cho nhóm trong quá trình thực hiện đồ án

Xin chân thành cảm ơn!

II GIỚI THIỆU ĐỒ ÁN

Hoạt động về Game đã xuất hiện từ lâu tại Việt Nam Game bắt nguồn từ điện thoại và dần dần xuất hiện cả trên máy tính Game ngày càng phát triển và trở thành một hình thức giải trí cũng như một nền tảng để người chơi kiếm thêmthu nhập Hunting Snake cũng không ngoại lệ khi phát triển thành công và nổi tiếng trên điện thoại lẫn máy tính với nhiều phiên bản khác nhau thu hút người chơi Trong môn học Ký thuật lập trình của lớp 21CTT4, do Giảng viên- Tiến

Sĩ Trương Toàn Thịnh hướng dẫn, trò chơi này là một đồ án thực hành cần thiếtnhằm thúc đẩy sự tìm tòi và tư duy về kỹ năng lập trình cho các sinh viên ngànhCông nghệ thông tin

Trải qua quá trình tìm hiểu, học tập dưới sự hướng dẫn của giảng viên

Trương Toàn Thịnh, nhóm 3- 21CTT4 đã xây dựng thành công một phiên bản của Hunting Snake Game có các chức năng chính: Di chuyển con rắn bằng các phím điều hướng W, A, S, D; tăng chiều dài khi ăn được vật phẩm (Mỗi đốt thân rắn là một chữ số trong mã số sinh viên của các thành viên), lưu và tải game khi đang chơi, âm thanh phù hợp với các thao tác

Trang 4

Sự hoạt động và chức năng của từng hàm sẽ được giải thích chi tiết trong bản báo cáo này Các thông tin trên sẽ được trình bày ở mục III sau.

Danh sách thành viên tham gia đồ án:

Xây dựng trò chơi Rắn săn mồi đơn giản với đồ họa là màn hình

Console

- Di chuyển con rắn: bằng các phím ‘A’, ‘W’, ‘S’, ‘D’ để ăn vật phẩm

- Xử lý trường hợp đầu rắn chạm vào thân của nó: kết thúc trò chơi khi

trường hợp này xảy ra

- Lưu/Tải (Save/ Load) trò chơi: Khi người chơi nhấn phím ‘T’, yêu cầu

người chơi cung cấp tên tệp để lưu Khi người chơi nhấn phím ‘L’, yêu cầu người chơi cung cấp tên tập để tải

- Giữ độ dài thân rắn không đổi: Khi di chuyển tới cấp tiếp theo, độ dài

thân rắn sẽ được cài đặt lại theo mặc định Cần tìm hiểu và xử lý sao cho

độ dài thân rắn không đổi khi tới cấp tiếp theo, độ dài chỉ được cài đặt trở lại theo mặc định khi người chơi vượt qua hết 4 cấp độ và quay trở lại cấp 1 với tốc độ di chuyển nhanh hơn

- Xử lý cổng: Khi con rắn ăn hết 8 vật phẩm, trên màn hình Console sẽ

hiện ra một cái cổng, con rắn sẽ di chuyển qua cổng này để đến cấp độ

Trang 5

tiếp theo Tuy nhiên, con rắn phải di chuyển qua cổng hoàn toàn thì màn hình Console mới chuyển sang màn hình của cấp tiếp theo.

- Cung cấp hiệu ứng: Khi con rắn chạm vào tường, thân của nó hoặc

cổng, lập trình viên tạo các hiệu ứng sống động cho các quá trình này

- Tạo menu: Để người chơi dễ dàng hơn trong việc chọn hoạt động tiếp

- Môi trường lập trình: Visual Studio

- Đối tượng lập trình: Màn hình Console

III MODULE SYSTEM:

Trang 7

3

- Khai báo các biến toàn cục và các hàm xử lý thao tác trên màn hình Console được sử dụng trong suốt Project

- Dòng 4 khai báo một chuỗi kí tự, đó là các chữ số trong mã số sinh viên của các thành viên trong nhóm

1 Hàm FixConsoleWindow()

Hàm này được dùng để cài đặt kích thước của màn hình Console, không cho phép người chơi thay đổi kích thước màn hình Console

3 HWND consoleWindow = GetConsoleWindow();

4 LONG style = GetWindowLong(consoleWindow, GWL_STYLE);

6 SetWindowLong(consoleWindow, GWL_STYLE, style);

2 Hàm GotoXY()

Hàm có đối số đầu vào là tọa độ một vị trí bất kỳ mà Lập trình viên muốn di chuyển đến đó và thực hiện các thao tác khác trên màn hình Console

3 COORD coord{ x y };

Trang 8

5 }

3 Hàm ShowCur()

Trong hàm ShowCur() có gọi hàm SetConsoleCursorInfo() với

chức năng cài đặt kích thước và khả năng hiển thị của con trỏ chuột (ẩn hay hiển thị) trên màn hình Console

3 HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);

4 CONSOLE_CURSOR_INFO cursor = { 1, CursorVisibility };

Trang 9

5 Hàm DisableSelection()

Hàm ngăn chặn việc người chơi thao tác chuột lên các phần tử đang hoạt động trên màn hình Console và hạn chế gây khó chịu cho người chơi

Trang 10

IV MODULE PREPARE

Trang 11

tại các chướng ngại vật, dựa vào IsValidLevel1() và kiểm tra thêm tọa độ đượcrandom có trùng với chướng ngại vật hay không để phù hợp với từng level.

Trang 13

Hàm GenerateFood() tạo thức ăn Tọa độ sẽ được random và kiểm tra có

trùng với thân rắn hay chướng ngại vật hay không, nếu hợp lệ tọa độ đó sẽ là tọa

Trang 14

Khởi động lại dữ liệu bao gồm độ dài thân rắn và tọa độ của các đốt thân rắn

khi bắt đầu một level mới Trong hàm ResetDataLV1() gọi hàm GenerateFood()

Trang 15

- system( "cls" ) được dùng để làm sạch màn hình

- Hàm SetColor(2) được dùng để thiết lập màu cho giao diện.

Trang 16

- Mỗi level khác nhau sẽ được gọi hàm ResetData() để khởi động lại

dữ liệu và hàm DrawWallLevel() để vẽ chướng ngại vật tương ứng.

- Hàm DrawBoard(1, 1, WIDTH_CONSOLE, HEIGH_CONSOLE)

dùng để vẽ khung hình chữ nhật cho trò chơi

- Hàm GenerateFood() dùng để khởi tạo thức ăn.

- Khi STATE = 1, con rắn sẽ được vẽ lên màn hình.

- LEVELUP = 0: Thiết lập level khi bắt đầu game mới

Trang 17

20 cout << " YOUR SAVED GAME " << (char)2;

22 cout << " ENTER NAME TO SAVE " << (char)1;

24 cout << " Enter file name: ";

46 PlaySound(L"enter.wav", NULL, SND_ASYNC);

47 fopen_s(&file, "namesaved.txt", "at");

57 SPEED, STATE, LEVEL, LEVELUP,fprintf(file, "%d %d %d %d %d %d %d %d %d\n", CHAR_LOCK, MOVING,

Trang 18

60 for (int i = 0; i < SIZE_SNAKE; i++)

- Từ dòng 26 đến dòng 40: in ra màn hình danh sách tên các file game

cũ đã được lưu trước đó

- Từ dòng 42 đến dòng 76: lưu game đang chơi, màn hình trò chơi lúc này

Trang 19

11 for (int i = 0; i < 53; i++)

24 cout << " Enter file name: ";

Trang 20

51 &MOVING, &SPEED, &STATE, &LEVEL, fscanf_s(file, "%d %d %d %d %d %d %d %d %d\n", &CHAR_LOCK,

- Từ dòng 3 đến dòng 24: vẽ giao diện khi người chơi chọn mục

LOADGAME, bao gồm khung màn hình chính – DrawBoard(), khung màn hình phụ - SmallBoard() và các dòng lệnh để người chơi chọn và

nhập tên file đã lưu trước đó

- Từ dòng 26 đến dòng 40: in ra tên các file đã được lưu trước đó lên màn hình

- Từ dòng 42 đến dòng 69: tải dữ liệu của tên file game cũ người chơi đã nhập và vẽ lên màn hình hình ảnh lúc người chơi lưu game bằng hàm

Trang 21

- Hàm PlaySound(L("tenfile.wav"), NULL, SND_SYNC): tạo

thêm âm thanh cho trò chơi

- Dòng 5: Mỗi lần rắn ăn mồi là điểm số của người chơi được cộng thêm 5

- Dòng 7 đến dòng 15: Khi rắn ăn đủ số thức ăn quy định của

mỗi màn (8 miếng), LEVELUP = 1 và rắn sẽ không thể ăn

Trang 22

thêm thức ăn Nếu chưa đủ số lượng yêu cầu, thức ăn sẽ tiếp tục in ra màn hình với vị trí ngẫu nhiên.

- Dòng 18 đến dòng 31: Khi LEVELUP=1, các hàm vẽ cổng tương

ứng của mỗi màn chơi sẽ được gọi Cổng qua màn chơi kế tiếp sẽ xuất hiện kèm theo âm thanh

6 Hàm ProcessDead()

Hàm tạo hiệu ứng chết cho con rắn khi người chơi điều khiển con rắn đụng vào tường, đụng vào thành cổng hay đụng vào thân rắn

Trang 23

- SetColor(SNAKE_COLOR + 1): thay đổi màu của rắn.

- PlaySound(L"die.wav", NULL, SND_SYNC) tạo âm

thanh khi rắn chết

- Từ dòng 13 đến dòng 26: tạo hiệu ứng rắn chết (toàn thân

lần lượt biến mất)

7 Hàm MoveLeft(), MoveRight(), MoveUp(), MoveDown()

Các hàm quản lí việc di chuyển sang trái, phải, lên xuống của con rắn

7 (LEVEL == 3 && LeftDeadLevel3())else if ((LEVEL == 1 && LeftDeadLevel1()) || (LEVEL == 2 && LeftDeadLevel2()) ||

Trang 24

27 }

- Dòng 3 đến dòng 11: kiểm tra xem con rắn có chạm vào thân

không bằng hàm ReachBodyLeft() hoặc đụng vào tường trong các màn chơi bằng các hàm LeftDeadLevel (), nếu có thì rắn chết (xử lí bằng hàm ProcessDead())

- Dòng 14 đến dòng 27: nếu tọa độ của đầu rắn trùng với tọa độ

thức ăn thì gọi hàm Eat() để thực hiện việc ăn mồi Đồng thời

thân rắn sẽ tăng lên một đơn vị

Trang 25

 New Game (bắt đầu vào trò chơi mới)

 Load Game (Tải lại game đã được lưu)

 Setting (Cài đặt màu sắc, âm thanh, tốc độ)

 Introdution (Thông tin giảng viên và nhóm lập trình, hướng dẫn các phím điều khiển trong trò chơi)

 Quit game (Thoát khỏi trò chơi)

10 Hàm InGame(int oldgame=0)

Hàm này sử dụng thêm các hàm khác để hỗ trợ cho việc quản lí game như PauseGame(HANDLE t), SaveGame(), LoadGame()

Trang 26

Hàm để thiết lập tổng thể trò chơi, trong đó bao gồm các hàm

SetSnakeColor(), SetSpeed(), SetSound().

VI MODULE DRAW

File Draw.h chứa khai báo các hàm dùng để vẽ giao diện, nhân vật chính (con rắn), thức ăn, chướng ngại vật và cổng ở mỗi level trong game

1 #pragma once

2 #include "System.h"

3

Trang 27

8 void DrawWallLevel3(); // Function to draw obstacles in level 3

1 Hàm DrawBoard(int x, int y, int width, int height, int

curPosX = 0, int curPosY = 0)

Hàm vẽ khung chính của trò chơi

10 GotoXY( x height + y ); cout << a;

23 GotoXY( x + width + 2, y + height );

27

Trang 28

28 GotoXY( x + width + 2, y + i);

- Màu của con rắn sẽ được người chơi chọn trong phần Setting,

hàm sẽ in từng kí tự của con rắn lên trên màn hình

Trang 29

4 Hàm DrawWallLevel2(), DrawWallLevel3(),

DrawWallLevel(4)

Hàm thiết kế chướng ngại vật cho màn 2, 3, 4 Mỗi level sẽđược thiết kế với các chướng ngại vật khác nhau và độ khó tăng

dần Các hàm trên sử dụng hàm GotoXY(int x, int y) để đi đến

các tọa độ trên màn hình và in ra kí tự để làm chướng ngại vật.

Trang 30

File chứa khai báo các hàm kiểm tra việc di chuyển của con rắn có

hợp lệ hay không (không đụng vào thân hay vào tường và các chướng

ngại vật trong màn chơi)

Trang 31

Ví dụ: hàm ReachBodyLeft() kiểm tra việc di chuyển sang trái

của con rắn trong quá trình người chơi điều khiển

Trang 32

2 Các hàm LeftDeadLevel1(), RightDeadLevel1(),

UpDeadLevel1(), DownDeadLevel1()

Các hàm kiểm tra việc di chuyển trái, phải, lên xuống của con rắn trong màn 1; hàm trả về giá trị “true” khi con rắn đụng vào chướng ngại vật, trả về “false” cho các trường hợp di chuyển hợp lệ

Trang 33

VIII.TẬP TIN MAIN.CPP

Sau khi đã thiết lập xong các hàm cần thiết cho trò chơi, ta cần hàm Main

để liên kết các hàm ở trên, tạo thành một trò chơi “Rắn săn mồi” hoàn chỉnh

Mã nguồn của hàm Main() được khai báo như sau:

Ngày đăng: 29/11/2022, 00:17

HÌNH ẢNH LIÊN QUAN

Xây dựng trò chơi Rắn săn mồi đơn giản với đồ họa là màn hình Console. - Xây dựng trò chơi rắn săn mồi đơn giản với đồ họa là màn hình console
y dựng trò chơi Rắn săn mồi đơn giản với đồ họa là màn hình Console (Trang 4)
- Thân rắn: được hình thành từ mã số sinh viên của các thành viên trong - Xây dựng trò chơi rắn săn mồi đơn giản với đồ họa là màn hình console
h ân rắn: được hình thành từ mã số sinh viên của các thành viên trong (Trang 5)
3 HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE); 4 - Xây dựng trò chơi rắn săn mồi đơn giản với đồ họa là màn hình console
3 HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE); 4 (Trang 9)
- system(&#34;cls&#34;) được dùng để làm sạch màn hình. - Xây dựng trò chơi rắn săn mồi đơn giản với đồ họa là màn hình console
system (&#34;cls&#34;) được dùng để làm sạch màn hình (Trang 15)
dùng để vẽ khung hình chữ nhật cho trị chơi. - Hàm GenerateFood() dùng để khởi tạo thức ăn - Xây dựng trò chơi rắn săn mồi đơn giản với đồ họa là màn hình console
d ùng để vẽ khung hình chữ nhật cho trị chơi. - Hàm GenerateFood() dùng để khởi tạo thức ăn (Trang 16)
- Từ dịng 26 đến dịng 40: in ra màn hình danh sách tên các file game - Xây dựng trò chơi rắn săn mồi đơn giản với đồ họa là màn hình console
d ịng 26 đến dịng 40: in ra màn hình danh sách tên các file game (Trang 18)
- Từ dòng 42 đến dòng 76: lưu game đang chơi, màn hình trị chơi lúc này - Xây dựng trò chơi rắn săn mồi đơn giản với đồ họa là màn hình console
d òng 42 đến dòng 76: lưu game đang chơi, màn hình trị chơi lúc này (Trang 18)
LOADGAME, bao gồm khung màn hình chính – DrawBoard(), khung - Xây dựng trò chơi rắn săn mồi đơn giản với đồ họa là màn hình console
bao gồm khung màn hình chính – DrawBoard(), khung (Trang 20)
Hàm Menu() có chức năng vẽ màn hình menu sau khi bắt đầu chương trình. Menu gồm 5 phần: - Xây dựng trò chơi rắn săn mồi đơn giản với đồ họa là màn hình console
m Menu() có chức năng vẽ màn hình menu sau khi bắt đầu chương trình. Menu gồm 5 phần: (Trang 25)
Hàm in ra màn hình Console giao diện thốt khỏi trị chơi khi người dụng chọn mục QUITGAME trong MENU. - Xây dựng trò chơi rắn săn mồi đơn giản với đồ họa là màn hình console
m in ra màn hình Console giao diện thốt khỏi trị chơi khi người dụng chọn mục QUITGAME trong MENU (Trang 26)
các tọa độ trên màn hình và in ra kí tự để làm chướng ngại vật. - Xây dựng trò chơi rắn săn mồi đơn giản với đồ họa là màn hình console
c ác tọa độ trên màn hình và in ra kí tự để làm chướng ngại vật (Trang 29)

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

TÀI LIỆU LIÊN QUAN

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

w