#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
static int LEN = 7;
#define DIV_UP(a, b) ((a + b - 1) / b)
#define WALL "* "
static int NUM = 0;
static int walls = 3;
int rand_num[100] = {0};
void draw_col(int len) {
int flag = 0;
for (int i = 0; i < len; i++) {
for (int j = 0; j < LEN - flag; j++) {
printf(WALL);
}
flag = 1;
}
printf("\n");
}
void row_with_blank(int len) {
//len = (len - 1) * LEN + 1;
for (int i = 0; i < len; i++) {
printf(WALL);
for (int j = 0; j < LEN - 2; j++) {
printf(" ");
}
}
printf(WALL);
printf("\n");
}
void row_with_digit(int len) {
for (int i = 0; i < len; i++) {
printf(WALL);
int col_blank = (LEN - 3) / 2;
for (int j = 0; j < col_blank; j++) {
printf(" ");
}
if (rand_num[NUM] <= 9) printf("%d ", rand_num[NUM++]);
else printf("%d", rand_num[NUM++]);
for (int j = 0; j < col_blank; j++) {
printf(" ");
}
}
printf(WALL);
printf("\n");
}
void draw(int len) {
//draw_col(len);
for (int i = 0; i < len; i++) {
draw_col(len);
int row_blank = (LEN - 3) / 2;
for (int j = 0; j < row_blank; j++) {
row_with_blank(len);
}
row_with_digit(len);
for (int j = 0; j < row_blank; j++) {
row_with_blank(len);
}
}
draw_col(len);
printf("\n");
}
void parse_opt(int argc, char** argv) {
char ch;
while ((ch = getopt(argc, argv, "n:g:")) != -1) {
switch (ch) {
case 'n':
walls = atoi(optarg);
break;
case 'g':
LEN = atoi(optarg);
LEN |= 1;
break;
}
}
}
void make_random() {
int nums = walls * walls;
int ind = rand() % nums;
for (int i = 1; i <= nums; i++) {
while (rand_num[ind] != 0) {
ind = rand() % nums;
}
rand_num[ind] = i;
}
}
int main(int argc, char** argv) {
parse_opt(argc, argv);
srand(time(0) ^ getpid());
make_random();
int times = 0;
while (1) {
NUM = 0;
char buf[10] = {0};
FILE* fp = popen("clear", "r");
fread(buf, 1024, 1, fp);
pclose(fp);
printf("%s", buf);
int n;
printf("%d total: %d\n", times, walls * walls);
draw(walls);
sleep(1);
times++;
}
return 0;
}
C语言生成舒尔特方格 -- 注意力训练
最新推荐文章于 2023-08-03 18:18:21 发布