- 863 名前:858じゃないけど mailto:sage [02/09/22 03:31]
- はさみ将棋 現在9行+3文字 とりあえず動く版を作成
ルールは●○を縦横に移動させ、相手をはさむと取れます ただし、辺を使ってはさんでも無効です 角をはさむのは正式ルールなのかわからなかったので、今のところ無効 移動方法は移動元(x,y)と移動先(m,n)の4整数で指定、左上が(1,1) 1 2 3 4 [RET] コンピュータの思考ルーチンはまだなので、ランダムに移動します 今は、関数c()で動作を決めるようになっているので、どなたか作成をば! 変数vが移動元で変数zが移動先になってまつ。 int w[]={1,-1,12,-12},h[3],b[132],u=1,z,y,m,n,i=132,v,d=1;r(p,a,f,z){if(b[z=p+w [a]]==(u^3)){d++;r(z,a,f);f?b[z]=0:0;}if(b[z]==3||!b[z])d=0;}o(x,y,m,n){d=0;z=x +y*12;v=m+n*12;if((x!=m&&y!=n)||b[z]!=u||b[v]!=0)d=1;if(x==m){for(;y++<n;)d+=b[ x+y*12];}else if(y==n){for(;x++<m;)d+=b[x+y*12];}}c(){for(d=1;d;){for(i=132;i-- ;)if(b[i]==2)v=i,i=0;z=rand()%132;o(v%12,v/12,z%12,z/12);}}main(x){for(;i--;b[i ]=z-11?z&&z-10&&i-12U<109?z-1?z-9?0:2:1:3:4)z=i%12;for(;;){printf("%d:%d %d\n", u,h[1],h[2]);for(i=11;i++<131;)printf("・\0●\0○\0 \0\n"+b[i]*3);if(h[2]>7||h [1]>7)break;if(u<2){scanf("%d%d%d%d",&x,&y,&m,&n);o(x,y,m,n);if(d&&puts("Err")) continue;}else c();b[z]=0;for(i=4;i--;d?r(v,i,1):0)r(v,i,0),h[u]+=d;b[v]=u;u^=3;}}
|

|