User Tag List

Página 2 de 3 PrimerPrimer 123 ÚltimoÚltimo
Resultados 16 al 30 de 31

Tema: No puedo abrir archivos .dcb

  1. #16

    Fecha de ingreso
    Feb 2010
    Mensajes
    18
    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
    Perdón xD
    Me dice:
    Error in file mahpong.prg at line 56: Undefined procedure <"DIBUJAR">

  2. #17

    Fecha de ingreso
    Sep 2005
    Mensajes
    16,926
    Mencionado
    283 Post(s)
    Tagged
    1 Tema(s)
    Agradecer Thanks Given 
    1,219
    Agradecer Thanks Received 
    2,708
    Thanked in
    Agradecido 1,868 veces en [ARG:2 UNDEFINED] posts
    El coooodigo, necesito el cooodigo, al menos, las primeras 56 lineas ;D
    Básicamente, ese error te dice que has llamado a un proceso o función llamado "dibujar", pero no has escrito el código de ese proceso o bien te has equivocado al escribir el nombre.
    Pero no es el único error que te puede dar ese mensaje: olvidarte de poner punto y coma, dos puntos, un paréntesis, los paréntesis de la función... por eso necesito ver el código.

    Si tienes miedo de que te lo miren por el foro, podrías mandármelo por MP. Pero si dices que sigues un tutorial no debería haber problema. Tampoco creo que te vayan a robar 56 lineas
    PROYECTOS REALIZADOS: FrikiMusic, Motor Scroll Tileado v3.2, Venturer2X (GP2X/WIZ), Echo, Screen Break Time
    PROYECTOS EN MARCHA (algunos): Bennu GP2X: 95% (necesito ayuda) ¡Antes de Halloween!: 92% SpaceH2H: 8%

  3. #18

    Fecha de ingreso
    Feb 2010
    Mensajes
    18
    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
    Me he visto obligado a reempezar el código de nuevo, y he llegado al punto que estaba antes, pero me ha salido un error diferente.:

    FXC 0.92a (Apr 13 2007 13:24:24) - Copyright (C) 1999 José Luis Cebrián Pagüe
    Fenix comes with ABSOLUTELY NO WARRANTY; see COPYING for details

    Error in file meupong.prg at line 11: ";" expected ("GLOBAL")

    Pongo ";", lo quito y hago mil virguerías, pero sigue igual.

    Ahí va el código:

    //--------------------------------------------------------
    //Program: EL MEU PRIMER PONG
    //Autor: Garreny
    //Equip: Garreny' s Pingas
    //--------------------------------------------------------

    ////////////////////////////////////////////
    // Funció inicial

    Program MEUPONG
    Global

    int RESOLUCION_X;
    int RESOLUCION_Y;

    int X_Paleta_1;
    int Y_Paleta_1;
    int Ancho_Paleta_1;
    int Alto_Paleta_1;
    int color_paleta_1;
    BEGIN

    // INICIALITZAR ASPECTES GRÀFICS

    set_title("El meu primer Pong");
    Full_sreeen = false;
    Graph_mode = mode_16bits;
    set_mode (m640x480);
    set_fps(80, 60/10);

    RESOLUTION_X = 640;
    RESOLUTION_Y = 480;

    //ESCRIURE INFORMACIÓ SOBRE EL JOC EN PANTALLA
    write(0,10,10,0,"El meu primer Pong, v. 0.01");
    write(0.10.20.0."Equip Garreny");
    write_int(0,300,10,1,&fps);

    // HEM ACABAT D' INICIALITZAR, LLANCEM EL BUCLE PRINCIPAL
    Controlador:Joc(); //Arranquem el controlador del joc
    END

    /////////////////////////////////////////////
    // Controlador de joc

    Process Controlador_Juego()
    BEGIN

    Inicializar();

    Loop // Bucle principal

    If(key(_esc)) // Si s' apreta esc
    exit(0,0); // Sortir del joc
    End

    Dibujar();

    Frame; // Refrescar pantalla

    End // Del loop

    END

    //////////////////////////////////////////////
    //Inicialitza el joc en el seu estat inicial

    Process Inicialitzar()
    BEGIN

    X_Paleta_1=30;
    Y_Paleta_1=24;
    Ancho_paleta_1=20;
    Alto_Paleta_1=100;

    END

    //////////////////////////////////////////////
    // Dibuixa els elements del joc en pantalla

    Process Dibuixar()
    Begin

    clear_screen();
    drawing_map(0,0);

    // Dibuixar Paleta 1

    drawing_color(rgb(255,255,255));
    draw_box(X_Paleta_1+Ancho_Paleta_1/2, Y_Paleta_1-Alto_Paleta_1/2,
    X_Paleta_1+Ancho_Paleta_1/2, Y_Paleta_1+Alto_Paleta_1/2);
    END
    Última edición por Garreny; 11/02/2010 a las 20:42

  4. #19

    Fecha de ingreso
    Sep 2005
    Mensajes
    16,926
    Mencionado
    283 Post(s)
    Tagged
    1 Tema(s)
    Agradecer Thanks Given 
    1,219
    Agradecer Thanks Received 
    2,708
    Thanked in
    Agradecido 1,868 veces en [ARG:2 UNDEFINED] posts
    No me importa que pongas el código en el idioma que quieras, pero al menos se consecuente con ello
    Lo digo porque:

    // HEM ACABAT D' INICIALITZAR, LLANCEM EL BUCLE PRINCIPAL
    Controlador:Joc(); //Arranquem el controlador del joc
    END

    Process Controlador_Juego()

    Además, no es Controlador:Joc(); sino Controlador_Joc(); A saber qué error te hubiera dado.
    Respecto al que te ha dado ahora, es que en la linea
    Program MEUPONG
    te falta un ; al final de la linea. Según qué versión de Fenix, el error te lo da en la misma linea o en la linea siguiente (supongo que el contador de linea se actualiza antes de tiempo al compilar).
    No te tomes los errores de forma literal, porque en ocasiones salta unas cuantas lineas más adelante de la cuenta: repasa el código, y no olvides compilar cada poco para asegurarte de que lo que escribes está bien hecho, es más fácil corregir 20 líneas que 200.
    PROYECTOS REALIZADOS: FrikiMusic, Motor Scroll Tileado v3.2, Venturer2X (GP2X/WIZ), Echo, Screen Break Time
    PROYECTOS EN MARCHA (algunos): Bennu GP2X: 95% (necesito ayuda) ¡Antes de Halloween!: 92% SpaceH2H: 8%

  5. #20

    Fecha de ingreso
    Mar 2003
    Ubicación
    Vallirana City
    Mensajes
    1,963
    Mencionado
    2 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    31
    Thanked in
    Agradecido 6 veces en [ARG:2 UNDEFINED] posts
    Mirando un poco el error que te da es por lo siguiente:

    If(key(_esc)) // Si s' apreta esc
    exit(0,0); // Sortir del joc
    End

    Dibujar();

    Llamas al proceso Dibujar() (castellano) pero luego defines el proceso como:

    //////////////////////////////////////////////
    // Dibuixa els elements del joc en pantalla

    Process Dibuixar()
    Begin

    clear_screen();

    Frame; // Refrescar pantalla


    Has definido el proceso como Dibuixar (en Català en vez de Dibujar (Castellano)... los dos nombre han de ser iguales).

    Esta claro... Fenix/Bennu no es poliglota

    Es como si a tu hijo le pones de nombre Juanito y luego te extrañas que al llamarlo gritando: Pedrito! no te haga ni caso.
    Última edición por Hokutoy; 12/02/2010 a las 01:54

  6. #21

    Fecha de ingreso
    Feb 2010
    Mensajes
    18
    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
    Bien, gracias, ya he quitado los errores y me ha salido la pantalla, pero debería verse una pala del pong, pero no me aparece...

    Código:
    //--------------------------------------------------------
    //Program: EL MEU PRIMER PONG
    //Autor: Garreny
    //Equip: Garreny' s Pingas
    //--------------------------------------------------------

    ////////////////////////////////////////////
    // Funció inicial

    Program MEUPONG;
    Global

    int RESOLUCION_X;
    int RESOLUCION_Y;

    int X_Paleta_1;
    int Y_Paleta_1;
    int Ancho_Paleta_1;
    int Alto_Paleta_1;
    int color_paleta_1;
    BEGIN

    // INICIALITZAR ASPECTES GRÀFICS

    set_title("El meu primer Pong");
    Full_screen = false;
    Graph_mode = mode_16bits;
    set_mode (m640x480);
    set_fps(80, 60/10);

    RESOLUCION_X = 640;
    RESOLUCION_Y = 480;

    //ESCRIURE INFORMACIÓ SOBRE EL JOC EN PANTALLA
    write(0,10,10,0,"El meu primer Pong, v. 0.01");
    write(0,10,20,0,"Equip Garreny");
    write_int(0,300,10,1,&fps);

    // HEM ACABAT D' INICIALITZAR, LLANCEM EL BUCLE PRINCIPAL
    Controlador_Juego(); //Arranquem el controlador del joc
    END

    /////////////////////////////////////////////
    // Controlador de joc

    Process Controlador_Juego()
    BEGIN

    Inicializar();

    Loop // Bucle principal

    If(key(_esc)) // Si s' apreta esc
    exit(0,0); // Sortir del joc
    End

    Dibujar();

    Frame; // Refrescar pantalla

    End // Del loop

    END

    //////////////////////////////////////////////
    //Inicialitza el joc en el seu estat inicial

    Process Inicializar()
    BEGIN

    X_Paleta_1=30;
    Y_Paleta_1=24;
    Ancho_paleta_1=20;
    Alto_Paleta_1=100;

    END

    //////////////////////////////////////////////
    // Dibuixa els elements del joc en pantalla

    Process Dibujar()
    Begin

    clear_screen();
    drawing_map(0,0);

    // Dibuixar Paleta 1

    drawing_color(rgb(255,255,255));
    draw_box(X_Paleta_1+Ancho_Paleta_1/2, Y_Paleta_1-Alto_Paleta_1/2,
    X_Paleta_1+Ancho_Paleta_1/2, Y_Paleta_1+Alto_Paleta_1/2);
    END
    Última edición por Garreny; 12/02/2010 a las 15:11

  7. #22

    Fecha de ingreso
    Sep 2005
    Mensajes
    16,926
    Mencionado
    283 Post(s)
    Tagged
    1 Tema(s)
    Agradecer Thanks Given 
    1,219
    Agradecer Thanks Received 
    2,708
    Thanked in
    Agradecido 1,868 veces en [ARG:2 UNDEFINED] posts
    Cita Iniciado por Garreny Ver mensaje
    Bien, gracias, ya he quitado los errores y me ha salido la pantalla, pero debería verse una pala del pong, pero no me aparece...

    Código:
    //--------------------------------------------------------
    //Program: EL MEU PRIMER PONG
    //Autor: Garreny
    //Equip: Garreny' s Pingas
    //--------------------------------------------------------

    ////////////////////////////////////////////
    // Funció inicial

    Program MEUPONG;
    Global

    int RESOLUCION_X;
    int RESOLUCION_Y;

    int X_Paleta_1;
    int Y_Paleta_1;
    int Ancho_Paleta_1;
    int Alto_Paleta_1;
    int color_paleta_1;
    BEGIN

    // INICIALITZAR ASPECTES GRÀFICS

    set_title("El meu primer Pong");
    Full_screen = false;
    Graph_mode = mode_16bits;
    set_mode (m640x480);
    set_fps(80, 60/10);

    RESOLUCION_X = 640;
    RESOLUCION_Y = 480;

    //ESCRIURE INFORMACIÓ SOBRE EL JOC EN PANTALLA
    write(0,10,10,0,"El meu primer Pong, v. 0.01");
    write(0,10,20,0,"Equip Garreny");
    write_int(0,300,10,1,&fps);

    // HEM ACABAT D' INICIALITZAR, LLANCEM EL BUCLE PRINCIPAL
    Controlador_Juego(); //Arranquem el controlador del joc
    END

    /////////////////////////////////////////////
    // Controlador de joc

    Process Controlador_Juego()
    BEGIN

    Inicializar();

    Loop // Bucle principal

    If(key(_esc)) // Si s' apreta esc
    exit(0,0); // Sortir del joc
    End

    Dibujar();

    Frame; // Refrescar pantalla

    End // Del loop

    END

    //////////////////////////////////////////////
    //Inicialitza el joc en el seu estat inicial

    Process Inicializar()
    BEGIN

    X_Paleta_1=30;
    Y_Paleta_1=24;
    Ancho_paleta_1=20;
    Alto_Paleta_1=100;

    END

    //////////////////////////////////////////////
    // Dibuixa els elements del joc en pantalla

    Process Dibujar()
    Begin

    clear_screen();
    drawing_map(0,0);

    // Dibuixar Paleta 1

    drawing_color(rgb(255,255,255));
    draw_box(X_Paleta_1+Ancho_Paleta_1/2, Y_Paleta_1-Alto_Paleta_1/2,
    X_Paleta_1+Ancho_Paleta_1/2, Y_Paleta_1+Alto_Paleta_1/2);
    END
    ¿Ves algo raro?
    PROYECTOS REALIZADOS: FrikiMusic, Motor Scroll Tileado v3.2, Venturer2X (GP2X/WIZ), Echo, Screen Break Time
    PROYECTOS EN MARCHA (algunos): Bennu GP2X: 95% (necesito ayuda) ¡Antes de Halloween!: 92% SpaceH2H: 8%

  8. #23

    Fecha de ingreso
    Feb 2010
    Mensajes
    18
    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
    A este paso me lo vas a acabar haciendo tu xd

    Espero que sean normales estos problemas en un novato, porque sino me retiro xD
    Bueno, yo sigo, ya me ha salido la pala de pong, ahora a por lo demás.

  9. #24

    Fecha de ingreso
    May 2008
    Ubicación
    A tu lado, en tus sueños
    Mensajes
    22,294
    Mencionado
    145 Post(s)
    Tagged
    1 Tema(s)
    Agradecer Thanks Given 
    319
    Agradecer Thanks Received 
    553
    Thanked in
    Agradecido 425 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    3
    Animo Garreny, tus problemas nos han ocurrido a todos. No desistas, esperamos los años que sean por tu mega hit

  10. #25

    Fecha de ingreso
    Feb 2010
    Mensajes
    18
    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
    Gracias!
    Bueno, he aquí otro problema:
    Ya he puesto las dos paletas, la bola y todo, y la bola rebota perfectamente contra las paredes superior e inferior, pero las paletas las traspasa y no entiendo porqué.
    Aquí va el código de las colisiones:
    Process Control_Bola()
    Begin

    // COL·LISIONS AMB LA PALETA 1

    if(Velocidad_Bola_X < 0 && X_Bola>X_Paleta_1
    && X_Bola-Ancho_Bola/2<=X_Paleta_1+Ancho_Paleta_1/2)

    if(abs(Y_Paleta_1-Y_Bola)<Alto_Paleta_1*0.5+Alto_Bola*0.5)
    Velocidad_Bola_X *=-1;
    End

    End

    // COL·LISIONS AMB LA PALETA 2

    if(Velocidad_Bola_X >0 && X_Bola<X_Paleta_2
    && X_Bola+Ancho_Bola/2>=X_Paleta_2+Ancho_Paleta_2/2)

    if(abs(Y_Paleta_2-Y_Bola)<Alto_Paleta_2*0.5+Alto_Bola*0.5)
    Velocidad_Bola_X *=-1;
    End

    End

    //COL·LISIONS AMB LES PARETS SUPERIOR I INFERIOR

    if(Velocidad_Bola_Y<0 && Y_Bola-Ancho_Bola*0.5<=50)
    Velocidad_Bola_Y *=-1;
    End

    if(Velocidad_Bola_Y>0 && Y_Bola-Ancho_Bola*0.5>=430)
    Velocidad_Bola_Y *=-1;
    End


    X_Bola+=Velocidad_Bola_X;
    Y_Bola+=Velocidad_Bola_Y;

    End








    Y bueno, si necesitais en código entero:
    Spoiler: Ver
    Program MEUPONG;
    Global

    int RESOLUCION_X;
    int RESOLUCION_Y;

    // VARIABLES GLOBALS
    int Velocidad_Paletas;

    // CARACTERÍSTIQUES DE LA PALETA 1
    int X_Paleta_1;
    int Y_Paleta_1;
    int Ancho_Paleta_1;
    int Alto_Paleta_1;
    int color_paleta_1;

    // CARACTERÍSTIQUES DE LA PALETA 2
    int X_Paleta_2;
    int Y_Paleta_2;
    int Ancho_Paleta_2;
    int Alto_Paleta_2;
    int color_paleta_2;

    // CARACTERÍSTIQUES DE LA BOLA
    int X_Bola;
    int Y_Bola;
    int Ancho_Bola;
    int Alto_Bola;
    int Color_Bola;
    int Velocidad_Bola_X;
    int Velocidad_Bola_Y;

    BEGIN

    // INICIALITZAR ASPECTES GRÀFICS

    set_title("El meu primer Pong");
    Full_screen = false;
    Graph_mode = mode_16bits;
    set_mode (m640x480);
    set_fps(80, 60/10);

    RESOLUCION_X = 640;
    RESOLUCION_Y = 480;

    //ESCRIURE INFORMACIÓ SOBRE EL JOC EN PANTALLA
    write(0,10,10,0,"El meu primer Pong, v. 0.01");
    write(0,10,20,0,"Equip Garreny");
    write_int(0,300,10,1,&fps);

    // HEM ACABAT D' INICIALITZAR, LLANCEM EL BUCLE PRINCIPAL
    Controlador_Juego(); //Arranquem el controlador del joc
    END

    /////////////////////////////////////////////
    // Controlador de joc

    Process Controlador_Juego()
    BEGIN

    Inicializar();

    Loop // Bucle principal

    If(key(_esc)) // Si s' apreta esc
    exit(0,0); // Sortir del joc
    End

    Actualizar();

    Dibujar();

    Frame; // Refrescar pantalla

    End // Del loop

    END

    //////////////////////////////////////////////
    //Inicialitza el joc en el seu estat inicial

    Process Inicializar()
    BEGIN

    Velocidad_Paletas = 5;

    // INICIALITZAR LA PALETA 1
    X_Paleta_1=30;
    Y_Paleta_1=240;
    Ancho_paleta_1=20;
    Alto_Paleta_1=100;

    // INICIALITZAR LA PALETA 2
    X_Paleta_2=610;
    Y_Paleta_2=240;
    Ancho_paleta_2=20;
    Alto_Paleta_2=100;

    // INICIALITZAR BOLA

    X_Bola=320;
    Y_Bola=240;
    Ancho_Bola=15;
    Alto_Bola=15;
    Velocidad_Bola_X = 3;
    Velocidad_Bola_Y = 3;

    END

    //////////////////////////////////////////////
    // Dibuixa els elements del joc en pantalla

    Process Dibujar()
    Begin

    clear_screen();
    drawing_map(0,0);

    // Dibuixar Paleta 1

    drawing_color(rgb(255,255,255));
    draw_box(X_Paleta_1-Ancho_Paleta_1/2, Y_Paleta_1-Alto_Paleta_1/2,
    X_Paleta_1+Ancho_Paleta_1/2, Y_Paleta_1+Alto_Paleta_1/2);

    // Dibuixar Paleta 2

    drawing_color(rgb(255,255,255));
    draw_box(X_Paleta_2-Ancho_Paleta_2/2, Y_Paleta_2-Alto_Paleta_2/2,
    X_Paleta_2+Ancho_Paleta_2/2, Y_Paleta_2+Alto_Paleta_2/2);

    // DIBUIXAR BOLA

    drawing_color(rgb(255,255,255));
    draw_box(X_Bola-Ancho_Bola/2, Y_Bola-Alto_Bola/2,
    X_Bola+Ancho_Bola/2, Y_Bola+Alto_Bola/2);

    END

    /////////////////////////////////////////////
    //Actualitza la llògica del joc

    Process Actualizar()
    Begin

    // ACTUALITZAR PALETA 1

    if(key(_up) AND Y_Paleta_1-Alto_Paleta_1/2 > 50) //Si s' apreta "amunt" i la paleta no ha arribat fins a dalt
    Y_Paleta_1 -=Velocidad_Paletas; // Fem que pugi
    End

    if(key(_down) AND Y_Paleta_1+Alto_Paleta_1/2 < 430) //Si s' apreta "avall" i la paleta no ha aribat abaix
    Y_Paleta_1 +=Velocidad_Paletas; //Fem que baixi
    End


    // ACTUALITZAR PALETA 2

    if(key(_k) AND Y_Paleta_2-Alto_Paleta_2/2 > 50) //Si s' apreta "amunt" i la paleta no ha arribat fins a dalt
    Y_Paleta_2 -=Velocidad_Paletas; // Fem que pugi
    End

    if(key(_m) AND Y_Paleta_2+Alto_Paleta_2/2 < 430) //Si s' apreta "avall" i la paleta no ha aribat abaix
    Y_Paleta_2 +=Velocidad_Paletas; //Fem que baixi
    End

    Control_Bola();

    End

    //////////////////////////////////////////////
    // ACTUALITZA LA LLÒGICA DE LA BOLA

    Process Control_Bola()
    Begin

    // COL·LISIONS AMB LA PALETA 1

    if(Velocidad_Bola_X < 0 && X_Bola>X_Paleta_1
    && X_Bola-Ancho_Bola/2<=X_Paleta_1+Ancho_Paleta_1/2)

    if(abs(Y_Paleta_1-Y_Bola)<Alto_Paleta_1*0.5+Alto_Bola*0.5)
    Velocidad_Bola_X *=-1;
    End

    End

    // COL·LISIONS AMB LA PALETA 2

    if(Velocidad_Bola_X >0 && X_Bola<X_Paleta_2
    && X_Bola+Ancho_Bola/2>=X_Paleta_2+Ancho_Paleta_2/2)

    if(abs(Y_Paleta_2-Y_Bola)<Alto_Paleta_2*0.5+Alto_Bola*0.5)
    Velocidad_Bola_X *=-1;
    End

    End

    //COL·LISIONS AMB LES PARETS SUPERIOR I INFERIOR

    if(Velocidad_Bola_Y<0 && Y_Bola-Ancho_Bola*0.5<=50)
    Velocidad_Bola_Y *=-1;
    End

    if(Velocidad_Bola_Y>0 && Y_Bola-Ancho_Bola*0.5>=430)
    Velocidad_Bola_Y *=-1;
    End


    X_Bola+=Velocidad_Bola_X;
    Y_Bola+=Velocidad_Bola_Y;

    End

  11. #26

    Fecha de ingreso
    Sep 2005
    Mensajes
    16,926
    Mencionado
    283 Post(s)
    Tagged
    1 Tema(s)
    Agradecer Thanks Given 
    1,219
    Agradecer Thanks Received 
    2,708
    Thanked in
    Agradecido 1,868 veces en [ARG:2 UNDEFINED] posts
    No te preocupes, todas las dudas son muy normales en los novatos, no tienes más que echar un vistazo en el foro de bennu

    Ahora estoy un poquito espeso, te lo tendría que mirar con mucha más calma mañana, pero sí que te voy a dar un par de consejos para que trabajes:

    -Los paréntesis NUNCA SOBRAN, lo digo por las lineas
    f(Velocidad_Bola_X >0 && X_Bola<X_Paleta_2
    && X_Bola+Ancho_Bola/2>=X_Paleta_2+Ancho_Paleta_2/2)
    Que no queda claro dónde empieza y donde termina cada miembro de la comparación, es más, me atrevería a decir que no sigue ni el orden de operaciones que tu quieres. Nosotros, como personas inteligentes, sabemos que hay que multiplicar/dividir antes de sumar y restar, la máquina lo sabe, pero es posible que no (NUNCA DES POR SUPUESTO QUE LA MÁQUINA HACE LO QUE DEBE, regla fundamental), lo digo porque ahi veo una suma seguida de una división, y no se si el divisor engloba a los dos términos de la suma (por lo que estaría mal) o no (por lo que podría estar bien).

    -No uses
    Velocidad_Bola_X *=-1;
    A menos que tengas MUY controlado lo que haces, lo digo por experiencia propia. A poco que la bola se meta más de la cuenta, puede empezar a rebotarte de mala manera.

    -No usas la potencia del lenguaje, es decir, programas como si fuera C. Puedes crear una pala y mantenerla en un bucle infinito (poniento un FRAME dentro, claro) y que compruebe los botones para moverse, y crear el proceso bola y mantenerlo vivo todo el tiempo. Bennu usa los procesos como instancias que se ejecutan en paralelo, y van todos a la vez, y son independientes unos de otros. Te recomiendo que busques el clásico ejemplo del matamarcianos, viene en el Manual de Fenix/Bennu de Oscar Torrente (es EL MANUAL), o uno mas pequeño en FenixWorld.com hecho por un humilde servidor.
    Cuesta un poco cogerle el truco a este tipo de programación, pero a la larga, verás que viene mejor para videojuegos, e incluso para aprender técnicas más avanzadas de programación (sí, hablo de pensar en multi-hilo o multi-nucleo).

    Y un último consejo, basado en la regla básica: COMPRUEBA QUE DE VERDAD SE DAN LAS CONDICIONES DEL REBOTE, aunque tengas que ir una por una. Si dices que la x de la bola debe ser menor que la de la paleta, comprueba que es así.
    Mira lo de los paréntesis, y si mañana sigue igual, te buscaré la solución.
    PROYECTOS REALIZADOS: FrikiMusic, Motor Scroll Tileado v3.2, Venturer2X (GP2X/WIZ), Echo, Screen Break Time
    PROYECTOS EN MARCHA (algunos): Bennu GP2X: 95% (necesito ayuda) ¡Antes de Halloween!: 92% SpaceH2H: 8%

  12. #27

    Fecha de ingreso
    Feb 2010
    Mensajes
    18
    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
    He peusto los paréntesis en todas las colisiones y nada...

    Spoiler: Ver
    Process Control_Bola()
    Begin

    // COL·LISIONS AMB LA PALETA 1

    if(Velocidad_Bola_X < 0 && X_Bola>X_Paleta_1 && (X_Bola-(Ancho_Bola/2))<=(X_Paleta_1+(Ancho_Paleta_1/2)))

    if(abs(Y_Paleta_1-Y_Bola)<(Alto_Paleta_1*0.5)+(Alto_Bola*0.5))
    Velocidad_Bola_X *=-1;
    End

    End

    // COL·LISIONS AMB LA PALETA 2

    if(Velocidad_Bola_X > 0 && X_Bola<X_Paleta_2 && (X_Bola+(Ancho_Bola/2))>=(X_Paleta_2+(Ancho_Paleta_2/2)))

    if(abs(Y_Paleta_2-Y_Bola)<(Alto_Paleta_2*0.5)+(Alto_Bola*0.5))
    Velocidad_Bola_X *=-1;
    End

    End

    //COL·LISIONS AMB LES PARETS SUPERIOR I INFERIOR

    if(Velocidad_Bola_Y<0 && (Y_Bola-(Ancho_Bola*0.5))<=50)
    Velocidad_Bola_Y *=-1;
    End

    if(Velocidad_Bola_Y>0 && (Y_Bola-(Ancho_Bola*0.5))>=430)
    Velocidad_Bola_Y *=-1;
    End


    X_Bola+=Velocidad_Bola_X;
    Y_Bola+=Velocidad_Bola_Y;

    End


    Y esto con qué lo sustituyo?
    Velocidad_Bola_X *=-1;

    Es que el tutorial no explica las colisiones, solo las pone, y ahí acaba.
    Última edición por Garreny; 16/02/2010 a las 21:27

  13. #28

    Fecha de ingreso
    Sep 2005
    Mensajes
    16,926
    Mencionado
    283 Post(s)
    Tagged
    1 Tema(s)
    Agradecer Thanks Given 
    1,219
    Agradecer Thanks Received 
    2,708
    Thanked in
    Agradecido 1,868 veces en [ARG:2 UNDEFINED] posts
    Mirándolo así por encima, supongo que el fallo está en la linea:
    if(Velocidad_Bola_X < 0 && X_Bola>X_Paleta_1 && (X_Bola-(Ancho_Bola/2))<=(X_Paleta_1+(Ancho_Paleta_1/2)))

    Entiendo que al tener velocidad <0, la paleta 1 es la de la izquierda.
    Luego compruebas que la bola esté a la DERECHA de la posición de la paleta (X_Bola>X_Paleta_1)
    Y luego tienes la tercera comprobación que, si no entiendo mal, dices que el lado izquierdo de la bola debe estar más a la IZQUIERDA que el lado derecho de la paleta ¿no?
    Lo que significa que la bola debería rebotar en dicha superposición. Ahora bien ¿qué velocidad máxima lleva la bola horizontalmente? te lo digo porque como sea mayor que ese pequeño espacio, es posíble que se lo "salte" (en un frame está a la izquierda, y en el siguiente está a la derecha, y nunca en los intermedios).

    Si la velocidad es de 1, no debería haber problema.

    Lo de la y parece que está bien, pero para asegurarnos, no multipliques por 0'5, procura evitar los decimales a toda costa, sobre todo en Fenix: divide entre 2 o haz un desplazamiento binario, pero no multipliques por un FLOAT, porque dan muchísimos problemas en UFenix.

    En el caso de la paleta1, la linea:
    Velocidad_Bola_X *=-1;
    Lo cambiaría por
    Velocidad_Bola_X =max_velocidad;
    y en la 2 por
    Velocidad_Bola_X =-max_velocidad;
    Creo que es lógico ¿no? no copies el código, escríbelo tú y luego lo compruebas.

    Si no, prueba a pasarte por el foro de Bennu, ocho ojos ven más que cuatro
    PROYECTOS REALIZADOS: FrikiMusic, Motor Scroll Tileado v3.2, Venturer2X (GP2X/WIZ), Echo, Screen Break Time
    PROYECTOS EN MARCHA (algunos): Bennu GP2X: 95% (necesito ayuda) ¡Antes de Halloween!: 92% SpaceH2H: 8%

  14. #29

    Fecha de ingreso
    Feb 2010
    Mensajes
    18
    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
    En qué foro dices? xD
    Lo he toqueteado, y nada.

    Velocidad_Bola_X = 1;
    Velocidad_Bola_Y = 1;
    max_velocidad = 3/2;
    max_velocidad = 3/2;

    Las velocidades X y Y las tenía a tres, las he bajado y probado una a una, pero sigue sin colisionar con las placas (que de hecho, la bola va hacia la derecha, es decir, tendría que colisionar con la paleta 2).

  15. #30

    Fecha de ingreso
    Sep 2005
    Mensajes
    16,926
    Mencionado
    283 Post(s)
    Tagged
    1 Tema(s)
    Agradecer Thanks Given 
    1,219
    Agradecer Thanks Received 
    2,708
    Thanked in
    Agradecido 1,868 veces en [ARG:2 UNDEFINED] posts
    Me refiero al foro de bennu:
    bennugd.org
    Y de ahi a official forum, tranquilo, está en español.
    Es que aqui entro sólo cuando tengo tiempo libre: a las tantas de la noche ^^U
    PROYECTOS REALIZADOS: FrikiMusic, Motor Scroll Tileado v3.2, Venturer2X (GP2X/WIZ), Echo, Screen Break Time
    PROYECTOS EN MARCHA (algunos): Bennu GP2X: 95% (necesito ayuda) ¡Antes de Halloween!: 92% SpaceH2H: 8%

Página 2 de 3 PrimerPrimer 123 ÚltimoÚltimo

Permisos de publicación

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