Problema con el juego

Started by Garreny, February 21, 2010, 05:01:18 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

FreeYourMind

Ya he echo el modulo beep para que puedas poner sonidos en tu Pong igualitos a los del juego original sin utilizar recursos :)
Te lo digo para hacer publicidad a mi fantastico mod, hhehehehe, y que lo utilizes en tu super juego :)
Descargatelo en su post.

Garreny

Ya se me muestran en pantalla, pero no se actualizan...

Estos son los cambios que he hecho, tal y como me has dicho:

   
   
Quoteint score1 = 0;
   int score2 = 0;

   write_int(0,270,20,1,&score1);
   write_int(0,330,20,1,&score2);
   Frame;


   if(X_Bola<-1)
   score2 = score2+1;
   Frame;
   End

   if(X_Bola>641)
   score1 = score1+1;
   Frame;
   End

Y lo de la música no lo he encontrado xd Si me puedes pasar el link...
Y muchas gracias por la ayuda.

FreeYourMind

Lo de los Beeps, es esta la página:

http://forum.bennugd.org/index.php?topic=1197.0

sobre tu problema, pasame el código completo que te lo miro cuando llegue a casa, igual alguna pequeña chorradilla esta haciendo que no se actualize.

Garreny

Toqueteando los

Quote
   if(X_Bola<=-1)
   score2 = score2+1;
   Frame;
   End

   if(X_Bola>=641)
   score1 = score1+1;
   Frame;

, poniendo ese =, se me actualiza solo una vez, solo uno de los dos jugadores, y con dos puntos.


Bueno, te dejo el código entero:

QuoteProgram MEUPONG;
Global

   
   int RESOLUCION_X;
   int RESOLUCION_Y;

   // VARIABLES GLOBALS
   int Velocidad_Paletas;
   int score1 = 0;
   int score2 = 0;

   // 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;
   int max_velocidad;

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);
   write_int(0,270,20,1,&score1);
   write_int(0,330,20,1,&score2);
   Frame;


     

   // 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;
   max_velocidad = 5;
   max_velocidad = 5;

END

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

Process Dibujar()
Begin

   clear_screen();
   drawing_map(0,0);

   // Dibuixar Paleta 1

   drawing_color(rgb(25,55,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(33,63,212));
   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(45,200,5));
   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(_k) 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(_m) 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(_up) 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(_down) 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


   if(X_Bola<=-1)
   score2 = score2+1;
   Frame;
   End

   if(X_Bola>=641)
   score1 = score1+1;
   Frame;
   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/2)+(Alto_Bola/2))
         Velocidad_Bola_X = max_velocidad;
      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/2)+(Alto_Bola/2))
         Velocidad_Bola_X = -max_velocidad;
      End

   End

    //COL·LISIONS AMB LES PARETS SUPERIOR I INFERIOR

   if(Velocidad_Bola_Y<0 && (Y_Bola-(Ancho_Bola/2))<=50)
      Velocidad_Bola_Y = max_velocidad;
   End
   
   if(Velocidad_Bola_Y>0 && (Y_Bola-(Ancho_Bola/2))>=430)
      Velocidad_Bola_Y =-max_velocidad;
   End


   X_Bola+=Velocidad_Bola_X;
   Y_Bola+=Velocidad_Bola_Y;

   // Condicions de la Bola

   if(X_Bola>641 or X_Bola<-1)
   X_Bola=320;
   End

   

   
   

End

Y los beeps no sé como ponerlos, no tengo ni la más menor idea de lo que es esto que mencionas: 'bgdc.import'
xD

DCelso

a ver, el módulo beep que te dicen es para BennuGD, que es un programa parecido a fenix pero modular.
Veo que tu código es para fenix, te recomendaría que cambiases a bennuGD si quieres usar todas sus mejoras y nuevos módulos y empezaras a leerte los tutoriales de windgate y de osk.
http://iespuigcastellar.xeill.net/departaments/informatica/fitxers/programacio/manualbennu.pdf
http://trinit.es/tutoriales/
En estos puedes ver muchos ejemplos de juegos y técnicas de programación de juegos.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

FreeYourMind

Para que te funcione, cambia los if's por estos:


if(X_Bola<=0)
  score2 = score2+1;
End

if(X_Bola>=640)
   score1 = score1+1;
End


Tienes cosas muy raras en tus juego, empezando por divisiones que sobran y definiciones con valores raros, a ver si alguien con tiempo te lo repasa todo y te lo corrige.

Garreny

Gracias  ;D
Lo de los valores raros, pues entre que acabo de empezar, y usé un tutorial rarillo, pues... xD

Y sobre pasarme a Bennu, ya pensaba hacerlo al acabar el pong, viendo que todos lo usáis y es mejor...
Por cierto, hay algun método establecido por hacer pausas en los juegos? Es que lo he estado probando haciendo que la velocidad de la bola puera 0 al pulsar el botón P, pero me da error y me hace pensar que al restablecerlo quizás salga disparado hacia otro lado.

FreeYourMind

Si lo hay, basicamente es hacer que el proceso padre se congele, leete el ManualBennu que te han puesto, esas cosillas se explican en estos tutoriales, mirate la parte donde se hable de procesos, que te pone todas las opciones permitidas, desde matar procesos a congelarlos, despertarlos, etc. y en estas cosas lo mejor es que lo estudies antes un poco, ya que estas nociones no son dudas pero si el minimo de cosas que debes aprender de Bennu antes de empezar a programar  ;D

Drumpi

De todas formas ¿qué tutorial es el que estás usando? porque no conozco ninguno para Fenix/Bennu que haga un pong de esa manera, desaprovechando la potencia de los procesos.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

DCelso

pues haberlos, haylos, los primero de osk son así, sin ir más lejos, el tetris que me pasó que dió lugar al proyecto apagame.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

Garreny

El tutorial que estaba usando era uno que usaba Fenix sólo en el primer capítulo, después se pasaba a C, y por eso he tenido esos problemas, porque me ha dejado colgado. Pero he empezado a pasarme a Bennu con el tutorial que me habeis pasado, y ya pasaré mi pong a Bennu, también.

FreeYourMind

No tienes que pasarlo porque ya esta en Bennu :) Yo lo he probado con Bennu, hace años que no toco nada en Fenix  ;D

Garreny

Es que me dice que no identifica ''FPS''...

DCelso

es por lo que te comentaban de un fichero llamado "bgdc.import".
Bennu, a diferencia de Fenix, es modular.
En resumidas cuentas, en bennu necesitas indicar los módulos que vas a usar en tu programa para que así conozca donde están funciones, variables y constantes que vas a ir usando.
Tienes varias opciones para hacer esto. La primera es crear un archivo bgdc.import en el directorio de tu mismo .prg y en este archivo ir metiendo los módulos que necesita tu programa, mucha gente mete en este archivo todos los módulos que existen en bennu :D.
el archivo tendría un formato como este
Quote from: bgdc.import
mod_key
mod_proc
mod_say
mod_mouse
mod_video
mod_regex
mod_map
otra opción es dentro de tu prg, al principio del todo escribes una palabra reservada para indicar el módulo a usar.
Seria poner algo así al principo de tu prg

import "mod_key";
import "mod_map";
import "mod_video";
import "mod_regex";
import "mod_mouse";

Vamos pero que todo esto viene explicado en ambos tutoriales, míralos por encima antes de meterte en brea, sino las vas a pasar canutas y te vas a ir desmotivando.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

FreeYourMind

tienes que importar los modulos que necesitas (mod_video, etc)
.... mirate como hacer un primer programa de bennu en el tutorial.