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

33 8 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

Cấu trúc

  • I. LỜI CẢM ƠN

  • II. GIỚI THIỆU ĐỒ ÁN

    • A. Xác định yêu cầu

    • B. Yêu cầu chức năng

    • C. Yêu cầu tin học

  • III. MODULE SYSTEM:

    • A. File System.h

    • B. File System.cpp

      • 1. Hàm FixConsoleWindow()

      • 2. Hàm GotoXY()

      • 3. Hàm ShowCur()

      • 4. Hàm SetColor()

      • 5. Hàm DisableSelection()

      • 6. Hàm ShowScrollbar()

      • 7. Hàm resizeConsole()

  • IV. MODULE PREPARE

    • A. File Prepare.h

    • B. File Prepare.cpp

      • 1. Hàm IsValidLevel1()

      • 2. Hàm GenerateFood()

      • 3. Hàm ResetDataLV1()

  • V. MODULE PROCESSGAME

    • A. File ProcessGame.h

    • B. File ProcessGame.cpp

      • 1. Hàm StartGame()

      • 2. Hàm PauseGame(HANDLE t)

      • 3. Hàm SaveGame()

      • 4. Hàm LoadGame()

      • 5. Hàm Eat()

      • 6. Hàm ProcessDead()

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

      • 8. Hàm ThreadFunc()

      • 9. Hàm Menu()

      • 10. Hàm InGame(int oldgame=0)

      • 11. Hàm GameOver()

      • 12. Hàm QuitGame()

      • 13. Hàm Information()

      • 14. Hàm SetSnakeColor()

      • 15. Hàm SetSpeed()

      • 16. Hàm SetSound()

      • 17. Hàm Setting()

  • VI. MODULE DRAW

    • A. File Draw.h

    • B. File Draw.cpp

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

      • 2. Hàm SmallBoard()

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

      • 4. Hàm DrawWallLevel2(), DrawWallLevel3(), DrawWallLevel(4)

      • 5. Hàm DrawGateLevel1(), DrawGateLevel2(), DrawGateLevel3(), DrawGateLevel4()

      • 6. Hàm DrawContinueGame()

  • VII. MODULE DEAD

    • A. File Dead.h

    • B. File Dead.cpp

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

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

  • VIII. TẬP TIN MAIN.CPP

Nội dung

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 B Yêu cầu chức C Yêu cầu tin học III MODULE SYSTEM: .5 A File System.h .5 B File System.cpp Hàm FixConsoleWindow() Hàm GotoXY() .7 Hàm ShowCur() Hàm SetColor() .7 Hàm DisableSelection() Hàm ShowScrollbar() Hàm resizeConsole() .8 IV MODULE PREPARE A File Prepare.h B File Prepare.cpp V Hàm IsValidLevel1() .9 Hàm GenerateFood() 10 Hàm ResetDataLV1() 11 MODULE PROCESSGAME 12 A File ProcessGame.h 12 B File ProcessGame.cpp 12 Hàm StartGame() 12 Hàm PauseGame(HANDLE t) 14 Hàm SaveGame() 14 Hàm LoadGame() 16 Hàm Eat() 18 Hàm ProcessDead() 20 Hàm MoveLeft(), MoveRight(), MoveUp(), MoveDown() 21 Hàm ThreadFunc() .22 Hàm Menu() 23 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 Hàm DrawBoard(int x, int y, int width, int height, int curPosX = 0, int curPosY = 0) 25 Hàm SmallBoard() 26 Hàm DrawSnakeAndFood(const char str, int start_char = 0) 26 Hàm DrawWallLevel2(), DrawWallLevel3(), DrawWallLevel(4) .26 Hàm DrawGateLevel1(), DrawGateLevel2(), DrawGateLevel3(), DrawGateLevel4() 27 Hàm DrawContinueGame() .27 VII MODULE DEAD 28 A File Dead.h 28 B File Dead.cpp 29 Các hàm ReachBodyLeft(), ReachBodyRight(), ReachBodyUp(), ReachBodyDown() 29 Các hàm LeftDeadLevel1(), RightDeadLevel1(), UpDeadLevel1(), DownDeadLevel1() .29 VIII TẬP TIN MAIN.CPP 30 I LỜI CẢM ƠN Trong suốt trình tìm hiểu hồn thành đồ án, nhóm nhận 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 đỡ hỗ trợ giảng viên phụ trách giảng dạy kiến thức lập trình - Những người bạn giúp nhóm có thêm nhiều ý tưởng trình thực đồ án - Những người ủng hộ hộ trợ tinh thần cho nhóm trình thực đồ án Xin chân thành cảm ơn! II GIỚI THIỆU ĐỒ ÁN Hoạt động Game xuất từ lâu Việt Nam Game bắt nguồn từ điện thoại xuất máy tính Game ngày phát triển trở thành hình thức giải trí tảng để người chơi kiếm thêm thu nhập Hunting Snake không ngoại lệ phát triển thành công tiếng điện thoại lẫn máy tính với nhiều phiên khác thu hút người chơi Trong môn học Ký thuật lập trình lớp 21CTT4, Giảng viên- Tiến Sĩ Trương Tồn Thịnh hướng dẫn, trị chơi đồ án thực hành cần thiết nhằm thúc đẩy tìm tịi tư kỹ lập trình cho sinh viên ngành Cơng nghệ thông tin A Xác định yêu cầu Trải qua trình tìm hiểu, học tập hướng dẫn giảng viên Trương Tồn Thịnh, nhóm 3- 21CTT4 xây dựng thành công phiên Hunting Snake Game có chức chính: Di chuyển rắn phím điều hướng W, A, S, D; tăng chiều dài ăn vật phẩm (Mỗi đốt thân rắn chữ số mã số sinh viên thành viên), lưu tải game chơi, âm phù hợp với thao tác Sự hoạt động chức hàm giải thích chi tiết báo cáo Các thơng tin trình bày mục III sau Danh sách thành viên tham gia đồ án: ST MSSV Họ tên Chức vụ T 21120492 21120493 21120496 21120423 21120409 Trần Mỹ Phú Lâm Nguyễn Ngọc Lan Chu Hải Linh Phạm Mạnh Cường Nguyễn Đức Duy Anh Nhóm trưởng Thành viên Thành viên Thành viên Thành viên Xây dựng trò chơi Rắn săn mồi đơn giản với đồ họa hình Console B Yêu cầu chức - Di chuyển rắn: 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 nó: kết thúc trị chơi trường hợp xảy - 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 cài đặt lại theo mặc định Cần tìm hiểu xử lý cho độ dài thân rắn không đổi tới cấp tiếp theo, độ dài cài đặt trở lại theo mặc định người chơi vượt qua hết cấp độ quay trở lại cấp với tốc độ di chuyển nhanh - Xử lý cổng: Khi rắn ăn hết vật phẩm, hình Console cổng, rắn di chuyển qua cổng để đến cấp độ Tuy nhiên, rắn phải di chuyển qua cổng hồn tồn hình Console chuyển sang hình cấp - Cung cấp hiệu ứng: Khi rắn chạm vào tường, thân cổng, lập trình viên tạo hiệu ứng sống động cho trình - Tạo menu: Để người chơi dễ dàng việc chọn hoạt động mà họ muốn - Thân rắn: hình thành từ mã số sinh viên thành viên nhóm C Yêu cầu tin học - Ngơn ngữ lập trình: C/C++ - 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: A File System.h #define MAX_SIZE_SNAKE 40 const char Snake_Body[] = "2112049221120493211204962112042321120409"; 11 #define MAX_SIZE_FOOD extern POINT snake[40]; extern POINT food[8]; enum state { MENU, INGAME, SETTING, SETCOLOR, SETSPEED, SETSOUND, LOADGAME, INFORMATION, GAMEOVER, QUITGAME }; extern state interf; extern int CHAR_LOCK; extern int MOVING; extern int SPEED; extern int HEIGH_CONSOLE, WIDTH_CONSOLE; extern int FOOD_INDEX; extern int SIZE_SNAKE; extern int STATE; extern int LEVEL; 2 2 2 3 3 extern int LEVELUP; extern int temp; extern int SCORE; extern int start_char; extern int SOUND; extern int SNAKE_COLOR; void FixConsoleWindow(); void DisableSelection(); void ShowScrollbar(BOOL Show); void GotoXY(int x, int y); void ShowCur(bool CursorVisibility); void SetColor(WORD color); void resizeConsole(int width, int height); - Khai báo biến toàn cục hàm xử lý thao tác hình Console sử dụng suốt Project Dịng khai báo chuỗi kí tự, chữ số mã số sinh viên thành viên nhóm B File System.cpp Hàm FixConsoleWindow() Hàm dùng để cài đặt kích thước hình Console, khơng cho phép người chơi thay đổi kích thước hình Console void FixConsoleWindow() { HWND consoleWindow = GetConsoleWindow(); LONG style = GetWindowLong(consoleWindow, GWL_STYLE); style = style & ~(WS_MAXIMIZEBOX) & ~(WS_THICKFRAME); SetWindowLong(consoleWindow, GWL_STYLE, style); } Hàm GotoXY() Hàm có đối số đầu vào tọa độ vị trí mà Lập trình viên muốn di chuyển đến thực thao tác khác hình Console void GotoXY(int x, int y) { COORD coord{ x, y }; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord); } Hàm ShowCur() Trong hàm ShowCur() có gọi hàm SetConsoleCursorInfo() với chức cài đặt kích thước khả hiển thị trỏ chuột (ẩn hay hiển thị) hình Console void ShowCur(bool CursorVisibility) { HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); CONSOLE_CURSOR_INFO cursor = { 1, CursorVisibility }; SetConsoleCursorInfo(handle, &cursor); } Hàm SetColor() Hàm có chức thay đổi màu sắc kí tự in hình giúp cho trò chơi trở nên thú vị, đẹp mắt thu hút người chơi 11 void SetColor(WORD color) { HANDLE hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE); CONSOLE_SCREEN_BUFFER_INFO screen_buffer_info; GetConsoleScreenBufferInfo(hConsoleOutput, &screen_buffer_info); WORD wAttributes = screen_buffer_info.wAttributes; color &= 0x000f; wAttributes &= 0xfff0; wAttributes |= color; SetConsoleTextAttribute(hConsoleOutput, wAttributes); } Hàm DisableSelection() Hàm ngăn chặn việc người chơi thao tác chuột lên phần tử hoạt động hình Console hạn chế gây khó chịu cho người chơi void DisableSelection() { HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE); SetConsoleMode(hStdin, ~ENABLE_QUICK_EDIT_MODE); } Hàm ShowScrollbar() Hàm thao tác ẩn kéo Scrollbar góp phần cải thiện giao diện trị chơi void ShowScrollbar(BOOL Show) { HWND hWnd = GetConsoleWindow(); ShowScrollBar(hWnd, SB_BOTH, Show); } Hàm resizeConsole() Hàm có chức thay đổi kích thước hình Console tùy theo ý tưởng sáng tạo Lập trình viên IV void resizeConsole(int width, int height) { HWND console = GetConsoleWindow(); RECT r; GetWindowRect(console, &r); MoveWindow(console, r.left, r.top, width, height, TRUE); } MODULE PREPARE A File Prepare.h File Prepare.h chứa khai báo hàm hỗ trợ cho trình chuẩn bị hình thành thức ăn khởi động lại liệu level 11 #pragma once #include "System.h" bool IsValidLevel1(int x, int y); bool IsValidLevel2(int x, int y); bool IsValidLevel3(int x, int y); bool IsValidLevel4(int x, int y); void GenerateFood(); void ResetDataLV1(); void ResetDataLV2(); void ResetDataLV3(); void ResetDataLV4(); B 10 11 File Prepare.cpp Hàm IsValidLevel1() bool IsValidLevel1(int x, int y) { for (int i = 0; i < SIZE_SNAKE; i++) { if (snake[i].x == x && snake[i].y == y) { return false; } } return true; } Hàm nhận vào đối số tọa độ random, false tiếp tục random, true tọa độ thức ăn đối số hàm Hàm IsValidLevel1() code dựa giao diện level Các level tồn chướng ngại vật, dựa vào IsValidLevel1() kiểm tra thêm tọa độ random có trùng với chướng ngại vật hay không để phù hợp với level 2 11 Hàm GenerateFood() void GenerateFood() { int x, y; srand((time_t)time(NULL)); switch (LEVEL) { case 1: for (int i = 0; i < MAX_SIZE_FOOD; i++) { { x = rand() % (WIDTH_CONSOLE - 1) + 2; 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 // Load old game GotoXY(51, 9); ShowCur(1); gets_s(str); if (SOUND) PlaySound(L"enter.wav", NULL, SND_ASYNC); strcat_s(str, ".txt"); fopen_s(&file, str, "rt"); if (file != NULL) { fscanf_s(file, "%d %d %d %d %d %d %d %d %d\n", &CHAR_LOCK, &MOVING, &SPEED, &STATE, &LEVEL, &LEVELUP, &temp, &SCORE, &SNAKE_COLOR); fscanf_s(file, "%d ", &SIZE_SNAKE); for (int i = 0; i < SIZE_SNAKE; i++) { fscanf_s(file, "%d %d ", &snake[i].x, &snake[i].y); } fscanf_s(file, "\n%d ", &FOOD_INDEX); for (int i = 0; i < 8; i++) { fscanf_s(file, "%d %d ", &food[i].x, &food[i].y); } fclose(file); } ShowCur(0); GotoXY(49, 15); cout 0) { } switch (MOVING) { case 'A': MoveLeft(); 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 break; case 'D': MoveRight(); break; case 'W': MoveUp(); break; case 'S': MoveDown(); break; } if (LEVELUP == 0) { DrawSnakeAndFood(4); } else if (LEVELUP == 1) { // Processing going through the gate DrawSnakeAndFood(4, start_char); } Sleep(300 / SPEED); // Sleep function with SPEED variable } else { break; } } } Hàm Menu() Hàm Menu() có chức vẽ hình menu sau bắt đầu chương trình Menu gồm phần: New Game (bắt đầu vào trò chơi mới) Load Game (Tải lại game lưu) Setting (Cài đặt màu sắc, âm thanh, tốc độ) Introdution (Thơng tin giảng viên nhóm lập trình, hướng dẫn phím điều khiển trị chơi)  Quit game (Thốt khỏi trị chơi)     10 Hàm InGame(int oldgame=0) Hàm sử dụng thêm hàm khác để hỗ trợ cho việc quản lí game PauseGame(HANDLE t), SaveGame(), LoadGame() 11 Hàm GameOver() Hàm in điểm tổng kết người chơi sau rắn chết tải lại liệu cho game 12 Hàm QuitGame() Hàm in hình Console giao diện khỏi trị chơi người dụng chọn mục QUITGAME MENU 13 Hàm Information() Hàm in hình Console thơng tin game, bao gồm thông tin giảng viên hướng dẫn, thành viên nhóm thực hướng dẫn trị chơi 14 Hàm SetSnakeColor() Hàm thiết lập màu cho rắn, người chơi lựa chọn màu cách nhập số tương ứng với màu muốn chọn 15 Hàm SetSpeed() Hàm thiết lập tốc độ rắn 16 Hàm SetSound() Hàm thiết lập âm thanh: người chơi bật tắt âm cách nhập số (mở), (tắt) 17 Hàm Setting() Hàm để thiết lập tổng thể trò chơi, bao gồm hàm SetSnakeColor(), SetSpeed(), SetSound() VI MODULE DRAW A File Draw.h File Draw.h chứa khai báo hàm dùng để vẽ giao diện, nhân vật (con rắn), thức ăn, chướng ngại vật cổng level game #pragma once #include "System.h" void DrawBoard(int x, int y, int width, int height, int curPosX = 0, int curPosY 10 11 12 13 14 = 0); // Function to draw the board of game void SmallBoard();// Function to draw board of score and length while playing void DrawSnakeAndFood(const char str, int start_char = 0); // Function to draw snake and food void DrawWallLevel2();// Function to draw obstacles in level void DrawWallLevel3();// Function to draw obstacles in level void DrawWallLevel4();// Function to draw obstacles in level void DrawGateLv1();// Function to draw gate in level void DrawGateLv2();// Function to draw gate in level void DrawGateLv3();// Function to draw gate in level void DrawGateLv4();// Function to draw gate in level void DrawContinueGame();// Function to draw board after saving and loading B 10 11 12 13 14 15 16 17 18 19 20 21 22 File Draw.cpp Hàm DrawBoard(int x, int y, int width, int height, int curPosX = 0, int curPosY = 0) Hàm vẽ khung trị chơi void DrawBoard(int x, int y, int width, int height, int curPosX, int curPosY) { char a = 223; char b = 220; char c = 219; GotoXY(x, y); cout

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

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)
- 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. - 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
hai 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 (Trang 6)
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. - 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 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 (Trang 7)
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. - 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 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 (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)
- Khi STATE =1, con rắn sẽ được vẽ lên 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
hi STATE =1, con rắn sẽ được vẽ lên màn hình (Trang 15)
- 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 đó - 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 cũ đã được lưu trước đó (Trang 17)
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 19)
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 24)
Hàm thiết lập để vẽ các bảng sau khi người chơi tải lại game đã lư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
m thiết lập để vẽ các bảng sau khi người chơi tải lại game đã lưu (Trang 28)

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

TÀI LIỆU LIÊN QUAN

w