Движение человечка - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Я написал программу в которой должен появляться человек и с помощью кнопок W/A/S/D управлять им. У меня он появляется, но я не могу заставить его двигаться. Вот код:
#include <stdio.h>
#include <stdlib.h>
#define N 20
#define M 20
#define up 119
#define down 115
#define left 97
#define right 100
 
char **initMatrix(int a,int b,char c)
{
    int i,j;
    char **tmp=(char**)malloc(a*sizeof(char));
    for(i=0; i<20; i++)
        tmp[i]=(char*)malloc(b*sizeof(char));
    for(i=0; i<N; i++)
        for(j=0; j<M; j++)
            tmp[i][j]=c;
    return tmp;
}
void setHuman(int x, int y, char **world)
{
    world[y][x]='1';

    return world;
}
int main()
{
    int i=0,j=0;
    char **world1,key;
    world1=initMatrix(N,M,'0');
    setHuman(j,i,world1);
    while(1)
    {
        for(i=0; i<N; i++)
        {
            for(j=0; j<M; j++)
                printf("%c ",world1[i][j]);
            printf("\n");
        }
        key=getch();
        switch(key)
        {
        case up:
            if(i<0)setHuman(j,i,world1);
            else i--;
            break;
        case down:
            if(i>N)setHuman(j,i,world1);
            else i++;
            break;
        case left:
            if(j<0)setHuman(j,i,world1);
            else j--;
            break;
        case right:
            if(j>M)setHuman(j,i,world1);
            else j++;
            break;
        default:
            printf("error");
        }
    }

    return 0;
}
помогите найти ошибку. Заранее спасибо

Решение задачи: «Движение человечка»

textual
Листинг программы
void setHuman(int x, int y, char **world){
//...
return world;
}

Оцени полезность:

7   голосов , оценка 3.429 из 5
Похожие ответы