棋盘打印程序
如何在电脑上打印棋盘,一头雾水闷逼状态,当遇到问题时把问题拆分,逐个去解决。其实还是思路的重要性,不懂就学别人找方法,现在网上教程很多,学学别人的思路,但是要思考。其实不思考都不行有没有一模一样的程序等你来抄,只能一次一次的看程序苦逼啊,直到理解如何上手试试,发现试试就逝世。根本写不出来,然后再看在写,写多了就会了毕竟套路就这么都,慢慢学总会放弃的。
放弃 学会了就不用学这种思想,我才学就 感到程序这玩意可以一辈子都学不完了。边学边用边脑壳痛还要加上脱发困扰,毕竟有前辈之见,聪明绝绝子。
思路
打印棋盘顾名思义,要用到打印程序printf();,然后就是如何打印
无限的拆分
程序世界是现实世界的映射 ,整体是由个体组成的,对要打印的整体进行拆分,
先拆成无数行。
在一行中拆成无数列,找到最小组成颗粒并找到规律,然后for()循环走起。
先整体在细节
现实世界上没有相同的物质,程序世界上也没有一条程序解决所有问题,找到大体的规律先循环起来
在使用if()对其中细小的不同进行筛选, 求同存异 ,先让程序跑起来,在调试细节问题。
void DisPlayBoard(char board[ROW][COL], int row, int col)
{
  int i = 0;//行的循环变量
  int j = 0;//列的循环变量
  for (i = 0; i < row; i++)//确定行的范围
  {
    for (j = 0; j < col; j++)//确定列的范围
    {
      printf(" %c ", board[i][j]);
      if (j < col - 1)//规定最后一个“|”不打印
      {
        printf("|");
      }
    }
    printf("\n");//每一行分两组
    if (i < row - 1)//规定最后一行“---|”不打印
    {
      for (j = 0; j < col; j++)
      {
        printf("---");
        if (j < col - 1)
        {
          printf("|");
        }
      }
    }
    printf("\n");
  }
    
}
另一种棋盘
void DisPlayBoard(char board[ROW][COL], int row, int col)
{
  int i = 0;
  int j = 0;
  for (i = 0; i < row + 1; i++)//行 循环四次
  {
    for (j = 0; j < col + 1; j++)//列 循环四次
    {
      if (j < col)//规定“___”第四次不打印
      {
        printf(" ___");
      }   
    }
    printf("\n");
    if(i<row)//第四行不打印下面程序
    for (j = 0; j < col + 1; j++)
    {
      printf("|");
      if (j < col)
      {
        printf(" %c ", board[i][j]);
      }
    }
    printf("\n");
  }
}
开始游戏用户落子
用户落子如何实现,落子的本质就是输入数组坐标然后改变数组元素。记住 道生一,一生二,二生三,三生万物 。
输入坐标,产生奇点
坐标输入正确,在数组范围
 对 (把用户输入的元素赋予该坐标)
坐标所对应的元素没有被使用
奇点 (不管对错都会产生结果)
错
用户坐标输入错误进入循环重新输入
(有一个BUG,数组满了怎么办,不能一直因为错误造成死循环)
奇点产生 ,不管对错都会产生结果,对的就打印一下棋盘显示用户输入结果。
int x = 0;//接收用户输入的行坐标
  int y = 0;//接收用户输入的列坐标
  
  while (1)
  {
    printf("大聪明走\n");
    printf("输入坐标:>\n");
    scanf("%d%d", &x, &y);
    if (x >= 1 && x <= ROW && y >= 1 && y <= COL)//判断用户输入的坐标有没有超出数组范围
    {
      if (board[x-1][y-1] == ' ')//判断棋盘是否有空位
      {
        board[x-1][y-1] = '*';
        break;
      }
      else
      {
        printf("该坐标被占用\n");
      }
    }
    else
    {
      printf("输入坐标错误,重新输入\n");
    }
  }电脑落子
如何实现电脑落子
如果不考虑智能只是随机落子,可以使用函数rand(),注意函数的使用方法。
rand()%n
n 是什么,%是取模的意思,n就是阶码的意思,既是逢n进位,取模 0 到 n-1 的范围
int x = 0;
  int y = 0;
  printf("电脑小心翼翼的走了一步,它想赢\n");//提醒用户电脑走了一步
  //调用生成随机数要先设置  srand()
  while (1)//直到电脑生成对的坐标
  {
    x = rand() % row;//生成随机数 模3的余数是 0 1 2,正好在数组坐标范围
    y = rand() % col;//生成随机数 因为模了一下 范围固定
    if (board[x][y] == ' ')
    {
      board[x][y] = '#';
      break;
    }
  }









