//Headers stdio.h, stdlib.h, conio.h, curses.h #include #include #include #include #define KEY_LEFT 0x78 //Tecla 'z' #define KEY_RIGHT 0x7a //Tecla 'x' #define TRUE 1 //Definicao TRUE como 1 #define __OK 0 //Defincao __OK como 0 // unsigned char __adress__lf = 0x7a; //Codigo ASCII('x'): Em Hexadecimal // unsigned char __adress__rt = 0x78; //Codigo ASCII('z'): Em Hexadecimal struct __MOV { //Estrutura para inicializar a funcao do mesmo unsigned int (*keyl)(char _left); unsigned int (*keyr)(char _right); }; // struct __MOV *other; int __incmt(unsigned int x) { //Funcao que incrementa return (x++); } int __dscmt(int x) { //Funcao que descrementa return (x--); } int left_mov(char *__left) { //Move para esquerda int _y; __left = (char *)malloc(sizeof(char)); for(;;) { do { *(__left) = getch(); if(*(__left) == KEY_LEFT) { gotoxy(10,20); printf("@"); __dscmt(_y--); }else { gotoxy(10,20); printf("@"); __incmt(_y++); } }while(TRUE); } free(__left); return __OK; } int right_mov(char *__right) { //Move para a direita int _y; __right = (char *)malloc(sizeof(char)); for(;;) { do { *(__right) = getch(); if(*(__right) == KEY_RIGHT) { gotoxy(10,20); printf("@"); __incmt(_y++); }else { gotoxy(10,20); printf("@"); __dscmt(_y--); } }while(TRUE); } free(__right); return __OK; } //void main(void) { } int main(int argc, char *argv[]) { struct __MOV *mov = (struct __MOV *)malloc(sizeof(struct __MOV)); mov.keyl = left_mov; mov.keyr = right_mov; do { mov.keyl(KEY_LEFT); mov.keyr(KEY_RIGHT); }while(TRUE); free(mov); return __OK; }