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 - amchacon

#651
Cita de: dato000 en 10 Julio 2013, 20:11 PM
ehhhhhh hagamos de cuenta que huele a troll en serio XDDD

http://www.cplusplus.com/reference/list/list/rend/
http://www.cplusplus.com/reference/list/list/rbegin/

otra forma es simplemente copiar a otra lista con los elementos inicializados en la posicion final de la lista inicial y pasar por medio de un for, pero en vez de un insert y erase, no se altera la segunda lista, sino que simplemente se usa un push back, facil, como usando arreglos.
La función reverse existe:
http://www.cplusplus.com/reference/list/list/reverse/

Pero ha quedado muy troll  :xD
#652
Código (cpp) [Seleccionar]
1t1.reverse();

;D
#653
Cita de: juan.valadez en 10 Julio 2013, 14:30 PMcreo que lo mejor seria sacar una versión para windows y otra para linux, cada una con sus diferentes códigos pero que la librería logre hacer lo mismo en ambos sistemas
¿Sabes lo que es la compilación condicional?

Te hago un ejemplo (limpiando la consola):

Código (cpp) [Seleccionar]

void Limpiar()
{
 #ifdef _WIN32
     system("CLS"); // Windows version
 #else
     system("clear"); // Linux version
 #endif

}


Si estamos en un Windows, el compilador cogerá la primera expresión. Si no estamos en un Windows cogerá la segunda expresión.

Puedes consulta la lista entera de macros aquí:
http://sourceforge.net/p/predef/wiki/OperatingSystems/
#654
Buen trabajo ^^

Sigue ahí, asi es como empezaron las librerías famosas de ahora  ;)
#655
Programación C/C++ / MiniLibrería de hilos
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:

CitarIDTHREAD 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):

#ifdef WINDOWS
#include <windows.h>
#else
#include <pthread.h>
#endif

#ifdef WINDOWS

#define IDTHREAD HANDLE
#define IDMUTEX HANDLE

#define CREARHILO(handle,funcion,parametro)  handle = CreateThread(NULL,0,funcion,parametro,0,NULL);
#define CREARMUTEX(nombre) nombre = CreateMutex(NULL,FALSE,NULL);
#define HILO(nombre,parametro) DWORD WINAPI nombre ( LPVOID parametro)
#define LOCKMUTEX(nombre) WaitForSingleObject(nombre,INFINITE);
#define UNLOCKMUTEX(nombre) ReleaseMutex(nombre);

#define JOIN(nombre) WaitForSingleObject(nombre,INFINITE);

#else
#define IDTHREAD pthread_t
#define IDMUTEX pthread_mutex_t

#define CREARHILO(& handle,funcion,parametro) pthread_create(handle,NULL,funcion,parametro);
#define CREARMUTEX(nombre)  pthread_mutex_init (nombre, NULL);
#define HILO(nombre,parametro) void* Nombre(void* parametro)
#define LOCKMUTEX(nombre) pthread_mutex_lock(nombre);
#define UNLOCKMUTEX(nombre) pthread_mutex_unlock(nombre);

#define JOIN(nombre) pthread_join(nombre,NULL);

#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)).
#656
Perfecto, además tenía que añadir un contructor para inicializar la referencia:

Código (cpp) [Seleccionar]
Datos(char (&tablero)[29][31]) : Tablero(tablero) {}

¡Muchas gracias!  :-*
#657
Cita de: rir3760 en 10 Julio 2013, 02:43 AM
¿C o C++?

En C lo mas cercano a una referencia consiste en declarar el campo como "char (*Matriz)[31];" y llevar nota manualmente del numero de elementos.

Un saludo
C++

El tipo que has puesto no es válido:
Código (cpp) [Seleccionar]
struct Datos
{
 //...
 char (&Tablero[31][29]);
};


Citarerror: la declaración de 'Tablero' como una matriz de referencias|

¡Un saludo!  :D
#658
Programación C/C++ / Re: 1º Reto de Retrodev
10 Julio 2013, 01:56 AM
Pues es extraño, lo normal esque ni se note.

Mirando un poco, he visto esto:
Código (cpp) [Seleccionar]
void alzar()
{
srand(time(0));


La semilla hay que inicializarla una vez (al principio del juego por ejemplo), no se debe iniciar cada vez o obtendrás el mismo número una y otra vez.
#659
Programación C/C++ / Re: 1º Reto de Retrodev
10 Julio 2013, 01:20 AM
Cita de: SrCooper en 10 Julio 2013, 00:50 AM
Te diré a qué creo que se debe: cada vez que la serpiente se come una fruta se selecciona una nueva posición para esta. Si esta posición coincide con cualquiera de las posiciones de la serpiente entonces se vuelve a llamar a la función random(). Sé que no es la manera más eficiente pero no se me ocurría otra.
Yo también hago ese algoritmo, pero no es normal que pase eso (por probabilidad, eso pasará en el 1% de los casos).

Mirando tú código:

Código (cpp) [Seleccionar]
while (hay_choque(comida, cola) ||
                    comida.x == cara.x && comida.y == cara.y ||
                    comida.y < 5)


Este while es muy confuso (hasta el mismo compilador me lo ha dicho). Pon paréntesis para separar los && de los ||
Cita de: SrCooper en 10 Julio 2013, 00:50 AM
PD: ¿Cómo se compila estáticamente en SDL/OpenGL?
Para compilar estaticamente (static link) los creadores deben hacer hecho una versión estática de la librería.

Dado que SDL no tiene licencia libre, es poco probable que tenga una versión estática. OpenGL no lo he llegado a usar nunca, asi que no puedo decirte.
#660
Programación C/C++ / Re: 1º Reto de Retrodev
10 Julio 2013, 00:42 AM
No te funciona directamente porque no encuentra la carpeta "Imagenes" (cuando lo ejecutas desde el Codeblocks, te pilla la carpeta del proyecto como raiz y no la del ejecutable). Por otro lado es posible compilar las Allegro estáticamente (es decir, incrustar la librería dentro del ejecutable, de esa forma no necesitas la DLL).

Esta es la configuración que tienes que poner:
http://imageshack.us/a/img546/3949/nst6.png
http://imageshack.us/a/img812/1416/qr2o.png

El código me da muchos warnings:
Código (cpp) [Seleccionar]
textprintf(screen, font, 0, 0, -1, "SCORE:  %d", score);

Esta función está anticuada, en su lugar puedes usar textprintf_ex:
https://www.allegro.cc/manual/4/api/text-output/textprintf_ex

Y me da problemas cada vez que se come una fruta (sufre un retraso apreciable).