从C中的变量值中查找变量

时间:2011-08-07 16:56:55

标签: c variables chess

我正在尝试制作类似国际象棋的游戏。我希望用户输入他们想要移动的棋子的位置,然后他们想要移动它...(在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 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

如果动态获取其名称,则无法引用变量。在C中没有办法做到这一点,不像是PHP。

您应该手动执行映射

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

以上几乎是伪代码。我的意思是,你应该处理不好的投入和许多其他事情,但你应该明白这一点。

答案 2 :(得分:0)

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

相反,你应该使用一种叫做数组的东西。在这里解释需要太长时间,我想你应该读一本关于C的书。

答案 3 :(得分: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; ... }}