Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Guillermo575

#1
Entonces en el header escribo los metodos o solo los defino? y si quiero ponerle contenido al metodo del header tiene que ser en el archivo .cpp?
Ahora bien si por ejemplo quiero hacer otro archivo que llame a esos metodos ¿cual debo incluir el .h o .cpp?

En pocas palabras mi objetivo es crear diferentes archivos, uno del personaje que controlo,enemigos,escenarios,etc y poderlos llamarlos todos desde el main() (si es que no entendieron mas o menos a donde quiero llegar)
#2
Cita de: vertex@Symphony en  6 Abril 2011, 19:34 PM
No podés pasar el método de una clase como un puntero a función (salvo que la declares como estática, pero no podrías actuar por-instancia, es decir no podrías interactuar con partes no estáticas), tenés que hacer algún "pegamento" entre el mundo de C (Procedural) y C++ (Orientado a objetos) ... tenés muchas formas, la más sencilla es tener una función intermedia que reciba la instancia de la clase como parámetro y que llame a X método ...

Saludos.
¿Te estas refiriendo a los archivos "header"  cabecera? en ese caso ¿como puedo definir los metodos de una clase en ella?
Saludos
#3
Cita de: Tryptophan en  6 Abril 2011, 16:12 PM
Está bien que uses polimorfismo... No sé si estás al tanto de las técnicas utilizadas para juegos (bounding box, colisiones, arboles de busqueda, etc, etc)

Bueno.... de hecho este proyecto lo he estado haciendo en java y usaba colisiones y listas enlazadas (para identificar enemigos y armar personajes con imagenes), el problema es que debido a que queria hacer un juego mas complicado y dicen que java no estan efectivo haciendo juegos, queria probar con el lenguaje c++ y la libreria sdl, pero el problema es que soy muy novato trabajando en c++ y queria usar la logica de mi juego en java a c++ pero no pude, y es asi como llegue aqui, aun asi no me haria daño leer un poco de la pagina que me enviaste
Saludos

PD: Ahorita tengo un problema usando  multi archivos  (#include"archivo.c" por ejemplo) y no puedo incluir mas de 2 a la vez, espero que me respondas
#4
argument of type `int (clase :: )(void*)' does not match `int (*)(void*)'

Este es el error que me aparece ya que ese metodo se encuentra dentro de una clase
EDIT: Cambio de perspectiva y ya olvidandome de los hilos ¿como le puedo hacer para hacer que se muevan varios personajes,enemigos y elementos al mismo tiempo ?
se me ocurre usar hacer un ciclo while y moverlos uno por uno  ordenadamente y para que sea polimorfico usar una clase abstracta
¿que les parece?
#5
Hola aqui volviendo a molestar abri este tema por que tengo una duda acerca de los Thread que vienen en la libreria sdl, el problema no es tanto por la sintaxis si no que cuando quiero hacer que un hilo llame el metodo de una clase no me deja compilar. aqui esta un ejemplo de como mas o menos quiero que sea:

#include <stdio.h>
#include <stdlib.h>;
#include <SDL/SDL.h>
using namespace std;

class clase{
public : clase(){
SDL_Thread *hilo;
//hilo=SDL_CreateThread(run,NULL);
}

public :int run(void *data){
while(1>0)metodo();
return 0;
}

public :void metodo(){}
};

int main(int argc, char *argv[]){}


Si se dan cuenta en donde dice run es lo que quiero que sea el hilo para que asi pueda acceder a los metodos de esa misma clase.

¿por que lo quiero asi?
Por que quiero hacer un juego y ese hilo corresponde al del personaje que voy a usar para los procesos de validacion/movimiento y repintado, por eso necesito llamar a metodos de una clase pero no me deja hacer eso,ni siquiera me deja que el metodo run este dentro de una clase, asi que necesito su ayuda por favor
Saludos
#6
oye,¿ sabes para que sirve esta linea de codigo?:
Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 1024)

vi en internet que sugeria cambiarle  los parametros pero no se para que sirve
#7
Cita de: Xafi en 29 Marzo 2011, 23:06 PM
el código que tienes puesto es para cargar una extensión .mid quizás tendrías que poner .mp3
Eso era lo que queria decir, si cambias el nombre del archivo y lo cambias por el de un archivo mp3 (con todo y extension) no sonara nada
#8
¿ya probaste el codigo?  es que no se si sea el ide o algun elemento ajeno al codigo
#9
Cita de: Xafi en 29 Marzo 2011, 11:02 AM
Mix_LoadMP3("music.mp3"); prueba  a ver si  funciona.

EDITO: No funciona creo...


ya lo probe y tienes razon no funciona...
Y en cuanto a lo de liberar la variable que contiene el archivo que tiene si los tenia pero los borre en esta ocasion para que no abarcara tanto espacio para publicarlas
¿No hay alguna libreria tanto en sdl o en otra que me permita reproducir mp3?
Saludos
#10
Hola, escribo por un problema que tengo con la libreria sdl:
Segun lei en internet el sdl_mixer es capaz de reproducir desde midi a mp3, el problema es que cuando reproduzco midi me funciona, pero cuando intento reproducir un archivo mp3 no me lo reproduce y me tira error.
El codigo es este:
Cita de: Guillermo575
#include <stdio.h>
#include <stdlib.h>;
#include <SDL/SDL.h>
#include <SDL/SDL_mixer.h>

int main(int argc, char *argv[])
{
   SDL_Surface *screen;
   Mix_Music *cancion;
   SDL_Event event;
   int salir = 0;
   
   screen = SDL_SetVideoMode(320, 240, 16, SDL_HWSURFACE);


   if (Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 1024) == -1)
   {
      printf("Error en Mix_OpenAudio: %s\n", Mix_GetError());
      return 1;
   }

   cancion = Mix_LoadMUS("music.mid");

   if (!cancion)
      printf("Error en Mix_LoadMUS: %s\n", Mix_GetError());

   if (cancion)
   {
      if (Mix_PlayMusic(cancion, -1) == -1)
         printf("Error en Mix_PlayMusic: %s\n", Mix_GetError());
   }

   while (! salir)
   {
      SDL_PollEvent(&event);

      if (event.type == SDL_QUIT)
         salir = 1;

      SDL_Flip(screen);
      SDL_Delay(10);
   }

   if (cancion)
   {
      Mix_HaltMusic();
      Mix_FreeMusic(cancion);
   }

   Mix_CloseAudio();
   SDL_Quit();
   return 0;
}

Lo unico que hace es abrir una ventana y reproducir la cancion que esta dentro de la carpeta
En donde dice
   cancion = Mix_LoadMUS("music.mid");
remplacen "music.mid" con el nombre de algun midi que tengan y luego con un mp3
¿les paso lo mismo u otra cosa?
Saludos