Пример #1
0
void task(int x_origen, int y_origen) {
    /* Tarea */
    //breakpoint();
	//while(1);


	int x_actual = x_origen;
	int y_actual = y_origen;

	//breakpoint();

	while (TRUE)
	{
		int direccion = syscall_olfatear();
		if (direccion == AQUI)
			break;

		actualizar(&x_actual, &y_actual, direccion);
		syscall_moverse(direccion);
	}
	while (syscall_cavar() != 0)
	{}


	ir_hacia_desde(0, y_actual, &x_actual, &y_actual);
	ir_hacia_desde(0, 0, &x_actual, &y_actual);
	ir_hacia_desde(x_origen, 0, &x_actual, &y_actual);
	ir_hacia_desde(x_origen, y_origen, &x_actual, &y_actual);

    while(1) { __asm __volatile("mov $2, %%eax":::"eax"); }
}
Пример #2
0
void ir_hacia_desde(char x_dest, char y_dest, char x_actual, char y_actual)
{
	char dir_h = x_dest > x_actual ? DER : IZQ;
	char dir_v = y_dest > y_actual ? ABA : ARR;

	int dist_x = x_dest > x_actual ? x_dest - x_actual : x_actual - x_dest;	
	int dist_y = y_dest > y_actual ? y_dest - y_actual : y_actual - y_dest;	

	int i = 0;
	for (i = dist_x; i>0; i--)
		syscall_moverse(dir_h);

	for (i = dist_y; i>0; i--)
		syscall_moverse(dir_v);

}
Пример #3
0
void task(int x, int y) {
    // Perro "CORRO Y ME CUELGO"

    int i = 20;
    while(i--){
        syscall_moverse(ARR);
    }
    while(1) { __asm __volatile("mov $2, %%eax":::"eax"); }
}
Пример #4
0
void ir_hacia_desde(char x_dest, char y_dest, int * x_actual, int * y_actual)
{
	char dir_h = x_dest > *x_actual ? DER : IZQ;
	char dir_v = y_dest > *y_actual ? ABA : ARR;

	int dist_x = x_dest > *x_actual ? x_dest - *x_actual : *x_actual - x_dest;
	int dist_y = y_dest > *y_actual ? y_dest - *y_actual : *y_actual - y_dest;

	int i = 0;
	for (i = dist_x; i>0; i--) {
		actualizar(x_actual, y_actual, (int)dir_h);
		syscall_moverse(dir_h);
	}

	for (i = dist_y; i>0; i--) {
		actualizar(x_actual, y_actual, (int)dir_v);
		syscall_moverse(dir_v);
	}


}