永发信息网

有中国象棋C++的编写程序的来

答案:2  悬赏:0  手机版
解决时间 2021-12-31 21:37
  • 提问者网友:轻浮
  • 2021-12-31 08:38
谁有中国象棋的C++编写程序啊 急要啊 复制给我啊 只要能运行出来我就给他加悬赏分 谢谢拉!!!
最佳答案
  • 五星知识达人网友:往事埋风中
  • 2021-12-31 10:09
用位图bitmap,在添加的资源文件里,然后可以用bitblt输出,你去网上下载《vc++游戏编程》,百度文库里就有,你看一段程序就懂了
全部回答
  • 1楼网友:千杯敬自由
  • 2021-12-31 11:42
棋盘先设定好,a:array[1..10][1..9] of MapStruct; 是个二维数组,每个单元符全自定义的棋盘结构 不要定义一个棋字结构 int StepJudge(int oldx,int oldy,int nowx,int nowy) { int index,count=0; int nox,noy; int x,y,x1,x2,y1,y2; BYTE ChessId; ChessId=map[oldx][oldy].Id; if(ChessId==NONE) return 0; if(oldx==nowx&&oldy==nowy) return 0; if(nowx>8||nowx<0||nowy<0||nowy>9) return 0; nox=nowx-oldx;noy=nowy-oldy; switch(map[oldx][oldy].num) { case 0:将或帅 { if(map[nowx][nowy].num==0&&map[nowx][nowy].Id!=NONE&&oldx==nowx) { y1=oldy;y2=nowy; if(nowy<oldy) Swap(&y1,&y2); for(y=y1+1;y<y2;y++) if(map[nowx][y].Id!=NONE) count++; if(count==0) return 1; } if(abs(nox)>1||abs(noy)>1||abs(nox)==1&&abs(noy)==1) return 0; if(nowy>2&&nowy<7||nowx<3||nowx>5) return 0; break; } case 14: case 15:车 { if(abs(nox)!=0&&abs(noy)!=0) return 0; if(abs(nox)>1&&noy==0) { x1=oldx;x2=nowx; if(nowx<oldx) Swap(&x1,&x2); for(x=x1+1;x<x2;x++) if(map[x][nowy].Id!=NONE) return 0; } if(nox==0&&abs(noy)>1) { y1=oldy;y2=nowy; if(nowy<oldy) Swap(&y1,&y2); for(y=y1+1;y<y2;y++) if(map[nowx][y].Id!=NONE) return 0; } break; } case 10: case 11:马 { if(abs(nox)==2&&abs(noy)==1||abs(nox)==1&&abs(noy)==2) { if(abs(nox)==1&&map[oldx][oldy+noy/2].Id!=NONE) return 0; if(abs(nox)==2&&map[oldx+nox/2][oldy].Id!=NONE) return 0; break; } else return 0; } case 12: case 13:炮 { if(abs(nox)>0&&abs(noy)>0) return 0; if(abs(nox)>0&&noy==0) { x1=oldx;x2=nowx; if(nowx<oldx) Swap(&x1,&x2); for(x=x1+1;x<x2;x++) if(map[x][nowy].Id!=NONE) count++; } else if(nox==0&&abs(noy)>0) { y1=oldy; y2=nowy; if(nowy<oldy) Swap(&y1,&y2); for(y=y1+1;y<y2;y++) if(map[nowx][y].Id!=NONE) count++; } if(count==0&&map[nowx][nowy].Id!=NONE) return 0; if(count==1&&map[nowx][nowy].Id==NONE) return 0; if(count>1) return 0; break; } case 3: case 4:象或相 { if(abs(nox)!=2||abs(noy)!=2) return 0; else if(map[oldx+nox/2][oldy+noy/2].Id!=NONE) return 0; if(nowy==0||nowy==4||nowy==5||nowy==9) if(nowx==2||nowx==6) break; if(nowy==2||nowy==7) if(nowx==0||nowx==4||nowx==8) break; } case 1: case 2:士或仕 { if(abs(nox)!=1||abs(noy)!=1) return 0; if(nowy>2&&nowy<7||nowx<3||nowx>5) return 0; break; } case 5: case 6: case 7: case 8: case 9: 兵或卒 { if(abs(nox)>0&&abs(noy)>0) return 0; if(ChessId==GREEN&&GreenChess[0].y<3||ChessId==RED&&RedChess[0].y<3) { if(oldy>4) { if(nox==0&&noy!=1) return 0; if(abs(nox)!=1&&noy==0) return 0; } if(oldy<5) if(nox!=0||noy!=1) return 0; } if(ChessId==GREEN&&GreenChess[0].y>6||ChessId==RED&&RedChess[0].y>6) { if(oldy<5) { if(nox==0&&noy!=-1) return 0; if(abs(nox)!=1&&noy==0) return 0; } if(oldy>4) if(nox!=0||noy!=-1) return 0; } index=map[oldx][oldy].num; if(ChessId==GREEN) if(GreenChess[0].y<3&&GreenChess[index].y>4||GreenChess[0].y>6&&GreenChess[index].y<5) GreenChess[index].FixLevel=ADVANCED_SOLDIER_LEVEL; if(ChessId==RED) if(RedChess[0].y<3&&RedChess[index].y>4||RedChess[0].y>6&&RedChess[index].y<5) RedChess[index].FixLevel=ADVANCED_SOLDIER_LEVEL;//兵过河后等级值加1 break; } } if(ChessId==map[nowx][nowy].Id) return 2; else return 1; }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯