Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - MasterPunk

#11
no se ni como comprobar el color de los pixeles ni como pintar solo algunos pixeles, asi que si me dices como me harias un segundo gran favor
#12
Java / problema bucle en metodo
11 Enero 2012, 22:42 PM
Hola, al compilar me dice que me falta un return (aunque en realidad no) y no se como arreglarlo sin retroalimentar(para quitar el bucle).
Creo que el codigo se explica solo:
Código (java) [Seleccionar]
public static int numJugadores(){ //devuelve el numero de jugadores (1 o 2)
int k;
while(1){
k = SimpleIO.readInt(); //esto lee un entero introducido
if(k == 1 || k == 2){
return k;
}
else{
System.out.println("ERROR, vuelva a introducir el numero de jugadores");
}
}
}


Una ayuda?  :huh:

EDITO:
Siento haber creado un nuevo tema para nada, porque me ha venido la inspiracion derrepente. He sacado el bucle del metodo y solucionado.
#14
Cita de: Kherom en 11 Enero 2012, 01:07 AM
Si haces el cast a int a mano función( (int)numeroflotante ) evitarás los warnings, ya que para lo único que sirven en éste caso es para indicar una posible pérdida de precisión, que es justamente lo que andas buscando.

De todas formas ahora que me fijo, para que tengas tantos warnings, ¿Llamas a la función una vez por píxel A MANO? xD

Si, lo e los warnings ya lo he arreglado, que para eso esta la herramienta remplazar :P

Es una p***da que en allegro 4 no se puedan meter png, y como con las bmp se ve el cuadradito negro alrededor de la imagen lo he arreglado dibujandolo pixel a pixel. Costoso, pero ya esta hecho xD
40x40 pixeles en color.

Si no conoces el camino rapido te toca andar el largo =S
#15


Muahahaha, 200 warnings pero funciona =D
Que alegria, asi debia sentirse dios cuando le dijeron como compilar el mundo xD

Que funcione es lo de menos, lo importante es que en este post me habeis enseñado varias cosas que tenia que saber.
Muchas gracias por la ayuda ;)
#16
Algo parecido habia intentado yo, pero hay un problemilla:

posx y posy deben ser enteros para poder mostrar el grafico del personaje:

Código (c++) [Seleccionar]
void putpixel(BITMAP *bmp, int x, int y, int color); //si, dibujo al personaje en pantalla pixel a pixel...  :rolleyes:

El codigo que has puesto seria perfecto si la pantalla fuera mas grande, pero siendo como es la velocidad perfecta es de 0,1 o 0,2 pixeles por frame.

Código (cpp) [Seleccionar]
float velocidad = 0.2;
posx += (int)velocidad;


El personaje no se mueve. Por ello he utilizado el contador, para movel el personaje cada v frames, siendo v la velocidad.

Por lo demas todo perfecto, voy a arreglar y a probar el codigo. Gracias.
#17
Cita de: SirLanceCC en  8 Enero 2012, 17:53 PM
Nada de módulos ni cosenos, necesitas trabajar un poco más con vectores.

Tienes la posición de tu personaje en un vector P, y donde haces clic en otro vector D.
Para obtener un vector que vaya de P a D, resta D - P.
Ahora tienes un vector de un tamaño que puede ser cualquiera, para adaptarlo a tus necesidades lo conviertes en vector unitario, lo multiplicas por la velocidad deseada y le llamas V.
Para avanzar sumamos P += V.

Ahora bien, para calcular el vector unitario se divide X y Y entre la longitud del vector y si el vector mide cero estamos en las mismas (fuuuuuu!!!). Para arreglar eso definimos so un vector mide cero su vector unitario es (0,0). Cuando multipliques por la velocidad seguirá siendo (0,0) y cuando actualices P no cambiará su valor, pero de todos modos habrás llegado a tu destino.

Espero que sea de ayuda.

Tienes razon, mejor trabajar con vectores que con 2 variables.
Sobre tu planteamiento...
El vector unitario tiene de modulo 1, por tanto el desplazamiento en x y en y va a ser menor de uno por cada frame, y no puedo desplazarme medios pixeles. Al pasarlo a int va a ser siempre 0. (si no me equivoco).
#18
Código (cpp) [Seleccionar]
      double tangente;
      if(posx != derx)
              tangente = dery - posy/derx - posx;
      else
              tangente = 10; //un valor maximo
      double angulo = atan(tangente);
     
     
      if(contador % velocidad_bacteria == 0){ //para que no se mueva demasiado rapido

                 posx += (int)(sin(angulo)*5);
                 posy += (int)(cos(angulo)*5);}


Pero con este codigo...

no se como trabajar con los doubles si los pixeles el numero de pixeles es entero... =S
#19
Cita de: SirLanceCC en  8 Enero 2012, 11:12 AM
distanciax = derx - posx;
distanciay = dery - posy;
float distancia = distanciax/distanciay;


Si dery y posy son iguales, al calcular distancia se produce una división entre cero y el programa termina.

Eso es! por eso terminaba el programa =D

Lo he arreglado pero la trayectoria del personaje no es la que esperaba TT.TT

Lo intentare plantear de otra manera, gracias Sir

Cita de: Kherom en  8 Enero 2012, 16:37 PM
Lo que yo no entiendo es el por qué de esa división xD Lo lógico sería hacerlo al revés para obtener la tangente...

De todas formas a mí los floats nunca se me han quedado a cero exacto, aunque podría ser.

Quizas es porque me pasaba las clases de trigonometria haciendo dibujitos en la mesa jajaja

Es broma, lo intentare plantear mejor. Gracias por la ayuda khenom.
#20
Cita de: Kherom en  6 Enero 2012, 17:18 PM
¿El segundo código va dentro de un while? ¿Cuál es la condición de parada?

Así sin mirar mucho el programa no parece que hayas accedido a memoria que no debes por lo que lo normal es que se te cuelgue si entra en bucle infinito.

De todas formas no he hecho mucho caso al código por que me parece raro de cojones, ¿Por qué no te limitas a sumar a la posición un vector velocidad multiplicado por el tiempo entre frames?

El segundo codigo va igual que el primero dentro de un while (!key[KEY_ESC]){...} para que el juego pare cuando se pulse Esc.
El personaje(posx, posy) para cuando llega a la posicion en la que pulsamos(derx, dery)

En este segundo codigo lo que intento es calcular la diferencia de distancia entre el personaje y el destino en el eje x y en el eje y, para calcular la proporcion en la que tienen que aumentar o disminuir las coordenadas del personaje para ir en la direccion correcta.

Aun llevo poco en el mundo de la programacion y esta es la primera vez que intento hacer algo parecido, asi que si sabes hacerlo mas sencillo dime como :P