C语言编程立体四子棋

2025-01-31 12:41:42
推荐回答(1个)
回答1:

  给个判断胜利的算法你,具体自己完善。

  //一个立四方体用不同的面进行切割可切割成12个不重复的面,对每个面调用isWin()函数,以下是伪代码

  void main()
  {
  int board[4][4][4]={1,1,2,2...1,2,1}
  int cube[][];
  for(i=0;i<4;i++)
  {
  cube[][]=board[i][][];
  if(isWin(cube))
  {
  printf("win");
  return;
  }
  cube[][]=board[][i][]
  if(isWin(cube))
  {
  printf("win");
  return;
  }
  cube[][]=board[][][i]
  if(isWin(cube))
  {
  printf("win");
  return;
  }

  }

  //判断一个面是否构成四连
  int isWin(int cube[][])
  {
  //判断所有行的四个棋子是否一样
  for(i=0;i<4;i++)
  if(cube[i][0]==cube[i][1]==cube[i][2]==cube[i][3])
  return true;
  //判断所有列的四个棋子是否一样
  for(i=0;i<4;i++)
  if(cube[0][i]==cube[1][i]==cube[2][i]==cube[3][i])
  return true;
  //判断对角线的四个棋子是否一样
  if(cube[0][0]==cube[1][1]==cube[2][2]==cube[3][3])
  return true;
  if(cube[0][3]==cube[1][2]==cube[2][1]==cube[3][0])
  return true;

  return false;
  }

  }