规则我就不介绍了,就几十行的代码自己看吧。

#include<bits/stdc++.h>
using namespace std;
int dy[8]={-1,1,2,2,1,-1,-2,-2};
int dx[8]={-2,-2,-1,1,2,2,1,-1};
int a[30][30];
int bo=0,b,r,ax,ay,bx,by;
string s;
int main(){
	//printf("%d",'0');
	for(int i=0;i<=13;i++){
		for(int j=0;j<=13;j++){
			a[i][j]=1;
		} 
	}
	ax=2,ay=2;
	bx=11,by=11;
	a[2][2]=21;
	a[11][11]=22;
	while(bo==0){
		bo=1;
		for(int i=2;i<=11;i++){
			for(int j=2;j<=11;j++){
				b=0;
				if(a[i][j]==21) printf("A");
				else if(a[i][j]==22) printf("B");
				else if(a[i][j]==0) printf(" ");
				else {
					for(int k=0;k<8;k++){
						if(a[i+dx[k]][j+dy[k]]==21){
							printf("%d",k+1);
							bo=0;
							b=1;
						}
					}
					if(b==0){
						printf("O");
					}
				}
				
			}
			printf("\n");
		}		
		if(bo==1){
			printf("\nB win");
			return 0;
		}
		cin >> s;
		r=s[0]-1;
		r=(r+4)%8;
		if(ax+dx[r]<2 || ay+dy[r]<2 || ax+dx[r]>11 || ay+dy[r]>11 || a[ax+dx[r]][ay+dy[r]]!=1){
			printf("输入错误\n");
		}
		else {
			a[ax][ay]=0;
			ax+=dx[r],ay+=dy[r];
			a[ax][ay]=21;
		}
		bo=1;
		for(int i=2;i<=11;i++){
			for(int j=2;j<=11;j++){
				b=0;
				if(a[i][j]==21) printf("A");
				else if(a[i][j]==22) printf("B");
				else if(a[i][j]==0) printf(" ");
				else {
					for(int k=0;k<8;k++){
						if(a[i+dx[k]][j+dy[k]]==22){
							printf("%d",k+1);
							bo=0;
							b=1;
						}
					}
					if(b==0){
						printf("O");
					}
				}
				
			}
			printf("\n");
		}
		if(bo==1){
			printf("\nA win");
			return 0;
		}
		cin >> s;
		r=s[0]-1;
		r=(r+4)%8;
		if(bx+dx[r]<2 || by+dy[r]<2 || bx+dx[r]>11 || by+dy[r]>11 || a[bx+dx[r]][by+dy[r]]!=1){
			printf("输入错误\n");
		}
		else {
			a[bx][by]=0;
			bx+=dx[r],by+=dy[r];
			a[bx][by]=22;
		}	
	}
	printf("\nA win");
	return 0;
}