Fusion_X escribió:los codes que me invente servirian asi por haci o tedria que hacer algo mas ?me estais enseñando mucho
por ahora no se como se hacen eventos no nada pero si los codes los de eventos los tengo k inventar pues ya puedo estar medio año en inventarlo xD no doy pie con bola no creo que consiga programar algo para la DS
Veamos, te voy a dar pistas, para que sepas como debes de proceder
.
Por ejemplo, imaginate que yo estoy en una posicion de pantalla y que tu estas en otra y tu eres el enemigo controlado por la CPU (XD).
La primera situacion que podria darse, es que yo estuviera lejos de tí y tu no te dieras cuenta de mi presencia y estuvieses haciendo un movimiento de guardia que consiste en andar 5 pasos a la derecha y luego andar 5 pasos a la izquierda (va y viene)
distancia=(mi_x - tu_x);
if(distancia<0) distancia=-distancia; // para que la distancia sea positiva
if(distancia
{
modo_ataque(); // evento de ataque
}
else
{
movimiento_de_guardia(); // evento de montar guardia
}
El movimiento de guardia (andar 5 pasos hacia la derecha y luego 5 pasos hacia la izquierda) podria ser asi:
int pasos_andados=0;
int desplazamiento_x=8; // cada paso avanza 8 pixeles
void movimiento_de_guardia()
{
tu_status=ESTOY_DE_GUARDIA;
tu_x+=desplazamiento_x;
pasos_andados++;
if(pasos_andados==5) // si andamos 5 pasos, cambiar el sentido
{
pasos_andados=0;
desplazamiento_x=-desplazamiento_x; /* cambia sentido de desplazamiento */
}
dibujate(tu_x,tu_y);
}
La funcion de modo de ataque, tendria que evaluar dos cosas:
1) Si estas demasiado alejado de mí, tendrias que aproximarte hasta una distancia oportuna
2) Si estas a la distancia correcta, deberias decidir tu ataque/defensa
a) Si te estoy atacando yo, debes mirar si mi ataque puede ser contrarrestado por un ataque tuyo (por ejemplo, yo te lanzo patada arriba, hacia la cabeza. Tu puedes lanzar patada baja agachandote, hacia mis huevos. Si no tienes ningun movimiento alternativo, deberas ponerte en defensa
b) Si yo no te ataco, deberas elegir tu el movimiento de ataque que mas te guste.
void modo_ataque()
{
int distancia;
int sentido;
distancia=(mi_x - tu_x);
sentido=8;
if(distancia<0) {distancia=-distancia; sentido=-8;}
if(distancia>distancia_adecuada)
{
tu_x+=sentido; /* avanza/retrocede 8 pix hasta estar a la distancia */
}
else
{
if(mi_status==ATAQUE)
{
if(puedo_contraatacar())
{
tu_status=ATAQUE;
hacer_contraataque();
}
else
{
tu_status=DEFENSA;
hacer_defensa();
}
}
else // no estoy atacando
{
tu_status=ATAQUE;
elegir_un_ataque();
}
}
dibujate(tu_x,tu_y);
}
Esto esta todo muy esquematizado, pero ya ves de que va la movida.
Por ejemplo, en puedo_coontratacar(), podrias consultar una tabla
de datos que tu ya tendrias predefinida con los diferentes tipos de contrataques que podrias efectuar.
En este caso, yo preveo una defensa perfecta, pero tu no querras eso, si no que querras que el ordenador, a veces se defienda bien y otras, no haga nada.
Para eso puedes tirar de numeros aleatorios y tomar decisiones en funcion de un porcentaje.
Por ejemplo, podrias utilizar rand() & 3 , para devolver un numero aleatorio entre 0 y 3. Si es 0, no haces nada y te comes el golpe, si es 3 efectuas un contra golpe y si es 1 o 2, te defiendes
Como ves, todo es muy sencillo de hacer,si sabes descomponerlo, pero si te sigue pareciendo dificil, eso es porque el movimiento, se demuestra andando y ese camino lo tienes que andar tu.