elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Mensajes
Páginas: [1] 2 3 4
1  Programación / Programación C/C++ / Re: Problema con allegro (marcianitos c++) en: 15 Mayo 2011, 23:23 pm
Esas dos funciones en rara ocasión son útiles así que pudes borrarlas, es más en la versión 5 de allegro creo que ya no existen. xD

Su movimiento depende de lo que intentes hacer. Se van a mover horizontalmente? verticalmente? movimiento complejo según la posición del jugador? Tendrás que definir los patrones de movimiento que quieres y después implementarlos con funciones matemáticas.

Por lo que veo, el código está bastante mal organizado. Si estás usando C++ usa clases!!

Podrías tener una clase que cree y manipule los marcianos como por ejemplo esta:
Código:
class cMarciano{
public:
~cMarciano();

void disparar();

static void anadirMarciano(float x, float y);
static void moverMarcianos();

static vector<cMarciano*> marcianitos;


private:
cMarciano();
float x, y;
};
Donde el constructor es privado para no poderlo llamar directamente. La funcion anadirMarcianos crearia un nuevo marciano y lo añadiría al vector. La función moverMarcianos iteraría el vector moviendo todos los marcianos. A parte le puedes añadir cualquier funcionalidad que veas oportuna.

No hay UNA manera de hacerlo, todo depende de lo que tú prefieras y con lo que mejor te manejes. Pero igualmente usa clases que van a hacer tu código más limpo, mejor estructurado y menos confuso.

:)
2  Programación / Programación C/C++ / Re: Problema con allegro (marcianitos c++) en: 15 Mayo 2011, 21:08 pm
Por lo que veo, tu juego no tiene ninguna forma de controlar el tiempo. La velocidad a la que se mueve la barra (y todo lo demas) es proporcional a la velocidad de la máquina donde se corre el programa. Te recomiendo que rectifiques esto. La opción más fácil y que necesita menos cambios en tu código, es "castrar" la velocidad a un FPS fijo, por ejemplo 50 (50 iteraciones por segundo). Esto lo puedes implementar así de fácil.
Código:
//codigo...

//funcion FPS constante
#define FPS 30 //o la que quieras
bool proceder = false;
void tiempoTranscurrido() { proceder=true; }

int main()
{
//init tus cosas...
install_timer();

LOCK_VARIABLE(proceder);
LOCK_FUNCTION(tiempoTranscurrido);
install_int_ex(tiempoTranscurrido, BPS_TO_TIMER(FPS));

//tus cosas...

//bucle principal
while (!key[KEY_ESC])
{
if(proceder){
proceder=false;

//aqui lo que va dentro del bucle principal

}
}

//el resto del codigo...

Esto lo que hace es que cada 1/FPS segundos, la función tiempoTranscurrido se ejecute, haciendo proceder=true. Esto nos permite ejecutar el código dentro de if(proceder), es decir el bucle principal, donde igualamos proceder a false, para que no se ejecute otra vez hasta (1/FPS) segundos más tarde. Así tienes una velocidad de juego constante y por ejemplo si tienes x++ dentro de la lógica, sabrás que la posición un segundo más tarde será 30 pixeles a la derecha con un FPS de 30 por lo que te dá mejor manejo.

Espero que esto te ayude. :)
3  Programación / Programación C/C++ / Re: Progrema con allegro (marcianitos c++) en: 15 Mayo 2011, 12:36 pm
No he leido el código entero pero efectivamente la siguiente línea da error
Código:
BITMAP *buffer = create_bitmap(640,480);

Esto debe ir después de iniciar allegro. Pudes dejar la declaración de buffer allí arriba, pero crear el bitmap no puedes hasta que hagas la llamada allegro_init();

 :D
4  Programación / Programación C/C++ / Re: Ocurrencia de palabras en c++!! en: 4 Mayo 2011, 23:55 pm
No se lo que intentas hacer pero de momento te puedo decir que no es correcto por la sintaxis.
Código:
miarreglo[j][j]= miarreglo(j,1);

Me parece que tu lo que quieres es un arreglo de palabras con su respectivo número de apariciones. Si es eso vas a tener que declarar una estructura y despues tener una pila de esa estructura o mejor aun, un vector.
Código:
struct sPalabra{
    string palabra;
    int numero;
};

class Tabla {
      private:
              vector<sPalabra> misPalabras;

      public:
             void agrega(string); // agrega pal al arreglo e inicializa su frecuencia en 1, si ya esta pal, aumenta la frecuencia en 1.
             void ordena(void); // ordena el arreglo de acuerdo a su frecuencia(una variable puede guardar la frecuencia de la palabra, siendo la palabra su clave)
             void despliega(void);//imprime en la salida estándar el arreglo ordenado, graficando la frecuencia de aparición de cada palabra.

};

Puedes agregar de esta manera
Código:
void Tabla::agrega(string palabra){
    //comprobamos todas las palabras y si se encuentra incrementa el numero
    for (int i=0;i<misPalabras.size();i++){
        if (misPalabras[i].palabra==palabra){
        misPalabras[i].numero++;
        return;
        }
    }
    //si no la agregamos
    misPalabras.push_back(sPalabra{palabra,1});
};

Pero, la verdad es que por la forma de intentar declarar arreglos, tendrías que aprender lo básico antes de saltar a las clases ya que si no te va a costar mucho avanzar.
5  Programación / Programación C/C++ / Re: Ocurrencia de palabras en c++!! en: 3 Mayo 2011, 22:18 pm
Primero que te falta un }
En C/C++
Código:
miarreglo[][] = ["",0];
Esto no lo puedes hacer

En todo caso:
Código:
for (int i=0;i<100;i++){
      miarreglo[i][0] = "";
      miarreglo[i][1] = "";
}
6  Programación / Programación C/C++ / Re: Ocurrencia de palabras en c++!! en: 3 Mayo 2011, 21:49 pm
Código:
const int max = 100;
string miarreglo[][] = new String [max,2];
No puedes asignarles el valor en la cabecera. Eso debes hacerlo en tabla.cpp A lo mejor te conviene definir max fuera de la clase y tener
Código:
string miarreglo[max][2];

También te estás olvidando del constructor y destructor, si quieres crear objetos de la clase vas a necesitarlos.
7  Programación / Programación C/C++ / Re: Ocurrencia de palabras en c++!! en: 3 Mayo 2011, 14:02 pm
Vas a tener que enseñar el código que has intentando crear y/o que partes no puedes hacer porque nadie va a crear el programa entero por ti.
8  Programación / Programación C/C++ / Re: Temporizador en: 28 Abril 2011, 23:39 pm
Al empezar el programa puedes declarar el tiempo de inicio
Código:
clock_t tiempo_inicio = clock();

A partir de ahí puedes calcular el número de milisegundos que han pasado con
Código:
clock()-tiempo_inicio
9  Programación / Programación C/C++ / Re: Instrucción para controlar un pin ??? en: 28 Abril 2011, 14:32 pm
Si extraes el valor, este será 1 o 0, si tratamos 1 como booleano verdadero y 0 como booleano falso puedes hacer estado=!estado para cambiar.
10  Programación / Programación C/C++ / Re: Error en c que no puedo detectar.. en: 27 Abril 2011, 20:26 pm
Seguramente con
Código:
printf("%s");
querías decir
Código:
printf("%s",msj);
Páginas: [1] 2 3 4
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines