¿Cómo implementar un protector de pantalla utilizando c o c++?

Disculpa estoy apenas empezando en el mundo de la programación y tengo un profe que de repente así como así me acaba de dejar un programa que:
Es un supuesto protector de pantalla. Que debe hacerse en c o c++ con prog estructurada.
Que primero imprima en la pantalla la hora actual del sistema y que transcurridos 5 segundos empiece a:
1. Dibujar cuadrados aleatoriamente y
2. Después sin borrar nada hacer círculos aleatoriamente y después.
3. Llenar toda la pantalla con lineas diagonales de la esquina derecha a la izquierda y después en viceversa todo encimado sin borrar nada.
4. Y por ultimo que al mover el mauso se detenga todo y ponga en la pantalla el tiempo que estuvo activo el programa poniendo a que hora inicio y cual es la hora a la que termino.
Espero me puedas ayudar esta algo muy complicado no... Bueno así lo veo yo.. Pero apenas voy en primer semestre de mi carrera y según el maestro ya debemos de saber ya estuve investigando algunos códigos en internet. Pero la verdad se podía decir casi estoy en ceros en c/c++ y solo se un poco o si a caso lo bsico.

1 respuesta

Respuesta
1
Encantado de poder ayudarte. Necesito que me digas en qué sistema operativo hay que hacerlo y con que entorno de programación (Visual C++, Borland, gcc en linux,...)
en windows... con c o c++...
Ya estuve haciendo todo lo que pude y ya casi lo termino solo que me faltan unos detallas que es el de que se salga del programa cuando menee el mouse y que me imprima bien el tiempo que duro activo checalo, solo me faltan esos 2 detalles.. no tengo ni idea de como usar el mouse para que al moverlo se salga del programa y la hora solo imprimo los segundos que duro..
Esperando me puedas ayudar en algo te dejo el programa para que cheques los detalles que me faltan:::
#include <conio.h>
#include <stdio.h>
#include <dos.h> //Para el uso de gettime
#include <time.h> // Para el uso de difftime
#include <conio.h>
#include<stdlib.h> //para usar el randomize
#include <graphics.h>
main(void)
{
int monitor = DETECT, modo;
char ban;
randomize();
initgraph(&monitor,&modo,"\\tc\\bgi");
struct time hora;
time_t hora_inicio, hora_final;
float segundos;
//gotoxy(33,15);printf("simulador ~ZAGATO~");
gotoxy(20,28);printf ("Oprima cualquier tecla para continuar");
hora_inicio=time(NULL);
gettime(&hora); // Obtiene la hora del sistema
gotoxy(20,13);
printf("Hora actual del sistema: %2d:%02d:%02d.%02d",hora.ti_hour, hora.ti_min, hora.ti_sec, hora.ti_hund);
getch();
cleardevice();
int i,x,y,r,x1,y1,x2,y2;
for (i=0;i<=60;i++)
{
x=random(600);y=random(500);r=random(70);
circle(x,y,r);
delay (250);
}
for (i=0;i<=60;i++)
{
x1=random(600);y1=random(500);x2=random(600);y2=random(500);
rectangle(x1,y1,x2,y2);
delay (250);
}
int a=10,b=1,a1=1,b1=10;
for (i=1;i<=58;i++)
{
line(a,b,a1,b1);
a=a+20;
b1=b1+20;
delay (250);
}
int aa=1,bb=470,aa1=30,bb1=500;
for (i=1;i<=58;i++)
{
line(aa,bb,aa1,bb1);
aa1=aa1+20;
bb=bb-20;
delay (250);
}
int p=1,e=10,p1=620,e1=10;
for (i=1;i<=30;i++)
{
line(p,e,p1,e1);
e=e+20;
e1=e1+20;
delay (250);
}
cleardevice();
hora_final=time(NULL); // Obtiene la hora del sistema
segundos=difftime(hora_final,hora_inicio);
gotoxy(26,12); printf("Duraci¢n: %f segundos",segundos);
getch();
closegraph(); // Termina el modo grafico (vuelve a su modo normal)
return 0;
}
Para sacar la diferencia como hora tienes que usar diviones y módulos:
totalsegundos=difftime...
segundos=totalsegundos%60;
minutos=(totalsegundos/60)%60;
hora=(totalsegundos/3600);
printf("%02d%:%02d:%02d",segundos,minutos,hora);
Lo que no he entendido es si el programa tiene que dejar de escribir lineas diagonales cuando mueves el ratón. Si es así:
bool acabar=false;
while(!acabar){
dibujarlinea;
delay(250);
if(mousemove) acabar=true;
}
No se las librerías que te han dado para determinar el movimiento del ratón pero lo que sea lo tienes que cambiar por mousemove.
Para mostrar la diferencia de tiempo en horas, minutos, segundos usa la respuesta que te he dado anteriormente. Creo que es lo que necesitas.
Tienes un problema, y es que para salir del programa no basta con llamar a la función salir ya que cuando sale de la función se ejecuta el resto de código.
Para solucionar esto tienes que poner una variable global booleana o entera "acabado". Inicialmente estara a false (o a 0). Cuando entra en la función final lo pone a true (o a 1). Entonces en cada for(i=1;i<...) lo cambias por for(i=1;! Acabado&&i<...) Entonces no entrada en ningun bucle mas de dibujado y saldrá del programa.
Espero que te haya servido de ayuda. No dudes en escribieme más si te hace falta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas