阉割版
少了半边车马炮,没考虑马在边角的情况,没考虑吃子的情况
代码如下:
#include<stdio.h>
struct xinxi{
int che1, che2, ma1, ma2, pao1, pao2, bjiang1 = 3, bjiang2 = 3, rjiang1 = 10, rjiang2 = 3;
};
int che(xinxi wz2){
if (wz2.che1 == wz2.rjiang1 || wz2.che2 == wz2.rjiang2)
return 1;
}
int ma(xinxi wz2){
int i, j;
for (j = 0; j < 2; j++) {
for (i = 0; i < 2; i++) {
wz2.ma1 -= 1; wz2.ma2 -= 2;
if (wz2.ma1+i*2==wz2.rjiang1&&wz2.ma2+j*2==wz2.rjiang2)
return 1;
wz2.ma1 += 2;
if (wz2.ma1 - i * 2 == wz2.rjiang1&&wz2.ma2 + j * 2 == wz2.rjiang2)
return 1;
}
}
}
int pao(xinxi wz2){
if (wz2.che1 == wz2.pao1 || wz2.che2 == wz2.pao2 || wz2.ma1 == wz2.pao1 || wz2.ma2 == wz2.pao2 || wz2.bjiang1 == wz2.pao1 || wz2.bjiang2 == wz2.pao2)
{
if (wz2.pao1 == wz2.rjiang1 || wz2.pao2 == wz2.rjiang2) { return 1; }
}
else return 3;
}
int jiang(xinxi wz2){
if (wz2.che2 != wz2.bjiang2&&wz2.ma2 != wz2.bjiang2&&wz2.pao2 != wz2.bjiang2&&wz2.bjiang2 == wz2.rjiang2)
return 1;
}
int check(xinxi wz2) {
return che(wz2) && ma(wz2) && che(wz2) && jiang(wz2);
}
int main() {
xinxi wz;
int i, j;
scanf_s("%d%d%d%d%d%d", &wz.che1, &wz.che2, &wz.ma1, &wz.ma2, &wz.pao1, &wz.pao2);
scanf_s("%d%d%d%d", &wz.bjiang1, &wz.bjiang2, &wz.rjiang1, &wz.rjiang2);
switch (wz.rjiang2) {
case 8: wz.rjiang2 += 1; if (check(wz))printf("1");
case 9: wz.rjiang2 += 1; check(wz); wz.rjiang2 -= 2; if (check(wz))printf("1");
case 10: wz.rjiang2 -= 1; if (check(wz))printf("1");
}
switch (wz.rjiang1) {
case 3: wz.rjiang1 += 1; if (check(wz))printf("1");
case 4: wz.rjiang1 += 1; check(wz); wz.rjiang1 -= 2; if (check(wz))printf("1");
case 5: wz.rjiang1 -= 1; if (check(wz))printf("1");
}
return 0;
}