Programación Específica > Programación de Videojuegos
Algoritmo De Bresenham
el__dick:
Aver me explico,toy implementando un pekeño tenis en ensamblador y me olbigan a utilizar este o otro tipo e algoritmos q cambien los rebotes xq sino la partida como q es muy aburrida, e implementao el algoritmo de Bresenham en ensamblador pero ahora no se como utilizarlo xq este algoritmo de basa en la diferencias entre las coordenadas X de dos puntos, pero claro tu cuando rebota la bola no sabes cual es el siguiente rebote ni nada de eso, estoy atrancado en esta parte, si alguien lo a utilizao o sabe como acerlo me gustaría q me exase una mano.
Espero noticias. GRACIAS.
el__dick:
No leais tantoy contestar aunq sean ideas q este toy to atrancao y x mas q pienso no se x donde seguir, enga os dejo q sigais pensando :P
ADIOS :kicking:
ArKaNtOs:
tu problema no es el lenguaje sino la lógica, en cuanto al algoritmo de bresenham es solo un algoritmo para crear lineas sin errores, ahora se supone que tu debes de saber siempre las coordenadas de donde se encuentra la bola sino como es que se esta moviendo?, cuando tu dices que no sabes hacia donde se va a ir la pelota, pues supongo que has hecho una macro para calcular este proceso, además ese es parte del algoritmo darle unas coordenadas iniciales y unas finales, en el caso del pong, estas coordenadas pueden ser interrumpidas si la barra golpea la bola no es así?, solo es ir pensando en ello :)
el__dick:
Claro,yo lo q he exo es ir sumando uno a cada componente, x e y de la bola y en el momento q llegue a los limites de la pantalla pos multiplicar por -1 el incremento de la x o de la y, la q en ese momento este en los limites. Pero aún así sigo sin saber como integrar el algoritmo,q tendría q acer pasarlo para el punto en el que esta?, x ejemplo (x,y), y para el siguiente q sería (x+incremento,y+incremento)? lo malo de esto esq kizás el siguiente punto este antes q el inicial x lo tanto la diferencia en las X sería negativa y así el algoritmo no funciona...........jaja vaya mierda de rayadas navideñas jaja. Te paso mi subrutina para el movimiento de la pelota y si tienes alguna duda de como integrarlo dejamlo indicao o algo. Tiene algunos fallilos todavia la función pero en general esta bien,pero no tiene salida jaja aora mismo la bola se mueve eternamente :P
Bueno GRACIAS x preocuparte.
--- Código: Text --- rebotes proc push ax push dx mov ax,0A000h mov es,ax mov ax,158 mov dx,98rebota: ; al final tendr‚ q acer popdx popax cuando salga de la funcion jmp comprueba jmp incrementapunto sigue: bola ax,dx push cx push bx ;nose xq ago esto pero ace q funcione mov cx,50; 1 s mov bx,596;--> esta instruccion lo casca to; 1/200 sBucle_1_segundo: call Retardo loop Bucle_1_segundo pop bx ;es necesareo para q funcione pop cx borrar_bola ax,dx jmp rebota comprueba: cmp ax,319 jz rebotaX cmp ax,1 jz rebotaX compruebay: cmp dx,167 jz rebotaY cmp dx,1 jz rebotaY incrementapunto: add ax,incrementox add dx,incrementoy jmp sigue rebotaX: neg incrementox jmp compruebay rebotaY: neg incrementoy jmp incrementapunto rebotes endp
BlackWind:
que tal,
algo sencillo que se me ocurre es:
1.- En cuanto la bola rebote con la barra, generes un punto aleatorio en X con el borde superior o inferior de la pantalla
es decir, suponiendo que la pantalla mide 400x300, el punto aleatorio X siempre estaria entre 0 y 400 y el punto en Y siempre seria o 0 o 300, ejemplos:
(10,0), (55,0), (315,300)
2.- Ya tienes el nuevo punto XY y tambien tienes el punto XY de la bola, ya con eso puedes implementar el algoritmo de bresenham y que la bola vaya moviendose por todos los puntos que genera el algoritmo....
Nota: que esos pasos solo se hagan cuando la pelota choca con la barra, porque si tambien se hace cuando choca con la pared de arriba o de abajo, podria generar direcciones muy extrañas......
saludos,
Navegación
[#] Página Siguiente
Ir a la versión completa