C 建立国际象棋游戏?

C 建立国际象棋游戏?,c,arrays,string,char,C,Arrays,String,Char,我正在尝试建立一个基本的文本国际象棋游戏。目前在每个数组位置,我都试图输入一个2字符的单词。P1是第一个玩家的棋子。它在strcpy函数行上给了我一个指向整数转换的不兼容指针 我尝试使用ChessArray[firstCounter][secCounter]=“P1”但它不工作,并给我一个错误 注意:我知道很多人会说使用另一种语言制作这个游戏更好,但我想练习我的C语言技能 代码: #包括 #包括 int main(int argc,const char*argv[]{ char ChessArr

我正在尝试建立一个基本的文本国际象棋游戏。目前在每个数组位置,我都试图输入一个2字符的单词。P1是第一个玩家的棋子。它在
strcpy
函数行上给了我一个指向整数转换的
不兼容指针

我尝试使用
ChessArray[firstCounter][secCounter]=“P1”但它不工作,并给我一个错误

注意:我知道很多人会说使用另一种语言制作这个游戏更好,但我想练习我的C语言技能

代码:

#包括
#包括
int main(int argc,const char*argv[]{
char ChessArray[8][8];

对于(int firstCounter=0;firstCounter您混淆了char*和char。您的chessary是字符数组。不是char*数组。双引号中的字符串是char*。单引号中的单个字符是字符。Strcpy与char*一起工作,而不是与字符一起工作,并且无法将数据复制到字符中。y或y您想将其设置为char*ChessArray[][],或者您想使用ChessArray[firstCounter][secCounter]='p'


请注意,如果使用char*ChessArray[][]版本在第一次将其传递给strcpy之前,您必须在每个索引处为每个char*分配内存。您混淆了char*和char。您的chessary是字符数组。不是char*数组。双引号中的字符串是char*。单引号中的单字符es是一个字符。Strcpy与char*一起工作,而不是与字符一起工作,并且无法将数据复制到字符中。您可以将其设置为char*ChessArray[][],也可以使用ChessArray[firstCounter][secCounter]=“p”


请注意,如果使用char*ChessArray[][]版本,则在第一次将其传递给strcpy之前,必须在每个索引处分配malloc保存的每个char*的内存。

strcpy(ChessArray[firstCounter][secCounter],“p”);
无法工作:它不是char数组。Do
ChessArray[firstCounter][secCounter]='p';
请不要混淆形式和功能。保存字符表示以供人类使用,并将其转换为/从更好的表示形式转换为内部使用。共有32个棋子,您需要32个
enum
s或类似的东西来在内部表示它们。@Jean Françoisfare我正在尝试输入“P1”而不是“p”我将重新考虑我的方法。@ BasaMeMeWaly或16个枚举,或者更少,如果你认为典当是一种类型,Bishop是2种类型。象棋被认为是计算密集型的,因此使用字符串分析的片段将严重地影响性能。<代码>[firstCounter][secCounter],“p”);
无法工作:它不是字符数组。请执行
ChessArray[firstCounter][secCounter]='p';
请不要混淆形式和功能。保存字符表示以供人类使用,并将其转换为/从更好的表示形式转换为内部使用。共有32个棋子,您需要32个
enum
s或类似的东西来在内部表示它们。@Jean Françoisfare我正在尝试输入“P1”而不是“p”我将重新考虑我的方法。@ BasaMeMeWaly或16个枚举,或者更少,如果你认为典当是一种类型,主教是2种类型。国际象棋被认为是计算密集型的,因此使用字符串分析的片段将严重影响性能。
#include <stdio.h>
#include <string.h>

int main(int argc, const char * argv[]) {

    char ChessArray[8][8];
    for (int firstCounter = 0; firstCounter <= 7; firstCounter++)
    {
        for (int secCounter = 0; secCounter <= 7; secCounter++)
        {
            strcpy(ChessArray[firstCounter][secCounter],"p");
        }
    }
    printf(" |A |B |C |D |E |F |G |H |\n");
    for (int firstCounters = 0; firstCounters <= 7; firstCounters++)
    {
        printf("%i", firstCounters);
        for (int secCounters = 0; secCounters <= 7; secCounters++)
        {
            printf("| ");
            printf("%c",ChessArray[firstCounters][secCounters]);
        }
        printf("|");
        printf("%i",firstCounters);
        printf("\n");
    }
    printf(" |A |B |C |D |E |F |G |H |\n");
    return 0;
}