中国象棋 C语言编程
双人对弈中国象棋 程序所负责内容介绍 计算机生成红黑双方以及棋盘。 各个棋子的移动。 当危险时显示被“将军”。 分支思路 1.棋盘棋子的制作与输出 棋盘 走子加规则 计算机生成红黑双方以及棋盘 第一想法 第二想法→有子无子两种状态分别对应0和非0 判断是否为0 调用shift函数 调用broad函数 非0 为0 对每个位置赋值 输出 走子加规则 分支思路 1.走子的完成加走子的规则。 棋盘 各个棋子的移动 获取移动位置的方法:运用坐标 判断是否合法 重新输出整个棋盘 移动的实现方法 首先让玩家输入要移动的位置,然后输入要走到的位置 将前者的位置的值赋给后者位置,同时将前者位置值赋值为0,再次输出各个位置。 判断移动是否合法 首先判断是否吃的是自己的子 然后判断是否满足规则 (定义一个变量j并初始化为1,每次一旦判断移动不合法时,就让 j=0; 输出时j=0时不输出,这就保证了只有合法移动)。 当危险时显示被“将军” “将军”情况复杂,如何判断将军呢 判断将军的方法 首先得先找到对方老将的位置 以移动的子落点位置为起始位置,以对方老将位置为要移动到的位置,调用规则函数验证,如果可以吃到,则显示 “将军!”。 以上内容就是我所负责的模块以及解决思路 走子加规则 分支思路 1.走子的完成加走子的规则。 棋盘 1. 规则。 常见规则 1.自己的棋子不能吃己方棋子。利用各方棋子的 值 的范围。 2.判断是否走出棋盘 ,跟据二维数组的的定义范围来判断。 ├ ┬ ┬ ┬ ┬ ┬ ┬ ┬ ┤ ├ ┼ ┼ ┼ ┼ ┼ ┼ ┼ ┤ ├ ╬ ┼ ┼ ┼ ┼ ┼ ╬ ┤ ├ ┼ ┼ ┼ ╳┼ ┼ ┼ ┤ └ ┴ ┴ 2 1 2 ┴ ┴ ┘ 具体的棋子走子规则 数学方法解决,判断棋子的初始值从而对应不同的走法% 10┌ ┬ ┬ ┬ ┬ ┬ ┬ ┬ ┐ 9├ ┼ ┼ ┼ ╳┼ ┼ ┼ ┤ 8├ ╬ ┼ ┼ ┼ ┼ ┼ ╬ ┤ 7├ ┼ ┼ ┼ ┼ ┼ ┼ ┼ ┤ 6├ ┴ ┴ ┴ ┴ ┴ ┴ ┴ ┤ 5├ ┬ ┬ ┬ ┬ ┬ ┬ ┬ ┤ 4├ ┼ ┼ ┼ ┼ ┼ ┼ ┼ ┤ 3├ ╬ ┼ ┼ ┼ ┼ ┼ ╬ ┤ 2├ ┼ ┼ ┼ ╳ ┼ ┼ ┼ ┤ 1└ ┴ ┴ ┴ ┴ ┴ ┴ ┴ ┘ 1 2 3 4 5 6 7 8 9 将 只能在九格宫内 一次一步走直线 仕 只能在九格宫内走斜线,一次距离横纵坐标为1 象 象走田,不过河,别象腿。 马 马跳日, 别马腿。 车 走直线,中间无挡子 炮 炮有 支架 ,不可以以空打 兵 过河前走直线向前,河后可以平移。不可后退 Step 3 Goal! 走之前保存要走位置的棋子的数学信息。 Step 2 走之后保存要走到位置的棋子的数学信息 如果悔棋,将原来的值重新覆回到棋盘中 完成 悔棋程序 Step 1 简单的方法 判断九格宫内是否存在帅的数学值 判断输赢 2. 3. 1. 每走一步就利用循环覆给三维数组 棋子的步数可以利用赋值之后++ 三维数组a[棋子的步数][横坐标] [纵坐标] 当需要输出 时就可以输出了 复盘 Thank you ! * * * * * * * * * * * * * * * *