1 #include<graphics.h> 2 #include<stdlib.h> 3 #include<stdio.h> 4 #include<conio.h> 5 #include<time.h> 6 #include<cmath> 7 8 int tile=1; 9 int board[100][100]; 10 int color[16] = { BLACK,GREEN,BLUE,CYAN,RED,YELLOW,WHITE,LIGHTMAGENTA, 11 LIGHTRED,LIGHTCYAN,LIGHTGREEN,LIGHTBLUE,DARKGRAY,LIGHTGRAY,BROWN,MAGENTA}; 12 13 void chessBoard(int tr, int tc, int dr, int dc, int size) 14 { 15 if(size==1) 16 return; 17 int t=tile++; 18 int s=size/2; 19 if(dr<tr+s && dc<tc+s) 20 chessBoard(tr, tc, dr, dc, s); 21 else 22 { 23 board[tr+s-1][tc+s-1]=t; 24 chessBoard(tr, tc, tr+s-1, tc+s-1, s); 25 } 26 if(dr<tr+s && dc>=tc+s) 27 chessBoard(tr, tc+s, dr, dc, s); 28 else 29 { 30 board[tr+s-1][tc+s]=t; 31 chessBoard(tr, tc+s, tr+s-1, tc+s, s); 32 } 33 if(dr>=tr+s && dc<tc+s) 34 chessBoard(tr+s, tc, dr, dc, s); 35 else 36 { 37 board[tr+s][tc+s-1]=t; 38 chessBoard(tr+s, tc, tr+s, tc+s-1, s); 39 } 40 if(dr>=tr+s && dc>=tc+s) 41 chessBoard(tr+s, tc+s, dr, dc, s); 42 else 43 { 44 board[tr+s][tc+s]=t; 45 chessBoard(tr+s, tc+s, tr+s, tc+s, s); 46 } 47 } 48 49 void main() 50 { 51 int i,j; 52 int size; 53 int index_x,index_y; 54 printf("请输入棋盘边长(必须是2的K次幂) "); 55 scanf("%d",&size); 56 printf("请输入棋盘中要覆盖点的坐标: "); 57 scanf("%d%d",&index_x,&index_y); 58 initgraph(640,640); 59 chessBoard(0,0,index_x,index_y,size); 60 BeginBatchDraw(); 61 int S=size*size; 62 for(int k=0;k<S;k++) 63 { 64 i=k/size; 65 j=k%size; 66 setfillcolor(color[board[i][j]%15]); 67 solidrectangle(40*j,(40+40*i),(40+40*j),40*i); 68 } 69 FlushBatchDraw(); 70 EndBatchDraw(); 71 getch(); 72 closegraph(); 73 }