User Tag List

Resultados 1 al 10 de 10

Tema: Algun ejemplo o source de un juego de billar

  1. #1

    Fecha de ingreso
    Jul 2004
    Mensajes
    209
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts

    Lightbulb Algun ejemplo o source de un juego de billar

    Bueno pues eso :Algun ejemplo o source de un juego de billar

    es que quiero empezar y hacer un juego de billar ya que no he visto ni uno solo para la gp32

    LifeNintendoTu nuevo portal sobre Nintendo.

  2. #2

    Fecha de ingreso
    Jul 2004
    Mensajes
    209
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    Venga una ayudita para estas navidades ponerme e intentar hacer un juego de billares...

    LifeNintendoTu nuevo portal sobre Nintendo.

  3. #3

    Fecha de ingreso
    Jul 2004
    Mensajes
    209
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    que pasa nadie me ayuda? Nadie sabe?

    LifeNintendoTu nuevo portal sobre Nintendo.

  4. #4

    Fecha de ingreso
    Jun 2004
    Ubicación
    La grandisima Valencia!!
    Mensajes
    279
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts

    pues...

    lo siento, yo tengo ni P. idea, lo único que se, esque que yo sepa, no hay ningun juego de billar para la GP, y eso que me encantan...

    Seria genial que hicieras uno

    Enga chicos, ayudadle si podeis!


    -Vegeta-
    Visca València!!!!!!!

  5. #5

    Fecha de ingreso
    Jul 2004
    Mensajes
    17,132
    Mencionado
    113 Post(s)
    Tagged
    1 Tema(s)
    Agradecer Thanks Given 
    703
    Agradecer Thanks Received 
    1,014
    Thanked in
    Agradecido 556 veces en [ARG:2 UNDEFINED] posts
    pues si,juegos de billares no hay ninguno en la gp32,salvando los juegos para emuladores como el fgen, asi que seria una sorprendente noticia que hubiese un juego de este tipo para la gp32...,animo con el proyecto...

  6. #6

    Fecha de ingreso
    Apr 2004
    Mensajes
    114
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    Te he respondido la duda q posteaste en mi foro .

  7. #7

    Fecha de ingreso
    Jul 2004
    Mensajes
    102
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    Yo te animo 100% y no creo que sea demasiado difícil, por que supongo que lo único importante seria el algoritmo de rebote de las bolas, el resto ya seria pan comido.
    Supongo que viendo el source de algún juego en el que algún elemento tenga que rebotar (Como el del mini golf, pero no se si es libre) y modificándolo un poco ya tendrías un 50% (vamos, ingeniería inversa, por así decirlo)
    Un saludo

  8. #8

    Fecha de ingreso
    Jul 2004
    Mensajes
    209
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    Bueno ya Netrix me dejo el código, es de Div2 lo dejo por aqui para si alguien quiere hacer el juego...

    Yo empezare en navidades ...
    NO se nada de Fénix haber si me sale esto....

    //-----------------------------------------------
    //Program:
    //Author:
    //Team:
    //-----------------------------------------------
    //---------------------------------------------
    //TITULO: TOTAL BILLIARDS
    //AUTOR: DANIEL NAVARRO
    //FECHA: 1/15/97
    //--------------------------------------------

    Program spanish_billar;
    Begin
    Const
    radio_bola=14; // Radio de la bola
    x_reg_mesa=62-radio_bola; // Region de la mesa
    y_reg_mesa=104-radio_bola;
    ancho_reg_mesa=580-62+radio_bola*2; // Region de la ventana
    alto_reg_mesa=375-104+radio_bola*2;

    pos_toque_x=604; // Posicion de toque en efecto
    pos_toque_y=452;

    Global
    puntuacion1; // Numero de carambolas con la bola blanca
    puntuacion2; // Numero de carambolas con la bola amarilla

    blanco; // Identificadores de las bolas
    amarillo;
    rojo;

    ultimo; // Controla la ultima colision
    quien; // Identificador de la bola que colisiona
    turno; // Controla turno de los jugadores

    sonido0; // Identificadores de sonido
    sonido1;

    vtotal0; // Velocidad total de la bola blanca
    vtotal1; // Velocidad total de la bola amarilla
    modos[]="Apuntar","Efecto","Tiro";
    txt_puntuacion[]="7 Puntos","21 Puntos","40 Puntos";
    puntuacion=0; // modos[] y txt_puntuacion[] texto que cambian
    puntuaciones[]=7,21,40;
    txt_modo; // Identificador para txt_puntuacion[]
    modo; // Identificador de modo
    id_efectos; // Identificador de efectos
    efecto_vert; // Efecto vertical
    efecto_horiz; // Efecto horizontal
    choque_contraria=0; // Comprueba el choque con la bola contraria
    choque_roja=0; // Comprueba el choque con la bola roja
    Local
    velocidad=0; // Velocidad de bola
    avelocidad=0; // Velocidad acumulada
    ang=0; // Direccion

    x_resol; // Coordenadas * 100
    y_resol;

    incr_x; // X incremento
    incr_y; // Y incremento

    Private
    ngulo2=0; // Movimiento de la bola
    inc_ ngulo2=0;

    opci¢n=0; // Opci¢n del menu
    opciones[2]; // Identificador de texto
    fin_juego=0; // Bandera. 1=Fin ded juego
    ultima_x; // Ultimas posiciones del rat¢n
    ultima_y;
    Begin
    set_mode(m640x480);
    set_fps(30,0);

    load_fpg("billar\billar.fpg"); // Carga graficos
    load_fpg("billar\b_menu.fpg");

    load_fnt("billar\billar.fnt"); // Carga letras
    load_fnt("billar\numeros.fnt");
    load_fnt("billar\titulo.fnt");
    load_fnt("billar\menu.fnt");

    sonido0=load_pcm("billar\billar0.pcm",0); // Carga sonidos
    sonido1=load_pcm("billar\banda.pcm",0);

    // Crea una ventana
    define_region(1,x_reg_mesa,y_reg_mesa,ancho_reg_me sa,alto_reg_mesa);

    Loop
    // Carga la paleta para que los gr ficos salgan bien
    load_pal("billar\b_menu.fpg");
    put_screen(1,1); // Pone la pantalla de fondo

    // Imprime mensajes
    write(3,320,4,1,"TOTAL BILLIARD");
    opciones[0]=write(4,400,320,0,"Empezar");
    opciones[1]=write(4,400,354,0,txt_puntuacion[puntuacion]);
    opciones[2]=write(4,400,388,0,"Salir al DOS");
    write(4,320,480,7,"Daniel Navarro DIV Games Studio");

    // Selecciona el gr fico del taco para el cursor
    file=1;
    graph=2;

    // Renicia las variables del cursor
    y=342; incr_y=0; ngulo2=0;
    opci¢n=0;

    fade_on(); // Enciende la pantalla

    Repeat // Menu
    ultima_y=mouse.y; // Guarda la posici¢n del rat¢n para mirar si hay cambio
    x=17+get_distx(ang,16);
    If ((ang+=pi/8)>pi)
    ang-=2*pi;
    End

    // Comprueba si se ha elegido una opci¢n
    If (opci¢n<>0 AND ang<pi/15 AND ang>-pi/15)
    incr_x=400;
    // Repite hasta que desaparezca el texto
    Repeat
    move_text(opciones[opci¢n-1],incr_x+=16,incr_y);
    Frame;
    Until (incr_x>640) // Cambia texto
    // Se ha elegido la opcion de cambiar tipo de juego
    If (opci¢n==2)
    delete_text(opciones[1]);
    puntuacion=++puntuacion%3;
    opciones[1]=write(4,incr_x=640,incr_y,0,txt_puntuacion[puntuacion]);
    Repeat
    move_text(opciones[1],incr_x-=16,incr_y);
    Frame;
    Until (incr_x==400)
    opci¢n=0;
    incr_y=0;
    Else
    opci¢n-=4;
    End
    End
    If (incr_y==0) // Cuando el palo este sobre una opci¢n
    If (key(_enter) OR mouse.left OR
    key(_control) OR key(_space)) // Selecciona esa opci¢n
    incr_y=y-22;
    opci¢n=(y-342)/34+1;
    Else
    If ((key(_down) OR mouse.y>ultima_y) AND y<410) // Cambia a otra opci¢n
    incr_y=y+17;
    ngulo2=pi/2;
    inc_ ngulo2=-pi/8;
    End
    If ((key(_up) OR mouse.y<ultima_y) AND y>342) // Cambia a otra opci¢n
    incr_y=y-17;
    ngulo2=-pi/2;
    inc_ ngulo2=pi/8;
    End
    End
    End

    If (inc_ ngulo2<>0) // Detiene el incremento vertical
    ngulo2+=inc_ ngulo2;
    y=incr_y+get_disty( ngulo2,17);
    If (inc_ ngulo2<0)
    If ( ngulo2<-pi/2)
    y=incr_y+17;
    incr_y=0;
    inc_ ngulo2=0;
    End
    Else
    If ( ngulo2>pi/2)
    y=incr_y-17;
    incr_y=0;
    inc_ ngulo2=0;
    End
    End
    End
    // comprueba la pulsacion de la tecla escape
    If (key(_esc))
    opci¢n=-1;
    End
    Frame;
    Until (opci¢n<0)
    // Borra todo y apaga la pantalla
    fade_off();
    clear_screen();
    delete_text(all_text);
    graph=0;
    Frame;

    If (opci¢n==-1) // Sale del programa
    exit("Gracias por jugar!!!",0);
    Frame;
    End

    load_pal("billar\billar.fpg"); // Carga la paleta de colores

    // Imprime los textos necesarios
    write(1,12,6,0,"Jugador 1");
    write(1,628,6,2,"Jugador 2");
    write_int(2,115,0,0,&puntuacion1);
    write_int(2,525,0,2,&puntuacion2);

    // Pone los gr ficos de la mesa y la bola de efectos
    put(0,1,320,240);
    put(0,8,pos_toque_x,pos_toque_y);

    // Crea el proceso que maneja los efectos
    id_efectos=efecto();

    // Escribe el texto del turno
    write(1,12,428,0,"Jugador");
    write_int(1,98,428,0,&turno);
    fade_on();

    // Crea las bolas
    blanco=bola(3,320,240);
    amarillo=bola(4,128,240-48);
    rojo=bola(5,128,240+48);


    // Valores iniciales
    fin_juego=0;
    choque_contraria=0;
    choque_roja=0;
    puntuacion1=0;
    puntuacion2=0;
    ultimo=0;
    quien=0;
    turno=2;

    Repeat // Bucle principal
    // Comprueba que este parado todo y que no haya palo, es decir, el fin de la tirada
    If (blanco.velocidad==0 AND amarillo.velocidad==0 AND rojo.velocidad==0 AND NOT get_id(Type palo))
    // Si no ha chocado con las dos bolas a la vez,
    // es que no ha sido una carambola
    If (NOT (choque_contraria AND choque_roja))
    // Cambia de turno
    If (turno==1)
    turno=2;
    Else
    turno=1;
    End
    Else
    // Carambola conseguida
    If (turno) // Mira quien jugaba en ese turno
    // Mira los puntos obtenidos hasta ahora
    If (++puntuacion1==puntuaciones[puntuacion])
    x=800;
    quien=write(1,x,240,4,"Jugador uno gana");
    From x=800 To 319 Step -8;
    move_text(quien,x,240);
    Frame;
    End
    From x=0 To 29;
    Frame;
    End
    fin_juego=1;
    End
    Else
    // Comprueba y hace lo mismo que antes pero para el otro jugador
    If (++puntuacion2==puntuaciones[puntuacion])
    x=800;
    quien=write(1,x,240,4,"Jugador dos gana");
    From x=800 To 320 Step -8;
    move_text(quien,x,240);
    Frame;
    End
    From x=0 To 29;
    Frame;
    End
    fin_juego=1;
    End
    End
    End

    // Comprueba si no ha acabado
    If (NOT fin_juego)
    // Pone el palo dependiendo del turno al lado de la bola apropiada
    If (turno)
    palo(blanco);
    Else
    palo(amarillo);
    End
    choque_contraria=0;
    choque_roja=0;
    End
    End

    // Si se pulsa la tecla escape sale del juego
    If (key(_esc))
    fin_juego++;
    End
    Frame;
    Until (fin_juego)

    fade_off();
    signal(id,s_kill_tree);
    signal(id,s_wakeup);
    clear_screen();
    delete_text(all_text);
    Frame;
    End
    End

    //------------------------------------------------------------------------------
    // Proceso bola
    // Maneja la bola
    //------------------------------------------------------------------------------

    Process bola(graph,x,y);

    Private
    id_colisiones; // Identificador de colisiones
    dir_final; // Direccion despues de la colision

    veloc_final_x; // Velocidad final despues de la colision
    veloc_final_y;

    longitud; // Longitud a un punto

    ultima_pos_x; // Ultima posicion
    ultima_pos_y;

    Begin

    sombra(6); // Pone la sombra de la bola

    x_resol=x*100; // Coge las coordenadas multiplicadas por 100
    y_resol=y*100;

    Loop

    avelocidad+=velocidad;

    // Hasta que pare
    While (avelocidad>100)

    avelocidad-=100; // A cada paso decrementa la velocidad

    ultima_pos_x=x_resol; // Guarda posicion
    ultima_pos_y=y_resol;

    // Mueve la bola
    incr_x=get_distx(ang,100);
    x_resol+=incr_x;
    incr_y=get_disty(ang,100);
    y_resol+=incr_y;

    // Comprueba el rebote con las bandas de manera vertical
    If ((y_resol<=10400 AND incr_y<0) OR (y_resol>=37400 AND incr_y>0))
    velocidad=velocidad*7/10; // Reduce la velocidad
    sound(sonido1,80*velocidad/4000,100); // Hace un sonido de rebote
    // Cambia el ngulo para que rebote
    ang=fget_angle(x,y,x+incr_x,y-incr_y)+efecto_horiz*(pi/96);
    // Quita cualquier efecto que existiera
    efecto_vert=80;
    efecto_horiz=0;
    End

    // Comprueba el rebote con las bandas de manera horizontal
    If ((x_resol<=6200 AND incr_x<0) OR (x_resol>=57900 AND incr_x>0))
    velocidad=velocidad*7/10;
    sound(sonido1,30+50*velocidad/5000,100);
    ang=fget_angle(x,y,x-incr_x,y+incr_y)+efecto_horiz*(pi/96);
    efecto_vert=80;
    efecto_horiz=0;
    End

    // Carga las coordenadas reales del gr fico con las temporales
    x=x_resol/100;
    y=y_resol/100;

    // Comprueba si ha chocado con una bola
    id_colisiones=collision(Type bola);
    If (id_colisiones)
    // Mira si esta colision no esta mirada y no es con esta bola
    If (ultimo<>id_colisiones+id OR quien<>id)
    // Guarda los identificadores para proximas comprobaciones
    quien=id;
    ultimo=id_colisiones+id;

    // Comprueba si ha chocado la bola blanca con la amarilla
    If (ultimo==blanco+amarillo)
    choque_contraria=true;
    End

    // Mira que bola tiene el turno
    If (turno)
    // Y comprueba si choca con la roja
    If (id_colisiones+id==blanco+rojo)
    choque_roja=true;
    End
    Else
    If (id_colisiones+id==amarillo+rojo)
    choque_roja=true;
    End
    End

    sound(sonido0,512,256); // Sonido de colision

    avelocidad+=100;
    // Las bolas rebotan
    // Primero coge los incrementos horizontal y vertical de una bola
    incr_x=get_distx(ang,velocidad);
    incr_y=get_disty(ang,velocidad);

    // Y los mismo incrementos de la otra
    id_colisiones.incr_x=get_distx(id_colisiones.ang,i d_colisiones.velocidad);
    id_colisiones.incr_y=get_disty(id_colisiones.ang,i d_colisiones.velocidad);

    // Suma la velocidades, que es lo mismo que la fuerza total
    vtotal0=velocidad+id_colisiones.velocidad;

    // Halla el angulo que hay entre las dos bolas que chocan
    dir_final=get_angle(id_colisiones)+efecto_horiz*(p i/96);

    // Suma los incrementos sacando dos que es igual a la velocidades
    veloc_final_x=incr_x+id_colisiones.incr_x;
    veloc_final_y=incr_y+id_colisiones.incr_y;

    // Halla la longitud del vector entre las dos bolas,
    // que es proporcional a la suma de las velocidades
    longitud=fget_dist(x,y,x+veloc_final_x,y+veloc_fin al_y)*efecto_vert/100;

    // Borra los efectos una vez que han colisionado
    efecto_vert=80;
    efecto_horiz=0;

    // A la bola que choca se le resta el vector
    // total del choque
    incr_x-=get_distx(dir_final,longitud);
    incr_y-=get_disty(dir_final,longitud);

    // Y se hallan los nuevos valores para dicha bola
    ang=fget_angle(x,y,x+incr_x,y+incr_y);
    velocidad=fget_dist(x,y,x+incr_x,y+incr_y);

    // A la bola que recibe el choque se le suma
    // el vector total que ha salido del choque
    id_colisiones.incr_x+=get_distx(dir_final,longitud );
    id_colisiones.incr_y+=get_disty(dir_final,longitud );

    // Y se actualizan sus valores de ngulo y velocidad
    id_colisiones.ang=fget_angle(x,y,x+id_colisiones.i ncr_x,y+id_colisiones.incr_y);
    id_colisiones.velocidad=fget_dist(x,y,x+id_colisio nes.incr_x,y+id_colisiones.incr_y);

    // Por ultimo se hace una media con la fuerza inicial
    // para que en vez de ser proporcional, sea identica
    vtotal1=velocidad+id_colisiones.velocidad;
    velocidad=vtotal0*velocidad/vtotal1;
    id_colisiones.velocidad=vtotal0*id_colisiones.velo cidad/vtotal1;

    avelocidad=velocidad;
    id_colisiones.avelocidad=id_colisiones.velocidad;

    End

    x_resol=ultima_pos_x; // Restaura posicion
    y_resol=ultima_pos_y;

    Else
    // Si el identificador es el de la propia bola
    // borra cualquier rese¤a del choque
    If (quien==id)
    ultimo=0;
    End

    End

    Frame(0); // Refresca pantalla

    End

    x=x_resol/100;
    y=y_resol/100;

    Frame;
    // Parando las bolas
    If (velocidad>10)
    velocidad-=10;
    If (efecto_vert>80)
    efecto_vert-=2;
    velocidad+=(efecto_vert-80)/10;
    End
    If (efecto_vert<80)
    efecto_vert++;
    velocidad-=(80-efecto_vert)/2;
    End
    Else
    // Se ha parado completamente
    velocidad=0;
    End

    End
    End

    //------------------------------------------------------------------------------
    // Proceso sombra
    // Muestra las sombras de la bola y el palo
    //------------------------------------------------------------------------------

    Process sombra(graph);

    Begin
    region=1; // Elige la regi¢n
    z=1; // Lo pone por debajo de las bolas
    flags=4; // Lo pone transparente
    priority=-1; // Hace que se ejecute despues de la bola
    Loop
    angle=father.angle; // Coge el angulo del padre
    x=father.x+8; // Sigue al proceso que lo llamo
    y=father.y+8; // el palo o la bola
    Frame;
    End
    End

    //------------------------------------------------------------------------------
    // Proceso palo
    // Controla el palo
    //------------------------------------------------------------------------------
    Process palo(idbola);

    Private
    ultima_pos_rat¢n; // Ultima posicion del raton
    real_x_rat¢n; // Coordenadas reales del raton
    real_y_rat¢n;
    fuerza; // Fuerza de lanzamiento
    distancia; // Para coger la distancia
    ngulo_res; // Para coger el angulo

    Begin
    sombra(7); // Crea la sombra del palo

    // Imprime el modo de juego
    txt_modo=write(1,114,428,0,modos[modo=0]);

    mouse.x=320; // Centra el raton
    mouse.y=240;
    graph=2; // Elige el gr fico del palo
    ultima_pos_rat¢n=mouse.x;
    // Coge las coordenadas respecto a la bola que se¤ala
    x=idbola.x;
    y=idbola.y;
    angle=-pi/2; // Angulo inicial
    // Posicion inicial de los efectos
    id_efectos.x=pos_toque_x;
    id_efectos.y=pos_toque_y;

    Loop
    // Esta en el modo de apuntar con el taco
    If (modo==0)
    // Actualiza la posici¢n del taco con la del rat¢n
    angle-=(ultima_pos_rat¢n-mouse.x)*(pi/256);
    ultima_pos_rat¢n=mouse.x;
    // Hace que el raton este entre 512 y 512
    If (mouse.x<128)
    mouse.x+=320;
    ultima_pos_rat¢n=mouse.x;
    End
    If (mouse.x>512)
    mouse.x-=320;
    ultima_pos_rat¢n=mouse.x;
    End
    // Comprueba si se ha pulsado el bot¢n del rat¢n
    If (mouse.left)
    // Borra el texto antiguo y pone el nuevo
    delete_text(txt_modo);
    txt_modo=write(1,114,428,0,modos[1]);
    // Centra el rat¢n
    mouse.x=320;
    mouse.y=240;
    // Espera a que se suelte el bot¢n del rat¢n
    Repeat
    Frame;
    Until (NOT mouse.left)
    // Cambia el modo de tratar el taco
    modo=1;
    // Coge las coordenadas del rat¢n y las guarda en variables propias
    real_x_rat¢n=mouse.x;
    real_y_rat¢n=mouse.y;
    Else
    // Si no se pulsa el rat¢n crea el visor
    visor(idbola,angle+pi);
    End
    End
    // Modo en el que se selecciona efecto
    If (modo==1)

    // Actualiza el afecto dependiendo de las coordenadas del rat¢n
    id_efectos.x=pos_toque_x+(mouse.x-real_x_rat¢n)/3;
    id_efectos.y=pos_toque_y+(mouse.y-real_y_rat¢n)/3;

    // Coge la distancia del centro de la bola a la posici¢n del efecto
    distancia=fget_dist(pos_toque_x,pos_toque_y,id_efe ctos.x,id_efectos.y);

    // Si la longitud es mayor que 22 la trunca para hacerlo redondo
    If (distancia>22)
    ngulo_res=fget_angle(pos_toque_x,pos_toque_y,id_ef ectos.x,id_efectos.y);
    id_efectos.x=pos_toque_x+get_distx( ngulo_res,22);
    id_efectos.y=pos_toque_y+get_disty( ngulo_res,22);
    End

    // Mira si se pulsa el bot¢n del rat¢n
    If (mouse.left)

    // Borra el texto antiguo
    delete_text(txt_modo);

    // Pone el texto nuevo
    txt_modo=write(1,114,428,0,modos[2]);

    // Centra el rat¢n
    mouse.x=320;
    mouse.y=240;

    // Espera a que se suelte el bot¢n del rat¢n
    Repeat
    Frame;
    Until (NOT mouse.left)
    // Actualiza las variables del proceso
    ultima_pos_rat¢n=mouse.y;
    real_x_rat¢n=x;
    real_y_rat¢n=y;
    // Cambia el modo de acci¢n del taco
    modo=2;
    // Guarda los efectos elegidos en sus variables
    efecto_vert=id_efectos.y-pos_toque_y;
    If (efecto_vert<0)
    efecto_vert=80-28*-efecto_vert/22;
    Else
    efecto_vert=80+efecto_vert*120/22;
    End
    efecto_horiz=id_efectos.x-pos_toque_x;
    End
    End
    // Modo de taco de seleccion de fuerza
    If (modo==2)
    // Coloca el taco en relaci¢n a las coordenadas del rat¢n
    x=real_x_rat¢n+get_distx(angle,mouse.y-240);
    y=real_y_rat¢n+get_disty(angle,mouse.y-240);
    // Si se pasa de un limite significa que se ha hecho el tiro
    If (mouse.y<232)
    // Borra el texto de modo
    delete_text(txt_modo);
    // Hace un sonido
    sound(sonido1,100,128);
    // Halla la fuerza, dependiendo de la £ltima posici¢n del rat¢n
    fuerza=(ultima_pos_rat¢n-mouse.y)*100;
    // Comprueba si la fuerza se pasa de los limites permitidos
    If (fuerza<200)
    fuerza=200;
    End
    If (fuerza>8000)
    fuerza=8000;
    End
    // Guarda la fuerza como velocidad de la bola
    idbola.velocidad=fuerza;
    // Y pone el ngulo apropiado a la bola
    idbola.ang=angle+pi;
    // Borra todo y se prepara para salir del proceso
    ultimo=0;
    signal(id,s_kill);
    signal(son,s_kill);
    End
    // Comprueba si se pulsa el bot¢n del rat¢n
    If (mouse.left)
    // Borra el texto antiguo y pone el nuevo
    delete_text(txt_modo);
    txt_modo=write(1,112,428,0,modos[0]);
    // Actualiza la posici¢n del taco al lado de la bola
    x=idbola.x;
    y=idbola.y;
    // Centra el rat¢n
    mouse.x=320;
    mouse.y=240;
    // Espera hasta que se suelte el bot¢n del rat¢n
    Repeat
    Frame;
    Until (NOT mouse.left)
    // Cambia de modo
    ultima_pos_rat¢n=mouse.x;
    modo=0;
    Else
    // Actualiza la £ltima posici¢n del rat¢n
    ultima_pos_rat¢n=mouse.y;
    End
    End
    Frame;
    End
    End

    //------------------------------------------------------------------------------
    // Proceso visor
    // Muestra donde ira la bola
    //------------------------------------------------------------------------------

    Process visor(idbola,ang);

    Private
    impacto=0; // Bandera. 1=impacto 0=no impacto
    id_bola2; // Identificador de la bola

    Begin
    z=2;
    // Inicialmente coge el gr fico de la bola para comprobar colisiones
    graph=idbola.graph;
    // Tambi‚n coge las coordenadas de la bola que es lanzada
    x_resol=idbola.x_resol;
    y_resol=idbola.y_resol;
    Repeat

    // Mueve el visor un punto en el ngulo deseado
    incr_x=get_distx(ang,100);
    x_resol+=incr_x;
    incr_y=get_disty(ang,100);
    y_resol+=incr_y;

    // La coloca en la nueva posici¢n
    x=x_resol/100;
    y=y_resol/100;

    // Testea limites de la mesa
    If ((y_resol<=10400 AND incr_y<0) OR (y_resol>=37400 AND incr_y>0) OR (x_resol<=6200 AND incr_x<0) OR (x_resol>=57900 AND incr_x>0))
    impacto=1;
    End

    // Va comprobando si colisiona con cualquiera otra bola
    id_bola2=collision(Type bola);
    While (id_bola2)
    If (id_bola2<>idbola)
    impacto=1;
    End
    id_bola2=collision(Type bola);
    End
    Frame(0); // Hace que no aparezca en pantalla
    Until (impacto) // Busca la posicion del visor hasta que colisiones
    graph=9; // Selecciona ya el gr fico propio del visor
    Frame; // Ahora ya puede mostrar el gr fico del visor
    End

    //------------------------------------------------------------------------------
    // Proceso efecto
    // Muestra la posicion del toque
    //------------------------------------------------------------------------------

    Process efecto();

    Begin
    // Coge las coordenadas de la posici¢n de toque
    x=pos_toque_x;
    y=pos_toque_y;
    graph=6; // Selecciona el gr fico
    size=29; // Y cambia el tama¤o porque es muy grande
    Loop
    Frame;
    End
    End

    LifeNintendoTu nuevo portal sobre Nintendo.

  9. #9

    Fecha de ingreso
    Nov 2004
    Mensajes
    23
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    yo tengo el div2, libro y cd, me lo compre hace 2 dias, si alguien me explica a compilarlo y luego a pasarlo a fenix, yo lo ago, eso si, seria de chopi

    PONGO SOLO ESTOS POR SUS CANCIONES

  10. #10

    Fecha de ingreso
    Jul 2004
    Mensajes
    209
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    Bart si quieres crealo, yo es que no se de fenix ni de programación a lo mejor Netrix o alguien sabe que te heche una mano ....

    Lo dicho yo me pondria para las navidades

    LifeNintendoTu nuevo portal sobre Nintendo.

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •