猫史档案馆


【box3】围棋大赛之后续-----象棋大赛

用户:Lingooy_月Lingooy_月查看:9 回复:2 评论:9 创建时间:2021-07-20T16:33:23


最近考古时,发现吉吉喵曾说过:

谁能最先创作出可运行的象棋地图,

将被推荐到box3.codemao.cn首页!

但,如今过了这么久,就没有一个可运行的象棋地图

所以,我也不做....

代码给你们,看哪个无聊的做一下,上下首页

代码如下:

var 设置棋子 = 1//变量用中文好辩认,在作品中可改变量名称
var 当前编号 = 0
var 选择棋子 = 0
var 临时造型编号 = 0
var 临时位置 = 0
var 临时方向 = 0
var 临时变量 = 0
var 下棋方 = 0
var 落子位置 = 0
self.var 棋子编号 = 0
self.var 编号 = 0
var 判定将军 = 0
var 将军检测编号 = 0

var 棋子造型 = [5, 4, 3, 2, 1, 2, 3, 4, 5, 6, 6, 7, 7, 7, 7, 7];
var 棋子位置 = [];
var 方向 = [1, 10, '-1', '-10'];
var 九格位置 = [3, 4, 5, 13, 14, 15, 23, 24, 25];
var 斜角方向 = [11, 9, '-11', '-9'];
var 马跳方向 = ['-8', 12, 19, 21, 8, '-12', '-19', '-21'];
var 历史记录 = [];

function 移到位置(X, Y) {
  set_xy(获得坐标X(null), 获得坐标Y(null));
}

function 检测胜负() {
  if ((棋子位置[4] < 0)) {
    send_signal('黑棋获胜');
  } else if ((棋子位置[20] < 0)) {
    send_signal('红棋获胜');
  } else if ((检测棋子个数(null, null) === 0)) {
    if ((下棋方 === 0)) {
      send_signal('黑棋获胜');
    } else {
      send_signal('红棋获胜');
    }
  } else {
  }
}

function 落子判定(目标位置, 造型编号, 起始位置, 下棋方) {
  if ((目标位置 < 0 || 目标位置 % 10 > 8 || 目标位置 >= 100)) {
    return false;
  } else if ((棋子位置.includes(目标位置) && Math.floor(棋子位置.indexOf(目标位置) / 17) === 下棋方)) {
    return false;
  } else {
    // 如果是帅或将
    // 如果是士
    // 如果是象
    // 如果是马
    // 如果是车
    // 如果是炮
    // 如果是兵
    if ((造型编号 === 1)) {
      if ((方向.includes((目标位置 - 起始位置)) && 九格位置.includes(转为己方位置(null, null)))) {
        return true;
      } else {
        return false;
      }
    } else if ((造型编号 === 2)) {
      if ((斜角方向.includes((目标位置 - 起始位置)) && 九格位置.includes(转为己方位置(null, null)))) {
        return true;
      } else {
        return false;
      }
    } else if ((造型编号 === 3)) {
      if ((斜角方向.includes(((目标位置 - 起始位置) / 2)) && !棋子位置.includes(((起始位置 + 目标位置) / 2)) && 转为己方位置(null, null) < 50)) {
        return true;
      } else {
        return false;
      }
    } else if ((造型编号 === 4)) {
      if (马跳方向.includes((目标位置 - 起始位置))) {
        if (棋子位置.includes((起始位置 + 方向[Math.floor((马跳方向.indexOf((目标位置 - 起始位置)) + 1) / 2) - 1]))) {
          return false;
        } else {
          return true;
        }
      } else {
        return false;
      }
    } else if ((造型编号 === 5)) {
      if ((检测棋子个数(null, null) === 0)) {
        return true;
      } else {
        return false;
      }
    } else if ((造型编号 === 6)) {
      if (棋子位置.includes(目标位置)) {
        if ((检测棋子个数(null, null) === 1 && Math.floor(棋子位置.indexOf(目标位置) / 17) != 下棋方)) {
          return true;
        }
        return false;
      } else if ((检测棋子个数(null, null) === 0)) {
        return true;
      } else {
        return false;
      }
    } else if ((造型编号 === 7)) {
      if ((转为己方位置(null, null) < 50)) {
        if ((转为己方位置(null, null) - 转为己方位置(null, null) === 10)) {
          return true;
        } else {
          return false;
        }
      } else {
        if ((方向.includes((转为己方位置(null, null) - 转为己方位置(null, null))) && 转为己方位置(null, null) - 转为己方位置(null, null) != -10)) {
          return true;
        } else {
          return false;
        }
      }
    } else {
      return false;
    }
  }
  return false;
}

function 检测棋子个数(起始位置, 结束位置) {
  if (((起始位置 - 结束位置) % 10 == 0)) {
    if ((结束位置 > 起始位置)) {
      临时方向 = 10;
    } else {
      临时方向 = -10;
    }
  } else if ((Math.floor(起始位置 / 10) === Math.floor(结束位置 / 10))) {
    if ((结束位置 > 起始位置)) {
      临时方向 = 1;
    } else {
      临时方向 = -1;
    }
  } else {
    return -1;
  }
  临时位置 = 起始位置 + 临时方向;
  临时变量 = 0;
  while(!(临时位置 === 结束位置)) {
    if (棋子位置.includes(临时位置)) {
      临时变量 = 临时变量 + 1;
    }
    临时位置 = 临时位置 + (临时方向);
  }
  return 临时变量;
}

function 检测将军(下棋方) {
  判定将军 = 0;
  if ((下棋方 === 0)) {
    将军检测编号 = 1;
    for (var _count = 0; _count < 16; _count++;) {
      if (落子判定(null, null, null, null)) {
        判定将军 = 1;
        break;
      }
      将军检测编号 = 将军检测编号 + 1;
    }
  } else {
    将军检测编号 = 17;
    for (var _count2 = 0; _count2 < 16; _count2++;) {
      if (落子判定(null, null, null, null)) {
        判定将军 = 1;
        break;
      }
      将军检测编号 = 将军检测编号 + 1;
    }
  }
  if ((判定将军 === 1)) {
    world.say('将军')
  }
}

function 当前位置() {
  return (获得位置Y(null) * 10 + 获得位置X(null));
}

function 转为己方位置(位置, 下棋方) {
  if ((下棋方 === 0)) {
    return 位置;
  } else {
    return (98 - 位置);
  }
}


when_get_signal('悔棋', function() {
  if ((棋子位置[棋子编号 - 1] >= 0)) {
    show();
    移到位置(null, null);
  } else {
    hide();
  }
});

when_get_signal('翻转', function() {
  if ((棋子编号 > 16)) {
    add_rotation(180);
  }
});

when_start(function() {
  棋子编号 = 设置棋子;
  设置棋子 = 设置棋子 + 1;
  if ((棋子编号 > 16)) {
    change_shape_by_index((棋子造型[(棋子编号 - 16) - 1] + 7));
  } else {
    change_shape_by_index(棋子造型[棋子编号 - 1]);
  }
  棋子位置.splice(self.棋子编号 - 1, 1, 当前位置());
  show();
});

when(function() {
  while (true) {
    if world.is_mouse_click() {
      if ((选择棋子 === 0 && Kitten.is_touched('Self', 'mouse'))) {
        if ((Math.floor(棋子编号 / 17) === 下棋方)) {
          world.say('举棋')
          send_layer_front();
          选择棋子 = 棋子编号;
          set_size('50');
        } else {
          world.say('错误')
        }
      } else if ((选择棋子 === 棋子编号)) {
        落子位置 = 当前位置();
        临时造型编号 = Kitten.value_of_object('Self', 'style_index');
        if ((临时造型编号 > 7)) {
          临时造型编号 = 临时造型编号 - 7;
        }
        if (落子判定(null, null, null, null)) {
          world.say('落子')
          set_size('40');
          历史记录.push(String(棋子位置));
          send_signal_and_wait('落子');
          选择棋子 = 0;
          移到位置(null, null);
          棋子位置.splice(self.棋子编号 - 1, 1, 当前位置());
          检测胜负();
          检测将军(null);
          下棋方 = 1 - 下棋方;
        } else {
          set_size('40');
          wait_for_sec(0);
          移到位置(null, null);
          world.say('错误')
          选择棋子 = 0;
        }
      } else {
      }
    }
  }
});

when_get_signal('落子', function() {
  if ((棋子位置[棋子编号 - 1] === 落子位置)) {
    world.say('吃')
    棋子位置.splice(self.棋子编号 - 1, 1, -1);
    hide();
  }
});

when(function() {
  while (true) {
    if (选择棋子 === 棋子编号) {
      move_to('mouse_pointer');
    }
  }
});
var 设置棋子 = 1
var 当前编号 = 0
var 选择棋子 = 0
var 临时造型编号 = 0
var 临时位置 = 0
var 临时方向 = 0
var 临时变量 = 0
var 下棋方 = 0
var 落子位置 = 0
var 判定将军 = 0
var 将军检测编号 = 0

var 棋子造型 = [5, 4, 3, 2, 1, 2, 3, 4, 5, 6, 6, 7, 7, 7, 7, 7];
var 棋子位置 = [];
var 方向 = [1, 10, '-1', '-10'];
var 九格位置 = [3, 4, 5, 13, 14, 15, 23, 24, 25];
var 斜角方向 = [11, 9, '-11', '-9'];
var 马跳方向 = ['-8', 12, 19, 21, 8, '-12', '-19', '-21'];
var 历史记录 = [];

when_get_signal('黑棋获胜', function() {
  world.say('胜利')
  send_layer_front();
  change_shape('黑方胜利');
  show();
  set_size('10');
  for (var _count = 0; _count < 10; _count++;) {
    add_size(5);
  }
  stop_project();
});

when_get_signal('红棋获胜', function() {
  Kitten.play_sound('胜利')
  send_layer_front();
  change_shape('红方胜利');
  show();
  set_size('10');
  for (var _count2 = 0; _count2 < 10; _count2++;) {
    add_size(5);
  }
  stop_project();
});

代码出错别找我()

eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee

 

 


回复

上一页1 页 / 共 1下一页
面具狐狸云绾兮面具狐狸云绾兮

我看这个好像不行吧,都没加引号

点赞1


评论


高贵的木叶龙A35d高贵的木叶龙A35d

妈耶,中文变量名,不愧是神畸代码师

点赞1


评论