Движение человечка - 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; }