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

#661
Tengo una matriz tal que:

Código (cpp) [Seleccionar]
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?
#662
¿Todo usando funciones estándares? Bueno trabajo  ;-)

En librerías más grandes convendría compilarla en un .a y dejar el header con los prototipos ;).
#663
Cita de: 0xDani en  7 Julio 2013, 16:21 PM
A modo de anotación: ese espacio no tiene porque dejarse en C++ 11.
Gracias, no lo sabía  ;)
#664
Programación C/C++ / Re: Que pasa?
7 Julio 2013, 11:25 AM
Ocupación no es una cadena sino una variable char  :rolleyes:
#665
Cita de: OmarHack en  7 Julio 2013, 01:41 AM
¿rest de que librería es? Así lo implemento en un par de códigos. :P
Lo bueno es que así el usuario puede seleccionar el tiempo a esperar (en caso de que se necesitara).
rest es de Allegro pero tiene su equivalente en cualquier librería/SO:

- Windows API:

Código (cpp) [Seleccionar]
#include <windows.h>

Sleep(milisegundos); // duerme unos milisegundos


- Linux:

Código (cpp) [Seleccionar]
#include <pthread.h>

sleep(milisegundos); // La S aqui es minuscula


- SDL:

Código (cpp) [Seleccionar]
SDL_Delay(milisegundos);


Manejar el tiempo durmiendo es mucho más eficiente que contar el tiempo, al dormir el SO puede usar el procesador en otras cosas  ;)
#666
¿? Eso es como si pusieras un rest(3000) pero más complicado y con mucho peor rendimiento xD.

Pero sí, es muy imaginativo  ;)
#667
Cita de: amchacon en  7 Julio 2013, 01:14 AMDesde el momento de CreateThread, se ejecutarán en segundo plano.
Una nota sobre esto, cuando la función del hilo termine también terminará la tarea.

Si quieres que se repita continuamente tendrías que poner un while:

Código (cpp) [Seleccionar]
DWORD WINAPI Funcion( LPVOID lpParam )
{
  while(true)
  {
      Funcion1();
      rest(3000);
      Funcion2();
  }
}
#668
Cita de: SrCooper en  7 Julio 2013, 01:10 AM
Vale, entonces cuando en el while yo ejecute Funcion, esta se ejecutará automáticamente en segundo plano, ¿no?
Desde el momento de CreateThread, se ejecutarán en segundo plano.

Cita de: SrCooper en  7 Julio 2013, 01:10 AMLa verdad es que no entiendo muy bien todo eso de DWORD, LPVOID y lpParam. ¿Qué significan exactamente?
Son expresiones que se han inventado los de microsoft... Son tan especialitos, su equivalencia es la siguiente:

DWORD = unsigned int
LPVOID = void*

Y lpParam es el nombre que le he puesto al parámetro de la función (se le puede pasar un parámetro al hilo), también le podría haber puesto "habichuelas".

Te recomiendo que hagas algunas prácticas con hilos... Si tienes linux mejor (ahí tienes la librería pthread que es más fácil que Windows API).
#669
Cita de: SrCooper en  7 Julio 2013, 00:41 AM
Ahora que lo veo, en realidad es un poco retorcido pero es útil. Retraso es una variable que aumenta cada vez que se realiza un ciclo. Y solo cuando esta variable es igual a 10 (se han completado 10 ciclos) se realizan las acciones de mover a la serpiente y se resetea el valor. Si te fijas las acciones que no son de movimiento están fuera de este if.
Entiendo... Bueno es factible ^^

Aunque lo ideal (tanto en rendimiento como en claridad) sería hacer una tarea en segundo plano (hilo). Además es mucho más flexible (puedes ponerle el tiempo que quieras).
#670
Es decir, una tarea en segundo plano.

Pues la manera más sencilla (relativamente) es usando threads (hilos). C++ tiene una clase para threads pero es relativamente nueva (no todos los compiladores están actualizados con ella).

Asi que te hago un ejemplo con las Windows API:

Código (cpp) [Seleccionar]
#include <winalleg.h>


DWORD WINAPI Funcion( LPVOID lpParam )
{
 Funcion1();
 rest(3000);
 Funcion2();
}

int main()
{
  //...
  CreateThread(NULL,0,Funcion,NULL, 0,NULL);  

 while(!key[KEY_ESC] && !choque )
 {{/code]