Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: marioroca en 5 Mayo 2022, 23:16 pm



Título: Imprimir sobre un mensaje ya imprimido en C
Publicado por: marioroca en 5 Mayo 2022, 23:16 pm
Buenas, estoy tratando de programar "el juego de la vida" en C (no C++) y quiero que me vaya imprimiendo una matriz sobre la otra para que los cambios en ella sean mas visuales, pero no sé cómo. No sé si existe alguna manera de imprimir sobre algo ya imprimido, es decir, ya habiendo imprimido una matriz por pantalla, imprimir otra de misma dimensión con diferentes coeficientes sobre ella para hacerlo mas visual.
Agradecería si alguien me pudiera ayudar.
Muchas gracias.


Título: Re: Imprimir sobre un mensaje ya imprimido en C
Publicado por: .xAk. en 5 Mayo 2022, 23:26 pm
el no se, es lo que entiendes por imprimir.  Puede que pretendas acceder a un archivo abierto por otro proceso y el sistema no te va a dejar modificar. Puede que quieras pintar o cambiar cualquier pixel en la pantalla, eso es más sencillo. No entiendo muy bien. Múestra ejemplo. va a ser inyerctar


Título: Re: Imprimir sobre un mensaje ya imprimido en C
Publicado por: Serapis en 6 Mayo 2022, 01:18 am
estoy tratando de programar "el juego de la vida" en C (no C++) y quiero que me vaya imprimiendo una matriz sobre la otra para que los cambios en ella sean mas visuales, pero no sé cómo.

No sé si existe alguna manera de imprimir sobre algo ya imprimido, es decir, ya habiendo imprimido una matriz por pantalla, imprimir otra de misma dimensión con diferentes coeficientes sobre ella para hacerlo mas visual.
Hay que separar 2 ideas...
1 - Una es la de mantener actualizado los valores de la matriz
2 - Otra es ir dibujando la solución.

Si intentas manipular el caso 1:
Típicamente tras calcular la nueva etapa-ciclo, se redibuja al completo el gráfico.
El cálculo nuevo, debe ir a una matriz distinta, ya que la actual debe calcular con los valores reales, si intentas modificar la matriz actual actualizando sobre sí misma, estás falsificando los datos.
Porque en un instante dado, para cada célula debe calcularse la situación de todos sus vecinos, para decidir su estado, no seguir esto a rajatabla, implica que solo la primera célula calculada sobre el array mantiene realmente un valor 'puro' el resto queda falsificado.
Esto es, el cálculo exige 'tomar una foto' del estado actual (matriz vigente) y el cálculo del nuevo estado volcarlo a otra matriz.
Se supone que la 'unidad tiempo' es para todas las células el mismo, no ceñirse a esto falsifica el 'momentum'.

Si intentas manipular el caso 2:
No hay inconveniente (en cuanto a fidelidad) en ir dibujando cada célula a medida que la calculas, solo que es costoso en recursos (más lento), además el refresco del gráfico de una sola vez de todo el gráfico es tan rápido que no merece la pena, no se distingue a simple vista, puede calcularse y dibujarse 1-100 veces por segundo... depende del área del tablero del juego y el tamaño en píxeles dado a cada célula y de si pones ciertas pausas de tiempo, para tener tiempo de observación entre estados.