[C] C语言编写一个简单的迷宫游戏 →→→→→进入此内容的聊天室

来自 Abrupt Wigeon, 2024-03-06, 写在 C, 查看 11 次.
URL http://www.code666.cn/view/d9e65154
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define MAZE_WIDTH 5
  5. #define MAZE_HEIGHT 5
  6.  
  7. // 迷宫结构
  8. char maze[MAZE_WIDTH][MAZE_HEIGHT] = {
  9.     {'#', '#', '#', '#', '#'},
  10.     {'#', ' ', ' ', ' ', '#'},
  11.     {'#', ' ', '#', ' ', '#'},
  12.     {'#', ' ', ' ', ' ', '#'},
  13.     {'#', '#', '#', '#', '#'}
  14. };
  15.  
  16. // 玩家位置
  17. int playerX = 1;
  18. int playerY = 1;
  19.  
  20. // 打印迷宫
  21. void printMaze() {
  22.     for (int i = 0; i < MAZE_WIDTH; ++i) {
  23.         for (int j = 0; j < MAZE_HEIGHT; ++j) {
  24.             if (i == playerX && j == playerY) {
  25.                 printf("P ");
  26.             } else {
  27.                 printf("%c ", maze[i][j]);
  28.             }
  29.         }
  30.         printf("\n");
  31.     }
  32. }
  33.  
  34. // 检查玩家位置是否有效
  35. int isValidMove(int newX, int newY) {
  36.     return (newX >= 0 && newX < MAZE_WIDTH && newY >= 0 && newY < MAZE_HEIGHT && maze[newX][newY] != '#');
  37. }
  38.  
  39. int main() {
  40.     char direction;
  41.  
  42.     do {
  43.         printMaze(); // 打印迷宫
  44.  
  45.         printf("输入方向 (W/A/S/D): ");
  46.         scanf(" %c", &direction); // 读取玩家输入的方向
  47.  
  48.         switch (direction) {
  49.             case 'w': // 上
  50.                 if (isValidMove(playerX - 1, playerY)) {
  51.                     playerX--;
  52.                 }
  53.                 break;
  54.             case 'a': // 左
  55.                 if (isValidMove(playerX, playerY - 1)) {
  56.                     playerY--;
  57.                 }
  58.                 break;
  59.             case 's': // 下
  60.                 if (isValidMove(playerX + 1, playerY)) {
  61.                     playerX++;
  62.                 }
  63.                 break;
  64.             case 'd': // 右
  65.                 if (isValidMove(playerX, playerY + 1)) {
  66.                     playerY++;
  67.                 }
  68.                 break;
  69.             default:
  70.                 printf("无效的方向,请重新输入。\n");
  71.                 break;
  72.         }
  73.  
  74.         // 检查是否到达终点
  75.         if (maze[playerX][playerY] == 'E') {
  76.             printf("恭喜你,找到了出口!\n");
  77.         }
  78.     } while (maze[playerX][playerY] != 'E');
  79.  
  80.     return 0;
  81. }
  82.  
  83.  
  84.  
  85.  
  86. 在这个示例中,迷宫被定义为一个二维字符数组,'#'表示墙壁,空格' '表示可以走的路,'E'表示出口,'P'表示玩家的位置。玩家可以通过输入W、A、S、D来分别向上、向左、向下、向右移动。程序会检查玩家的移动是否有效(即是否不会撞到墙壁),然后更新玩家的位置。如果玩家到达出口,游戏结束并显示祝贺信息。
  87.  

回复 "C语言编写一个简单的迷宫游戏"

这儿你可以回复上面这条便签

captcha