0

我正在尝试制作类似于国际象棋的游戏。我希望用户输入他们想要移动的棋子的位置,然后他们想要移动它......(在 8x8 网格上 - A1 到 H8)

我无法锻炼一种简单的方法来从用户输入的内容中查找变量。我目前拥有的代码是:

void main() {

    printf("Enter Piece to Move: ");
    scanf("%s",&move);  

    printf("\n\nWhere would you like to move %s?:",move);
    scanf("%s",&to);

    [...]

我还有一个包含所有碎片位置的变量列表。我想要发生的是,如果用户要输入 A1 来移动棋子。我希望使用名为 A1 的变量的值。这样我就可以知道该作品的当前位置以及该位置的内容...

希望这会引起人们的注意,有人可以提供帮助:)

4

4 回答 4

3

看看数组的概念。如果您有一个二维数组,您只需将字母“A”转换为数字并将其用作数组中的索引。

于 2011-08-07T17:00:08.690 回答
1

如果动态获取变量名,则不能引用变量。与 PHP 不同,在 C 中没有办法做到这一点。

您应该手动进行映射

int a[8][8];
char c1, c2;
scanf("%c%c", &c1, &c2);
a[c1-'a'][c2-'1'] = ???; //this is your variable

上面几乎是一个伪代码。我的意思是,您应该注意不良输入和许多其他事情,但您应该明白这一点。

于 2011-08-07T17:01:06.647 回答
0

你应该使用你的数据的 2 个“持有者”,一个董事会代表和部分职位,比如

enum {WKING=1,BKING,WPAWN,BPAWN,WQUEEN,BQUEEN,WBISHOP,BBISHOP,WKNIGHT,BKNIGHT,WROOK,BROOK};
int board[8*8];
/* positions: */
int wking,wqueen[9],wbishop[10],wknight[10],wrook[10],wpawn[8];
int sking,squeen[9],sbishop[10],sknight[10],srook[10],spawn[8];
...
setposFromTo(int piece,int from,int to) {
switch(piece) { case WKING: "set board AND position here" break; ... }}
于 2011-08-07T17:22:43.810 回答
0

这在 C 中是不可能的。当您的程序运行时,变量的名称不再存在,它们只存在于您的代码中。

相反,您应该使用称为数组的东西。在这里解释太长了,我认为你应该读一本关于 C 的书。

于 2011-08-07T17:00:14.953 回答