You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用更简洁方式替代switch-case实现PacMan游戏地图符号转图片?

PacMan地图渲染代码优化方案

核心优化思路:用映射对象替代冗长的switch-case

把地图符号与对应资源/逻辑的对应关系集中存储在一个映射结构中,遍历地图时直接通过符号匹配处理逻辑,彻底消除重复代码块。

基础优化方案(针对符号仅对应图片的场景)

先定义符号与图片路径的映射表,后续新增符号只需在此添加键值对:

// 符号-图片路径映射表,所有符号对应关系统一管理
const symbolImageMap = {
  'a': '../javascript/images/board/boundaryHorizontal.png',
  'b': '../javascript/images/board/boundaryVertikal.png',
  // 新增符号直接加在这里,比如 'c': '../xxx/xxx.png'
};

function createImage(src) {
  const image = new Image()
  image.src = src
  return image
}

// 简化后的地图遍历逻辑
map.forEach((row, zeilen) => {
  row.forEach((symbol, spalten) => {
    // 若当前符号无对应配置,直接跳过
    const imagePath = symbolImageMap[symbol];
    if (!imagePath) return;

    boundaries.push(
      new Boundary({
        position: {
          x: Boundary.width * spalten,
          y: Boundary.height * zeilen
        },
        image: createImage(imagePath)
      })
    );
  });
});

进阶优化方案(支持不同符号对应不同逻辑)

如果后续需要处理不同类型元素(比如PacMan、道具、敌人),可以把映射表的值改为处理函数,扩展性更强:

// 符号-处理函数映射表,每个符号对应独立的生成逻辑
const symbolHandlers = {
  'a': (spalten, zeilen) => {
    boundaries.push(new Boundary({
      position: { x: Boundary.width * spalten, y: Boundary.height * zeilen },
      image: createImage('../javascript/images/board/boundaryHorizontal.png')
    }));
  },
  'b': (spalten, zeilen) => {
    boundaries.push(new Boundary({
      position: { x: Boundary.width * spalten, y: Boundary.height * zeilen },
      image: createImage('../javascript/images/board/boundaryVertikal.png')
    }));
  },
  'p': (spalten, zeilen) => {
    // 示例:生成PacMan角色
    pacman = new Pacman({
      position: {
        x: Boundary.width * spalten,
        y: Boundary.height * zeilen
      }
    });
  }
  // 新增元素直接添加对应的处理函数即可
};

function createImage(src) {
  const image = new Image()
  image.src = src
  return image
}

// 统一遍历执行对应逻辑
map.forEach((row, zeilen) => {
  row.forEach((symbol, spalten) => {
    const handler = symbolHandlers[symbol];
    if (handler) handler(spalten, zeilen);
  });
});

优化后的优势

  • 代码量大幅减少:原来200+行的switch-case会压缩到几十行,维护成本骤降
  • 扩展性极强:新增关卡或符号只需修改映射表,无需改动遍历核心逻辑
  • 可读性提升:所有符号的对应关系一目了然,无需在大量case块中查找

内容的提问来源于stack exchange,提问作者Anthony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 03:05:50