2016-06-12 2 views
0

Я создаю программу c для выбора и перемещения числа в массиве. Моя цель - соединить две пары одинакового числа в массиве. Но я не уверен, почему выбранный номер не может двигаться. Нужна помощь, спасибо заранее.Выбор и перемещение числа

Вот мой код:

void playgame(char box[ROW][COL]) 
{ 
    int x, y, choice2,num,direction=0; 
    char input; 

    do{ 

    printf("Please select a number (1-7) : "); 
    scanf("%i",&num); 

    if(num==0 ||num > 7) 
    { 

    printf("Invalid!\n"); 


    } 
    else 
    { 

    printf("\nNumer %i is currently selected!\n", num); 

    } 
    }while(num==0 ||num > 7); 

    printf("\n[1]Move\n[2]Sign out\n"); 
    printf("\nEnter choice: \n"); 
    scanf("%d", &choice2); 


    switch(choice2) 
    { 
     case 1: 
       { 
        printf("Press 'e' to go up\n"); 
        /*codes for moving the character up.....*/ 
       } 

       { 
        printf("Press 'd' to go right\n"); 

       } 

       { 
        printf("Press 's' to go left\n"); 

       } 

       { 
        printf("Press 'x' to go down\n"); 

       } 

        fflush(stdin); 

        scanf("%c", &input); 
       break; 

     case 2: printf("Bye!\n"); 
    } 



    for(x=0; x<9; x++) 

    for(y=0; y<9; y++) 
    {  
    if(input == 'e') 
    if(box[x][y]==num) 
    { 
    box[--x][y]==num; 
    } 

if(input == 'd') 
    if(box[x][y]==num) 
    { 
    box[x][++y]==num; 
    } 


if(input == 's') 
    if(box[x][y]== num) 
    { 
     box[x][--y]== num; 
    } 

if(input == 'x') 
    if(box[x][y]==num) 
    { 
    box[++x][y]==num; 
    } 
    } 


} 

, например: numbers

+0

будьте аккуратнее. Что вы подразумеваете под «не может двигаться»? Укажите точный ввод, ожидаемый выход и фактический результат. – kaylum

+0

Правильно отформатируйте свой код. Кроме того, вы должны удалить слово «случайный» из своего вопроса, так как пользователь предоставляет номер. И вы должны предоставить полную программу ... от этого фрагмента нет способа рассказать, что содержит 'box'. –

ответ

3

Вы перепутали "равно" оператор == и "назначения" оператор =.

Все строки, такие как if(box[x][y]== num), верны: вы сравниваете, если они равны.

Все строки, такие как box[++x][y]==num;, необходимо изменить на box[++x][y] = num; - вы хотите «присвоить» номер записи box, а не «сравнить» ее.

Но вы также получили еще одну проблему: во всех строках box[++x][y] = num; вы не хотите использовать ++x или --y - это на самом деле изменить x и y, которые я не думаю, что вы хотите. Петли for перемещаются x и y от 0 до 9 - с использованием --x и ++y изменяют эти значения for.

Вместо этого вы хотите что-то вроде box[x+1][y] = num; или box[x][y-1] = num;, которые вычислить «один больше, чем x» и «один меньше, чем y» и использует расчетные значения, а не изменение x или y.

Но если вы делаете, что у вас есть даже более проблемы: y-1 когда y уже 0 находится вне коробки. x+1 когда x уже 9 есть за пределами коробки. Вы должны быть много более осторожны с вашей математикой.

+0

Я изменил его, но все еще не могу подключить его. – CodeX

Смежные вопросы