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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Temas
Páginas: 1 [2] 3
11  Programación / Programación C/C++ / MiniLibrería de hilos en: 10 Julio 2013, 12:32 pm
La estuve haciendo para un proyecto, es una especie "abstracción" con macros para poder usar hilos de forma multiplataforma. La cuelgo aquí por si alguien le interesa:

Citar
IDTHREAD Variable que identifica a un thread
IDMUTEX Variable que identifica a un mutex

CREARHILO(handle,funcion,parametro) Crea un hilo de ejecución, el primer parámetro corresponde a la variable ID, el segundo parámetro al nombre de la función y el tercero al parametro que se pase (NULL si no se pasa ninguno)
CREARMUTEX(nombre) Inicializa un mutex

HILO(nombre,parametro) Prototipo de la función del hilo, el primer parámetro correspondel nombre de la función y el segundo corresponde al nombre del parametro

LOCKMUTEX(nombre) Bloquea un mutex
UNLOCKMUTEX(nombre) Desbloquea un mutex

JOIN(handle) Espera hasta la finalización de un determinado hilo.

Librería (copiar y pegar):

Código
  1. #ifdef WINDOWS
  2. #include <windows.h>
  3. #else
  4. #include <pthread.h>
  5. #endif
  6.  
  7. #ifdef WINDOWS
  8.  
  9. #define IDTHREAD HANDLE
  10. #define IDMUTEX HANDLE
  11.  
  12. #define CREARHILO(handle,funcion,parametro)  handle = CreateThread(NULL,0,funcion,parametro,0,NULL);
  13. #define CREARMUTEX(nombre) nombre = CreateMutex(NULL,FALSE,NULL);
  14. #define HILO(nombre,parametro) DWORD WINAPI nombre ( LPVOID parametro)
  15. #define LOCKMUTEX(nombre) WaitForSingleObject(nombre,INFINITE);
  16. #define UNLOCKMUTEX(nombre) ReleaseMutex(nombre);
  17.  
  18. #define JOIN(nombre) WaitForSingleObject(nombre,INFINITE);
  19.  
  20. #else
  21. #define IDTHREAD pthread_t
  22. #define IDMUTEX pthread_mutex_t
  23.  
  24. #define CREARHILO(& handle,funcion,parametro) pthread_create(handle,NULL,funcion,parametro);
  25. #define CREARMUTEX(nombre)  pthread_mutex_init (nombre, NULL);
  26. #define HILO(nombre,parametro) void* Nombre(void* parametro)
  27. #define LOCKMUTEX(nombre) pthread_mutex_lock(nombre);
  28. #define UNLOCKMUTEX(nombre) pthread_mutex_unlock(nombre);
  29.  
  30. #define JOIN(nombre) pthread_join(nombre,NULL);
  31.  
  32. #endif

Nota Windows: Hay que poner el define WINDOWS (en Codeblocks, tienes que irte a project -> build options -> #defines -> Escribir WINDOWS).
Nota Linux: Hay que enlazar con la librería pthread (en Codeblocks tienes que irte a project -> build options -> linker settings -> pthread (columna de la izquierda)).
12  Programación / Programación C/C++ / Pasar matriz bidimensional a estrucutra en: 9 Julio 2013, 22:42 pm
Tengo una matriz tal que:

Código
  1. char Matriz[29][31];

Quiero pasar una referencia de esta a una estructura como si la pasase a una función. No me vale copiarla porque quiero que se reflejen los cambios... ¿Alguna idea?
13  Programación / Scripting / Duda python (error de sintaxis) en: 1 Julio 2013, 09:00 am
Recien estoy empezando python, estaba traduciendo una función que tenía en C++:

Código
  1. def Resolver(Tablero):
  2.  
  3.    if Explora(Tablero,MAX,MAX) == False:
  4.        return false;
  5.  
  6.    if Resuelto(Tablero) == True:
  7.        return true;
  8.  
  9.    for j in range(9):
  10.        for i in range(9):
  11.            if Tablero[i][j] != None:
  12. Valores = EncontrarPosibilidades(Tablero,i,j)
  13.  
  14. tablero = [None] * 9
  15.  
  16. for k in range(9):
  17. tablero[k] = [None] * 9
  18.  
  19.  
  20.                for it in Valores:
  21.  
  22.                    for k in range(9):
  23.                        for l in range(9):
  24.                            tablero[l][k] = Tablero[l][k]
  25.  
  26.                    tablero[i][j] = it
  27.  
  28.                    if (Resolver(tablero))
  29.  
  30.                        for k in range(9)
  31.                            for l in range(9)
  32.                                Tablero[l][k] = tablero[l][k];
  33.  
  34.                        return true;
  35.  
  36.  
  37.  
  38.  
  39. return false;


Me marca un error en EncontrarPosibilidades(Tablero,i,j):



Lo cual no entiendo (¡Está identado!)
14  Programación / Programación C/C++ / Obtener ruta más corta en: 12 Junio 2013, 23:22 pm
Me encuentro en un problema un poco elemental. A ver si alguien me puede dar alguna pista de como resolverlo.

Tenemos una cuadrícula tal que:



Ahí tenemos dos cuadrados pintados:



Partiendo del cuadrado rojo, tenemos que obtener una ruta para llegar al cuadrado azul (moviendose verticalmente/horizontalmente). Para complicar más la cosa ponemos algunos obstaculos aleatorios:



La ruta más corta sería:

(7,2)
(7,9)
(10,9)


¿Cómo podríamos implementar esto en C++?
15  Programación / Programación C/C++ / ¿Como compilar una librería? en: 10 Junio 2013, 16:58 pm
¿En Mingw?

Quiero decir, yo ahora me descargo el código de una librería:
http://www.libsdl.org/projects/SDL_mixer/

Para instalarla, en linux sería:

Citar
./configure
make
sudo make install

¿Cual es su equivalente en windows?
16  Programación / Programación C/C++ / Vectores vs Listas en: 1 Junio 2013, 13:39 pm
Tenemos el siguiente caso, necesitamos tener almacenados los disparos de una nave. Cada cierto tiempo comprobaremos los disparos y si alguno ha acertado/salido del mapa los eliminaremos.

¿Que contenedor deberíamos usar para obtener el máximo rendimiento? ¿Vectores o listas?
17  Programación / Programación C/C++ / Duda sobre los macros en: 22 Mayo 2013, 13:04 pm
No me queda del todo claro, dado ese macro:

Código
  1. #define DeclararPiezas(jugador,dirrecion) Tablero[0][dirrecion] = jugador(TORRE); \
  2. Tablero[1][dirrecion] = jugador(CABALLO); \
  3. Tablero[3][dirrecion] = jugador(REY); \
  4. Tablero[4][dirrecion] = jugador(REINA); \
  5. Tablero[5][dirrecion] = jugador(ALFIL); \
  6. Tablero[6][dirrecion] = jugador(CABALLO); \
  7. Tablero[7][dirrecion] = jugador(TORRE); \
  8. #if dirrecion ABAJO
  9. #define aux 1
  10. #else
  11. #define aux -1
  12. #endif \
  13. for (int i = 0; i < 8;i++) \
  14.      Tablero[i][dirrecion+aux] = jugador(PEON);

Dado un jugador y una orientacion (ARRIBA o ABAJO). Se declara un tablero de ajedrez. Ahora bien, para poner los peones no es tan sencillo puesto que dependiendo si esta arriba o abajo tengo que sumar 1 o restar 1.

He hecho ahí una prueba (#if dirrecion abajo) pero evidentemente el compilador no se lo traga. ¿Alguna idea?
18  Programación / Programación C/C++ / (Juego) La Serpiente en: 10 Mayo 2013, 18:37 pm
Aquí os dejo un juego que he estado desarrollando por mi cuenta:




Citar
Descarga Ejecutable Windows (Versión 20130510)
Descarga Ejecutable Linux (Versión 20130513)
Descarga Código (Versión 20130510)

CONTROLES:

 W/Flecha Arriba: Moverse hacia arriba.
 A/Flecha Izquierda: Moverse hacia la izquierda.
 D/Flecha Derecha: Moverse hacia la derecha.
 S/Flecha Abajo: Moverse hacia abajo.

 P = Pausa
 J = Más velocidad (necesita pulsarse varias veces para que sea perceptible).
 U = Menos velocidad.
 K = Aumentar longitud de la serpiente.
 M = Silenciar la Musica.
 ESC = Salir del juego.

19  Programación / Programación C/C++ / Detectar idioma Sistema Operativo en: 9 Mayo 2013, 14:59 pm
Tal como suena, busco alguna manera de detectar el idioma que usa el usuario... Tanto en Windows como en Linux.
20  Programación / Programación C/C++ / Duda sobre CodeBlocks en: 25 Abril 2013, 00:18 am
Tengo varios códigos con Compilación Condicional:



Por lo que veo, el código que no cumple la condición se oculta. Si coloco un "#define WINDOWS" se muestra y se oculta el otro:



Todo muy bonito, pero como yo no puedo estar añadiendo un define a cada archivo. Lo he puesto en los comandos del compilador "-DWINDOWS". Funciona perfecto en el ejecutable pero...

El código se me sigue ocultando en el editor! Lo cual es muy engorroso. ¿Alguna idea?
Páginas: 1 [2] 3
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines