1 #include <stdio.h>
2 #include <stdlib.h>
3 /*
4 天生棋局
5 */
6 #define N 10
7 //1.传入一个n在堆空间中产生n*n方格的棋盘(生成一个n*n的二维空间)
8 int **createboard(int n)
9 {
10 int **p = (int **)malloc(n*sizeof(int*));
11 for(int i = 0;i<n;i++)
12 {
13 p[i] = (int *)malloc(n*sizeof(int));
14 }
15
16 return p;
17 }
18 //2.N颗棋子随机落在棋盘上<需要防止落在同一位置上>
19 void initboard(int **p,int n)
20 {
21 int i,j;
22
23 i = rand()%N;
24 j = rand()%N;
25 p[i][j] = 'x';
26 n -= 1;
27 while(n--)
28 {
29
30 i = rand()%N;
31 j = rand()%N;
32 while(p[i][j] == 'x')
33 {
34 i = rand()%N;
35 j = rand()%N;
36 }
37 p[i][j] = 'x';
38 }
39 }
40 //3.打印棋盘,没旗子的用o表示,有棋子的用X表示
41 void printboard(int **p)
42 {
43 int i,j;
44
45 for(i = 0;i<N;i++)
46 {
47 for(j = 0;j<N;j++)
48 {
49 if(p[i][j] == 'x')
50 printf("%c\t",p[i][j]);
51 else
52 printf("%c\t",'o');
53 }
54 putchar(10);
55 }
56 }
57 int main(void)
58 {
59 int ** p = createboard(N);//生成N*N二维空间
60 initboard(p,20);//随机放入20个棋子
61 printboard(p);//打印棋盘
62
63 return 0;
64 }