在2d数组中移动字符

时间:2016-11-06 03:39:11

标签: c

我试图制作一个8 x 8的跳棋游戏。我试图移动连字符' _'在2d数组中选择字符' X'我想要的。我创建了if语句来检测连字符' _'但似乎我的代码不起作用,我真的需要帮助。我是编程新手。

#include <stdio.h>

void gameboard(char board[8][8])
{

 int x, y;

  for(x=0; x<8; x++)
  {
   for(y=0; y<8; y++)
    {
    printf("=---=");
    }
    printf("\n\n");

    for(y=0;y<8;y++)
    {
    printf("| %c |",board[x][y]);
    }
    printf("\n\n");
  }


  for(x=0;x<8;x++)
  {
  printf("=---=");
  }


}

void character(char board[8][8])
{
 int x,y;

 for(x=0;x<8;x++){
   for(y=0;y<8;y++){
    if(x<3){

       if(x%2 == 0){
              if(x%2 == 0){
              board[x][y] = 'O';

              }
              if(y%2==1){
              board[x][y]= ' ';

              }
       }
       if(x%2 == 1){
              if(y%2 == 0){
              board[x][y] = ' ';
               }
              if(y%2 ==1){
             board[x][y]= 'O';

              }
       }

    }

    if((x==3) || (x==4)){
    board[x][y] = ' ';
    } 

    if(x>4)
    {

           if(x%2 == 0){
                  if(y%2 == 0){
                  board[x][y] = 'X';

                  }
                  if(y%2 ==1){
                  board[x][y]= ' ';

                  }
           }

           if(x%2 == 1){
                  if(y%2 == 0){
                  board[x][y] = ' ';

                   }
                  if(y%2 ==1){
                  board[x][y]= 'X';

                  }
           }

          if(x==5 && y ==1)
          { 
          if(x%2 == 1){
                  if(y%2 == 1){
                  board[x][y] = '_';
                  }
                 }
            }        
    }

    }
   }

}


void playgame(char board[8][8])
{

 int x=0, y=0, a, b, c=0,input;
 char token;


 printf("\n\n---START GAME---\n");



     if(token == '_')
  {
    printf("Please select your token : ");
    }

 for(a=0; a<8; a++)
 {
  for(b=0; b<8; b++)
   {
    if(board[a][b] == token & c == 0)
    {
     x = a;
     y = b;
     c++;
     }
    }
 }

  printf("1 to go right\n");
  printf("2 to go left\n");
  printf("3 to go up left\n");
  printf("4 to go up right\n");
  printf("5 to go down left\n");
  printf("6 to go down right\n");
  printf("7 to select token\n");
  fflush(stdin);
  scanf("%i", &input);

   if(input == 1)
   {
    board[x][y+2] = token;
    y++;
    }
   else if(input == 2)
    {
     board[x][y-2] = token;
     y--;
     }
    else if(input == 3)
     {
     board[x-1][y-1] = token;
     x--;
     y--;
     }
     else if(input == 4)
     {
     board[x-1][y+1] = token;
     x--;
     y++;
     }
     else if(input == 5)
     {
      board[x+1][y-1] = token;
      x++;
      y--;
     }
     else if(input == 6)
     {
      board[x+1][y+1] = token;
      x++;
      y++;
      }
      else
      {
      board[x][y] = token;
      }
}


int main()
{

  char bx[8][8];


  gameboard(bx);

  playgame(bx);

 return 0;

}

1 个答案:

答案 0 :(得分:0)

您必须初始化数组,然后使用def funcParser( funcs : immutable.Set[Func] ) : Parser[Func] = { val funcsByName = funcs.map( func => (func.name, func) ).toMap val baseParser = funcsByName.keySet.foldLeft( failure("not a function name") : Parser[String] )( ( nascent, next ) => nascent | literal( next ) ) baseParser.map( processedNamesToFunctions ) } 语句根据输入计算新位置。

保存旧位置,并将新单元格的内容与保存位置中旧单元格的内容交换。

switch