int main(){ Snake bia; bia.x = 5; bia.y = 7; bia.dir = DIRE; bia.face = '<'; andar(&bia); mostrar(bia); virar(&bia, -1); mostrar(bia); return 0; }
void Magnetman::actualizarMaquinaEstados(real deltaT) { reflejos += deltaT; switch(estadoMagnetman) { case CORRIENDO: { if(!puedeCorrer()) { virar(); estadoMagnetman = QUIETO; } break; } case SALTANDO: { if(reflejos >= REFLEJOS && disparos) { reflejos = 0; Megaman *megaman = obtenerMundo().obtenerMegamanCercano(obtenerPosicion()); b2Vec2 vista = megaman->obtenerPosicion()-obtenerPosicion(); if(b2Dot(vista,Cuerpo::versorIzquierda) > 0) modificarOrientacion(izquierda); else modificarOrientacion(derecha); disparar(megaman->obtenerPosicion()-obtenerPosicion()); disparos--; } if(puedeSaltar()) estadoMagnetman = QUIETO; break; } case QUIETO: { real aleatorio = numeroAleatorio(0,1); if(aleatorio > 0.6) { saltar(); estadoMagnetman = SALTANDO; disparos = CANTDISPAROS; } else { correr(); estadoMagnetman = CORRIENDO; } reflejos = 0; break; } } #ifndef compiling_server /*Es mas preciso cambiarlo de esta forma que una vez por cambio de la maquina de estados.*/ if(estaEnElAire()) cambiar(&animacion_saltando); else cambiar(&animacion_corriendo); #endif }
void Sparkman::actualizarMaquinaEstados(real deltaT) { if(!megaman || !obtenerMundo().existeMegaman(IDTarget)) { megaman = obtenerMundo().obtenerMegamanCercano(obtenerPosicion()); IDTarget = megaman->obtenerID(); } reflejos += deltaT; switch(estadoSparkman) { case DISPARANDO: { orientacion = obtenerOrientacion(); b2Vec2 vista = megaman->obtenerPosicion()-obtenerPosicion(); if(b2Dot(vista,Cuerpo::versorIzquierda) > 0) modificarOrientacion(izquierda); else modificarOrientacion(derecha); disparar(megaman->obtenerPosicion()-obtenerPosicion()); estadoSparkman = QUIETO; break; } case SALTANDO: { if(reflejos >= TIEMPOCORRIENDO) { reflejos = 0; dejarCorrer(); } if(puedeSaltar()) estadoSparkman = QUIETO; break; } case QUIETO: { real aleatorio = numeroAleatorio(0,1); modificarOrientacion(orientacion); if(puedeCorrer()) { if(aleatorio < 0.5) { correr(); saltar(); estadoSparkman = SALTANDO; } else { estadoSparkman = DISPARANDO; } } else { virar(); orientacion = obtenerOrientacion(); } reflejos = 0; break; } } #ifndef compiling_server /*Es mas preciso cambiarlo de esta forma que una vez por cambio de la maquina de estados.*/ if(estaEnElAire()) cambiar(&animacion_saltando); else cambiar(&animacion_corriendo); #endif }