TRaFuGa
08/11/2007, 12:56
Pues nada, estoy haciendo un trabajo de clase que consiste en un robot (todo en consola), el robot anda y consume bateria (hace otras cosas, pero esto es lo que me esta comiendo la cabeza xD).
El robot anda a 0.1 m por paso, vamos que tengo un bucle for desde o hasta los metros que le diga con un step de 0.1, para que cada metro de 10 pasos.
Cada paso que da consume 2% de bateria, osea, que 10 pasos=1metro=20% de bateria gastada.
Hasta aqui bien, el problema viene cuando voy a probar el dichoso programa, le doy a andar 1 metro y me hace 11 pasos, por lo que es mas de un metro, si empiezo desde 0.1 no hay problema.
La cuestion es que empezando desde 0.1, si le pongo que ande 2 metros me hace solamente 19 pasos!!!! xDD
Os pongo el codigo del bucle que tengo para cuando ande.
Case Coordenadas.Norte 'si es NORTE a la Y le sumamos los metros
Me.sMirandoA = Coordenadas.Norte
For pasos = 0.1 To metros Step 0.1
'sumando pasos
Me.oPosicion.Y += 0.1
If Me.oPosicion.Y >= 5 Then
Me.oPosicion.Y = 5
RaiseEvent Chocar(Me.oPosicion)
Exit For
Else
Console.Write(".") 'dibujando los pasos
End If
'restando bateria a razon de 2% por cada paso
'10 pasos hacen 1m y un 20% de desgaste, 5 metros son 50 pasos y un 100% de desgaste de bateria
If Me.dbNivelBateria <= 10 Then
'lanzamos el evento de bateria baja
RaiseEvent BateriaBaja(Me.dbNivelBateria)
Exit For
Else
Me.dbNivelBateria -= 2
End If
Next
Pues eso, la unica duda que me corroe es, porque con 1 metro, empezando desde 0.1 me da 10 pasos y con 2 metros empezando desde 0.1 me da 19 pasos???
o lo que es lo mismo, 1 metro, empezando desde 0 son 11 pasos y 2 metros 20 pasos.
El robot anda a 0.1 m por paso, vamos que tengo un bucle for desde o hasta los metros que le diga con un step de 0.1, para que cada metro de 10 pasos.
Cada paso que da consume 2% de bateria, osea, que 10 pasos=1metro=20% de bateria gastada.
Hasta aqui bien, el problema viene cuando voy a probar el dichoso programa, le doy a andar 1 metro y me hace 11 pasos, por lo que es mas de un metro, si empiezo desde 0.1 no hay problema.
La cuestion es que empezando desde 0.1, si le pongo que ande 2 metros me hace solamente 19 pasos!!!! xDD
Os pongo el codigo del bucle que tengo para cuando ande.
Case Coordenadas.Norte 'si es NORTE a la Y le sumamos los metros
Me.sMirandoA = Coordenadas.Norte
For pasos = 0.1 To metros Step 0.1
'sumando pasos
Me.oPosicion.Y += 0.1
If Me.oPosicion.Y >= 5 Then
Me.oPosicion.Y = 5
RaiseEvent Chocar(Me.oPosicion)
Exit For
Else
Console.Write(".") 'dibujando los pasos
End If
'restando bateria a razon de 2% por cada paso
'10 pasos hacen 1m y un 20% de desgaste, 5 metros son 50 pasos y un 100% de desgaste de bateria
If Me.dbNivelBateria <= 10 Then
'lanzamos el evento de bateria baja
RaiseEvent BateriaBaja(Me.dbNivelBateria)
Exit For
Else
Me.dbNivelBateria -= 2
End If
Next
Pues eso, la unica duda que me corroe es, porque con 1 metro, empezando desde 0.1 me da 10 pasos y con 2 metros empezando desde 0.1 me da 19 pasos???
o lo que es lo mismo, 1 metro, empezando desde 0 son 11 pasos y 2 metros 20 pasos.