I am in the early stages of creating a game of fifteen but i am having a problem. When i run this program i can do "up" and "down" all day long, but when i try "left" or "right" or type anything else in for that matter it performs "down".
I know there is a simple answer to this, but i cant seem to find the problem and its been driving me nuts!
if you have a better idea of how i should be using functions in this code feel free to let me know
thanks in advance
heres the code
Code:
#include <stdio.h>
#include <string.h>
void show(int numbers[][4]);
void move(char input[]);
main()
{
int numbers[4][4]={15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 1, 2, 0};
int correct[4][4]={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
char input[5];
int x, y, tmp;
x=y=3;
show(numbers);
move(input);
while(numbers != correct)
{
if(strcmp(input, "up") == 1)
{
tmp=numbers[y][x];
numbers[y][x]=numbers[--y][x];
numbers[y][x]=tmp;
}
else if(strcmp(input, "down") == 1)
{
tmp=numbers[y][x];
numbers[y][x]=numbers[++y][x];
numbers[y][x]=tmp;
}
else if(strcmp(input, "left") == 1)
{
tmp=numbers[y][x];
numbers[y][x]=numbers[y][--x];
numbers[y][x]=tmp;
}
else if(strcmp(input, "right") == 1)
{
tmp=numbers[y][x];
numbers[y][x]=numbers[y][++x];
numbers[y][x]=tmp;
}
show(numbers);
move(input);
}
}
void show(int num[][4]) /***Display The Layout of the Game***/
{
int i, j;
for(i=0; i <= 3; i++)
{
for(j = 0; j <= 3; j++)
printf("%5d", num[i][j]);
printf("\n\n");
}
}
void move(char input[]) /***inputing what space they want to switch with 0***/
{
char c;
int i;
printf("Please enter in the space you want to switch with 0 by indicating \"up\", \"down\", \"left\" or \"right\"\n");
for(i=0; c!='\n'; i++)
input[i]=(c=getchar());
input[i]='\0';
}