Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 提供循环语句,强制玩家将游戏块放置在图形数组的底行_C_Linux_Gcc - Fatal编程技术网

C 提供循环语句,强制玩家将游戏块放置在图形数组的底行

C 提供循环语句,强制玩家将游戏块放置在图形数组的底行,c,linux,gcc,C,Linux,Gcc,嗨,我一直在为游戏connect 4构建一个C代码。游戏将有单人对简易人工智能/硬人工智能,最后是双人模式。游戏板和列选择在你放下游戏块的地方,所有的工作都在此时进行,我只是想花点时间/if或for/if工作,让游戏块始终从游戏板的底部开始,并在矩阵中向上循环,直到它在用户选择的列中找到一个空白点 这就是我现在所做的,我在不同的方法上尝试了几次不成功的尝试,现在我相信我已经完全混合了糟糕的语法。我用gcc编译 #include <stdio.h> #include <stdli

嗨,我一直在为游戏connect 4构建一个C代码。游戏将有单人对简易人工智能/硬人工智能,最后是双人模式。游戏板和列选择在你放下游戏块的地方,所有的工作都在此时进行,我只是想花点时间/if或for/if工作,让游戏块始终从游戏板的底部开始,并在矩阵中向上循环,直到它在用户选择的列中找到一个空白点

这就是我现在所做的,我在不同的方法上尝试了几次不成功的尝试,现在我相信我已经完全混合了糟糕的语法。我用gcc编译

#include <stdio.h>
#include <stdlib.h>

// function: check
// input: takes user [5][*]
// output: completes check to place the users '@' piece on board, if row 6 is taken it moves to row 5 and so on.

int space_1 (char b[][]) {
int k,x
while (b[][] == '@' || '#'){
    for (k=5;k>5;k--){
        if (b[k][x] == ' '){            
        board[k][x] = '@';
        }
    }
}
}
// function: check
// input: takes user [5][*]
// output: completes check to place the users '#' piece on board, if row 6 is taken it moves to row 5 and so on.

int space_2 (char b[][]) {
int k,x
while (b[][] == '@' || '#'){
    for (k=5;k>5;k--){
        if (b[k][x] == ' '){            
        board[k][x] = '#';
        }
    }
}
}
//function: display_board
// input : where to place piece on board
// output: places users piece on board

void display_board (char b[][6]) {
   printf ("\033[01;33m  1   2   3   4   5   6   7\n");
   printf ("\033[01;33m-----------------------------\n");
   printf ("\033[01;33m| %c | %c | %c | %c | %c | %c | %c |\n", b[0][0], b[0][1], b[0][2], b[0][3], b[0][4], b[0][5], b[0][6]);
   printf ("\033[01;33m-----------------------------\n");
   printf ("\033[01;33m| %c | %c | %c | %c | %c | %c | %c |\n", b[1][0], b[1][1], b[1][2], b[1][3], b[1][4], b[1][5], b[1][6]);
   printf ("\033[01;33m-----------------------------\n");
   printf ("\033[01;33m| %c | %c | %c | %c | %c | %c | %c |\n", b[2][0], b[2][1], b[2][2], b[2][3], b[2][4], b[2][5], b[2][6]);
   printf ("\033[01;33m-----------------------------\n");
   printf ("\033[01;33m| %c | %c | %c | %c | %c | %c | %c |\n", b[3][0], b[3][1], b[3][2], b[3][3], b[3][4], b[3][5], b[3][6]);
   printf ("\033[01;33m-----------------------------\n");
   printf ("\033[01;33m| %c | %c | %c | %c | %c | %c | %c |\n", b[4][0], b[4][1], b[4][2], b[4][3], b[4][4], b[4][5], b[4][6]);
   printf ("\033[01;33m-----------------------------\n");
   printf ("\033[01;33m| %c | %c | %c | %c | %c | %c | %c |\n", b[5][0], b[5][1], b[5][2], b[5][3], b[5][4], b[5][5], b[5][6]);
   printf ("\033[01;33m-----------------------------\n");
}

 void display_board2 (char b[][6]) {
   int i, j;
    printf ("\033[01;33m  1   2   3   4   5   6   7\n");
    printf ("\033[01;33m-----------------------------\n");
    for (i=0; i<6; i++) {
          for (j=0; j<7; j++) {
         printf ("\033[01;33m| %c ", b[i][j]);
       }
           printf ("\033[01;33m|\n");
       printf ("\033[01;33m-----------------------------\n");
      }  
}
void main/*2*/ () {
        char board[5][6];
        int row, col, status;

// initialize the game board w/ blanks
board[0][0] = ' '; board[0][1] = ' '; board[0][2] = ' '; board[0][3] = ' '; board[0][4] = ' '; board[0][5] = ' '; board[0][6] = ' '; 
board[1][0] = ' '; board[1][1] = ' '; board[1][2] = ' '; board[1][3] = ' '; board[1][4] = ' '; board[1][5] = ' '; board[1][6] = ' '; 
board[2][0] = ' '; board[2][1] = ' '; board[2][2] = ' '; board[2][3] = ' '; board[2][4] = ' '; board[2][5] = ' '; board[2][6] = ' '; 
board[3][0] = ' '; board[3][1] = ' '; board[3][2] = ' '; board[3][3] = ' '; board[3][4] = ' '; board[3][5] = ' '; board[3][6] = ' '; 
board[4][0] = ' '; board[4][1] = ' '; board[4][2] = ' '; board[4][3] = ' '; boar d[4][4] = ' '; board[4][5] = ' '; board[4][6] = ' '; 
board[5][0] = ' '; board[5][1] = ' '; board[5][2] = ' '; board[5][3] = ' '; board[5][4] = ' '; board[5][5] = ' '; board[5][6] = ' ';


//display_board (board);
display_board2 (board);

while (1) {
    printf ("\033[22;31m@'s move enter column: ");
    scanf ("%d", &col);
    space_1[5][col-1] = '@';    // mark the board   
    display_board2 (board);

    // check for winner
    status = check2 (board);
    if (status == 1) {
        printf ("@ wins!\n");
        break;
    }

    printf ("\033[22;34m#'s move enter column: ");
    scanf ("%d", &col);
    space_2[5][col-1] = '#';  // mark the board
    display_board2 (board);


    // check for winner
    status = check2 (board);
    if (status == 1) {
        printf ("# wins!\n");
        break;
    }
}

    printf ("Thanks for playing!\n");
}
我已经接受了所有额外的子程序来关注我糟糕的c编程技能,非常感谢所有的帮助

int space_1 (char b[][]) {
声明数组参数时,只能将最左边的数组维度留空

int k,x
while (
你需要一份工作;终止变量的声明。在C语言中,语句以包含;结尾

这个测试不是测试你认为的假设b[][]有意义的东西。这样做的目的是将b[]]与“@”进行比较,如果不同,则将其与0进行比较。最后的比较总是错误的

for (k=5; k>5; k--) {
k永远不大于5。此循环的主体永远不会执行

void main() {
除非您为独立环境编写没有操作系统的计算机,否则main函数将返回一个int。它应使用int mainvoid{/*…*/}定义

建议:

始终保持代码可编译。 如果代码未编译,请不要添加任何内容。
添加功能时,请继续保存并测试编译。

当然,通过将b[]]作为字符传递可以避免它的出现**b

查看代码,它甚至看起来不应该编译。。。您将空间_1和2定义为应该返回int的函数,但实际上不返回任何内容。然后在main中将它们用作数组。我认为在标题中提出这个问题之前,你应该把问题分解得更细一点,把重点放在使它的各个部分都能工作上。那你必须至少指定一个n维数组的n-1维吗?也就是说,b[][]是无效的?
void main() {