rendered paste body//Headers stdio.h, stdlib.h, conio.h, curses.h
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <curses.h>
#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;
}