Найти переменную из значения переменной в C - PullRequest
0 голосов
/ 07 августа 2011

Я пытаюсь сделать игру похожую на шахматы.Я хочу, чтобы пользователь напечатал, в каком положении фигуры он хочет переместить, а затем он хотел бы переместить ее ... (на сетке 8x8 - от А1 до H8)

Я не могу тренироваться простымспособ найти переменную из того, что набрал пользователь. У меня сейчас есть код:

void main() {

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

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

    [...]

То, что у меня также есть, это список переменных всех мест расположения частей.Я хотел бы, чтобы пользователь вводил А1 для перемещения фигуры.Я хочу использовать значение переменной с именем A1.Это так, чтобы я мог иметь текущую позицию пьесы, а также то, что находится на месте ...

Надеюсь, что это делает сцену, и кто-то может помочь:)

Ответы [ 4 ]

3 голосов
/ 07 августа 2011

Взгляните на концепцию массивов.Если у вас есть двумерный массив, вам просто нужно преобразовать букву «А» в число и использовать его как индекс в массиве.

1 голос
/ 07 августа 2011

Вы не можете ссылаться на переменную, если вы динамически получаете ее имя. Просто нет способа сделать это на C, в отличие, скажем, от PHP.

Вы должны сделать отображение вручную

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

Выше приведен почти псевдокод. Я имею в виду, вы должны позаботиться о плохих входных данных и многих других вещах, но вы должны понять.

0 голосов
/ 07 августа 2011

Вы должны использовать 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; ... }}
0 голосов
/ 07 августа 2011

Это невозможно в C. Когда ваша программа работает, имена переменных больше не существуют, они существуют только в вашем коде.

Вместо этого вы должны использовать нечто, называемое массивом.Это займет слишком много времени, чтобы объяснить здесь, я думаю, что вы должны прочитать книгу на C.

...