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 4 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 263,6 KB

Cấu trú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 (7)
    • 1. Hàm FixConsoleWindow() (7)
    • 2. Hàm GotoXY() (7)
    • 3. Hàm ShowCur() (8)
    • 4. Hàm SetColor() (8)
    • 5. Hàm DisableSelection() (9)
    • 6. Hàm ShowScrollbar() (9)
    • 7. Hàm resizeConsole() (9)
    • IV. MODULE PREPARE (10)
  • A. File Prepare.h (10)
  • B. File Prepare.cpp (10)
    • 1. Hàm IsValidLevel1() (10)
    • 2. Hàm GenerateFood() (11)
    • 3. Hàm ResetDataLV1() (13)
    • V. MODULE PROCESSGAME (14)
  • A. File ProcessGame.h (14)
  • B. File ProcessGame.cpp (15)
    • 1. Hàm StartGame() (15)
    • 2. Hàm PauseGame(HANDLE t) (16)
    • 3. Hàm SaveGame() (16)
    • 4. Hàm LoadGame() (18)
    • 5. Hàm Eat() (20)
    • 6. Hàm ProcessDead() (22)
    • 7. Hàm MoveLeft(), MoveRight(), MoveUp(), MoveDown() (23)
    • 8. Hàm ThreadFunc() (24)
    • 9. Hàm Menu() (25)
    • 10. Hàm InGame(int oldgame=0) (25)
    • 11. Hàm GameOver() (26)
    • 12. Hàm QuitGame() (26)
    • 13. Hàm Information() (26)
    • 14. Hàm SetSnakeColor() (26)
    • 15. Hàm SetSpeed() (26)
    • 16. Hàm SetSound() (26)
    • 17. Hàm Setting() (26)
    • VI. MODULE DRAW (26)
  • A. File Draw.h (26)
  • B. File Draw.cpp (27)
    • 1. Hàm DrawBoard(int x, int y, int width, int height, int curPosX = 0, int curPosY = 0) (27)
    • 2. Hàm SmallBoard() (28)
    • 3. Hàm DrawSnakeAndFood(const char str, int start_char = 0) (28)
    • 4. Hàm DrawWallLevel2(), DrawWallLevel3(), DrawWallLevel(4) (29)
    • 5. Hàm DrawGateLevel1(), DrawGateLevel2(), DrawGateLevel3(), DrawGateLevel4() (29)
    • 6. Hàm DrawContinueGame() (29)
    • VII. MODULE DEAD (30)
  • A. File Dead.h (30)
  • B. File Dead.cpp (31)
    • 1. Các hàm ReachBodyLeft(), ReachBodyRight(), ReachBodyUp(), ReachBodyDown() (31)
    • 2. Các hàm LeftDeadLevel1(), RightDeadLevel1(), UpDeadLevel1(), DownDeadLevel1() (32)
    • VIII. TẬP TIN MAIN.CPP (33)

Nội dung

GIỚI THIỆU ĐỒ ÁN

Hoạt động game đã có mặt tại Việt Nam từ lâu, bắt đầu từ điện thoại và sau đó mở rộng sang máy tính Ngành công nghiệp game ngày càng phát triển, trở thành một hình thức giải trí và cơ hội kiếm thu nhập cho người chơi Hunting Snake là một ví dụ điển hình, phát triển thành công và nổi tiếng trên cả hai nền tảng với nhiều phiên bản hấp dẫn Trong môn Kỹ thuật lập trình của lớp 21CTT4, giảng viên Tiến đã hướng dẫn sinh viên khám phá lĩnh vực này.

Sĩ Trương Toàn Thịnh đã hướng dẫn rằng trò chơi này là một dự án thực hành quan trọng, giúp sinh viên ngành Công nghệ thông tin phát triển tư duy và kỹ năng lập trình.

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

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

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

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

STT MSSV Họ tên Chức vụ

1 21120492 Trần Mỹ Phú Lâm Nhóm trưởng

2 21120493 Nguyễn Ngọc Lan Thành viên

3 21120496 Chu Hải Linh Thành viên

4 21120423 Phạm Mạnh Cường Thành viên

5 21120409 Nguyễn Đức Duy Anh Thành viê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.

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

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

Khi người chơi nhấn phím ‘T’, hệ thống sẽ yêu cầu họ cung cấp tên tệp để lưu trò chơi Ngược lại, khi nhấn phím ‘L’, người chơi sẽ được yêu cầu nhập tên tệp để tải trò chơi.

Để giữ độ dài thân rắn không đổi khi di chuyển tới cấp tiếp theo, người chơi cần tìm hiểu và xử lý các yếu tố liên quan Độ dài thân rắn chỉ được cài đặt trở lại theo mặc định khi người chơi hoàn thành 4 cấp độ và quay lại cấp 1 với tốc độ di chuyển nhanh hơn.

Khi con rắn thu thập đủ 8 vật phẩm, một cổng sẽ xuất hiện trên màn hình Console Để chuyển sang cấp độ tiếp theo, con rắn cần di chuyển hoàn toàn qua cổng này Màn hình Console chỉ chuyển đổi sang cấp độ mới khi con rắn đã vượt qua cổng.

- 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 theo mà họ muốn.

- Thân rắn: được hình thành từ mã số sinh viên của các thành viên trong nhóm.

Yêu cầu tin học

File System.h

9 enum state { MENU, INGAME, SETTING, SETCOLOR, SETSPEED, SETSOUND,

15 extern int HEIGH_CONSOLE, WIDTH_CONSOLE;

3 void resizeConsole(int width, int height);

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

File System.cpp

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.

4 LONG style = GetWindowLong(consoleWindow, GWL_STYLE);

5 style = style & ~(WS_MAXIMIZEBOX) & ~(WS_THICKFRAME);

6 SetWindowLong(consoleWindow, GWL_STYLE, style);

Hàm GotoXY()

Hàm nhận đối số là tọa độ của vị trí mà lập trình viên muốn di chuyển đến và thực hiện các thao tác trên màn hình Console.

4 SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);

Hàm ShowCur()

Hàm ShowCur() sử dụng hàm SetConsoleCursorInfo() để thiết lập kích thước và khả năng hiển thị của con trỏ chuột trên màn hình Console, cho phép ẩn hoặc hiển thị con trỏ.

3 HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);

4 CONSOLE_CURSOR_INFO cursor = { 1, CursorVisibility };

Hàm SetColor()

Hàm này có khả năng thay đổi màu sắc của các ký tự khi hiển thị trên màn hình, làm cho trò chơi trở nên hấp dẫn, sinh động và thu hút người chơi hơn.

3 HANDLE hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);

45 CONSOLE_SCREEN_BUFFER_INFO screen_buffer_info;

6 GetConsoleScreenBufferInfo(hConsoleOutput, &screen_buffer_info);

78 WORD wAttributes = screen_buffer_info.wAttributes;

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.

3 HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE);

45 SetConsoleMode(hStdin, ~ENABLE_QUICK_EDIT_MODE);

Hàm ShowScrollbar()

Hàm thao tác ẩn thanh kéo Scrollbar góp phần cải thiện giao diện trò chơi.

4 ShowScrollBar(hWnd, SB_BOTH, Show);

Hàm resizeConsole()

Hàm có chức năng thay đổi kích thước màn hình Console tùy theo ý tưởng và sự sáng tạo của Lập trình viên.

1 void resizeConsole(int width, int height)

6 MoveWindow(console, r.left, r.top, width, height, TRUE);

File Prepare.h

File Prepare.h chứa khai báo các hàm hỗ trợ cho quá trình chuẩn bị hình thành thức ăn và khởi động lại dữ liệu ở từng level.

File Prepare.cpp

Hàm IsValidLevel1()

Hàm nhận hai đối số là tọa độ được random; nếu trả về false, hàm sẽ tiếp tục thực hiện random Ngược lại, nếu trả về true, tọa độ của thức ăn tiếp theo sẽ được xác định bởi hai đối số của hàm.

Hàm IsValidLevel1() được phát triển dựa trên giao diện của cấp độ 1 Đối với các cấp độ tiếp theo, có sự xuất hiện của các chướng ngại vật; do đó, hàm này sẽ kiểm tra xem tọa độ ngẫu nhiên có trùng với các chướng ngại vật hay không, nhằm đảm bảo tính hợp lệ cho từng cấp độ.

Hàm GenerateFood()

8 for (int i = 0; i < MAX_SIZE_FOOD; i++)

19 for (int i = 0; i < MAX_SIZE_FOOD; i++)

30 for (int i = 0; i < MAX_SIZE_FOOD; i++)

41 for (int i = 0; i < MAX_SIZE_FOOD; i++)

Hàm GenerateFood() có chức năng tạo ra thức ăn trong trò chơi Tọa độ của thức ăn được xác định ngẫu nhiên và sẽ được kiểm tra xem có trùng với thân rắn hoặc các chướng ngại vật hay không Nếu tọa độ đó hợp lệ, nó sẽ được sử dụng làm vị trí cho thức ăn.

Hàm ResetDataLV1()

3 CHAR_LOCK = 'A', MOVING = 'D', FOOD_INDEX = 0, WIDTH_CONSOLE = 90,

Khởi động lại dữ liệu trong game bao gồm việc xác định độ dài và tọa độ của các đốt thân rắn khi bắt đầu một cấp độ mới Hàm ResetDataLV1() sẽ gọi hàm GenerateFood() để tạo ra mảng thức ăn cho người chơi.

File ProcessGame.h

File ProcessGame.h chứa khai báo các hàm hỗ trợ cho việc xử lí con rắn và tạo ra các luồng thực hiện chương trình.

File ProcessGame.cpp

Hàm StartGame()

Hàm StartGame() bao gồm các nhiệm vụ cần làm trước khi vào game chính thức.

25 DrawBoard(1, 1, WIDTH_CONSOLE, HEIGH_CONSOLE); // Draw game

28 LEVELUP = 0; // Not levelup when starting new

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

- 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

Hàm PauseGame(HANDLE t)

Hàm để người dùng dừng game khi đang chơi

Hàm SaveGame()

Hàm để lưu dữ liệu về game đang chơi

2 { // Draw the save game screen

4 DrawBoard(1, 1, WIDTH_CONSOLE, HEIGH_CONSOLE);

20 cout

Ngày đăng: 01/12/2022, 15:21

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

w