C 建立国际象棋游戏?
我正在尝试建立一个基本的文本国际象棋游戏。目前在每个数组位置,我都试图输入一个2字符的单词。P1是第一个玩家的棋子。它在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
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数组。DoChessArray[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;
}