C/Visual C - Movimientos en bucles

 
Vista:
sin imagen de perfil
Val: 3
Ha disminuido su posición en 4 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Movimientos en bucles

Publicado por Jose_Romero (3 intervenciones) el 09/11/2018 23:59:13
Buenas tengo una pequeña duda sobre C. Estoy ejecutando movimientos a un robot que tengo .
Me gustaría que fuese primero el movimiento avanza y luego retrocede y así continuamente, es decir, luego otra vez avanza y retrocede, avanza y retrocede, etc.
Para ello me hice en un main lo que muestro:

1
2
3
4
5
6
7
8
9
10
11
12
13
int main(){
 bool mov = false;
     while(1){
        if (mov == true) {
            mueve_pata(0,'R');
        } else {
            mueve_pata(0,'A');
 
        }
         mov = !mov;
         wait_ms(2500);
         }
}

Al hacerlo así me funciona bien, se ejecuta continuamente, pero si me creo una función por ejemplo asi;
1
2
3
4
5
6
7
8
9
10
11
12
void mueve_robot(){
  bool mov = false;
     while(1){
        if (mov == true) {
            mueve_pata(0,'R');
        } else {
            mueve_pata(0,'A');
        }
         mov = !mov;
         wait_ms(2500);
         }
}

Y la llamo en el main a la función creada solo me ejecuta una vez el movimiento, ¿porque se debe?

Muchas gracias!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de SuperIndio
Val: 47
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Movimientos en bucles

Publicado por SuperIndio (42 intervenciones) el 15/11/2018 14:57:53
Es raro che que compilador usas?
Puede ser que el resultado de la variable bool este interfiriendo en while(1)
aunque no deberia, lo probaste con numeros? Es decir en lugar de true false
poner con una variable tipo int?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main() {
    int mover = 0;
    mueve_robot( mover );
 
}
void mueve_robot( int mov ) {
 
     while(1) {
         if (mov=0) {
             mueve_pata(0,'R');
             mov++;
         } else {
             mueve_pata(0,'A');
             mov=0
         }
         wait_ms(2500);
     }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar