1,跳棋棋盘怎么画

跳棋棋盘的画法下载 跳棋棋盘的画法下载 文件下载地址: http://www.namipan.com/d/00ec8f0 ... a96c8c1f25fc1f82000
一副跳棋就两块钱吧?还有字,至于自己画吗? 百度一下。
画两个大的等边三角形,然后两个三角形交叉。
用笔画的画直接用一个文稿纸就行了,凑合玩吧~

跳棋棋盘怎么画

2,vc开发五子棋怎么让玩家落棋时正好落到那个交点上是怎么判断的

得有一个换算关系,就是实际位置和棋盘位置的转换。像你说的,假如棋盘的左上角(xa,ya)就是你棋盘中最左上角的交点,那么它的棋盘位置就是(0,0),实际位置是(xa,ya),以此类推,一个方格的边长为S,那对应棋盘(0,1)这个位置的实际位置就是(xa,ya+S),(0,2)就是(xa,ya+2S),....(1,0)就是(xa+S,ya),....交点上下左右二分之一个方格距离围成的矩形,当有点落入此范围内,那么棋子的圆心就判定为是这个交点,例如对于(1,1)这个点,当点在CRect((xa+1/2 S,ya+1/2 S),(xa+3/2 S,ya+3/2 S))这个矩形内时(有个PtInRect函数),棋子的原点为(xa+S,ya+S),当然实际应用中得用到一个循环,和棋盘上所有交点进行比较,通式是for(int i=0;i<=m-1;i++)for(int j=0;j<=n-1;j++)CRect((xa+1/2 S+iS,ya+1/2 S+jS),(xa+3/2 S+iS,ya+3/2 S+jS))这样转化为棋盘位置的好处就在于便于用一个数组维护,判断交点上有无子,是什么子,判断胜利条件,置子,悔棋等等在这个基础上操作会很容易。最后还有一点就是你所用的单位应该是象素,还有不知道你这个棋盘是用代码画上去的还是直接应用一个现成的棋盘图,如果是手绘上去的这些转换关系你应该很清楚了,如果用的是现成的棋盘图那这些转换关系就得慢慢试了。以上就是我的方法。
#include #include void maps(int*); int valid(int a[10][10],int,int); int win(int a[10][10],int,int,int); void main() { int a[10][10],i,j,s1,*a1,k; a1=&a[0][0]; for (i=0;i<10;i++) for (j=0;j<10;j++) a[i][j]=0; k=1; maps (a1); for (s1=0;s1<100;s1++) { k=-k; printf ("\nplayer %d input your line and row",k); scanf ("%d%d",&j,&i); if (valid(a,i,j)==1) { s1=s1-1; printf ("\ninvalid place!!"); k=-k; continue; } else a[i][j]=k; maps (a1); if (win (a,i,j,k)==1) { printf ("\nplayer %d win!",k); break; } } getch(); } void maps(int *a1) { int x,y; printf (" 0 1 2 3 4 5 6 7 8 9 \n"); for (x=0;x<10;x++) { printf ("%d",x); for (y=0;y<10;y++) { if (*(a1 +10*x+y)==1) { printf(" * "); continue; } if (*(a1 +10*x+y)==-1) printf(" @ "); else printf(" . "); } printf("\n"); } } int valid(int a[10][10],int i,int j) { if (i>9) return 1; if (j>9) return 1; if (a[i][j]==0) return 0; return 1; } int win(int a[10][10],int i,int j,int k) { int x,y; //for (y=j;y<10;y++) for (y=j;y<10;y++) { if (a[i][y]!=k) break; //return 1; } if( y>=j+5 ) return 1; //for (x=i;x<10;x++) for (x=i;x<10;x++) { if (a[x][j]!=k) break; //return 1; } if( x>=i+5 ) return 1; int count = 0; //for (x=i,y=j;x<10||y<10;x++,y++) for (x=i,y=j;x<10&&y<10;x++,y++) { if (a[x][y]!=k) break; count++; } if( count>=5 ) return 1; for (x=i-1,y=j-1;x>i-5&&x>=0&&y>=0;x--,y--) { if (a[x][y]!=k) break; count++; } if( count>=5 ) return 1; count = 0; //for (x=i,y=j;x<10||y>-1;x++,y--) for (x=i,y=j;x<10&&y>=0;x++,y--) { if (a[x][y]!=k) break; count++; } if( count>=5 ) return 1; for (x=i-1,y=j+1;x=0&&y<10;x--,y++) { if (a[x][y]!=k) break; count++; } if( count>=5 ) return 1; return 0; }

vc开发五子棋怎么让玩家落棋时正好落到那个交点上是怎么判断的


文章TAG:棋手  手绘  绘图  怎么  跳棋手绘图怎么画  
没有了