Secuencia aleatoria de números v2

Abel Naya

Segunda parte de mi programa: Secuencia aleatoria de números

/*
Programa que escribe aleatoriamente un número 0-9 o un espacio por pantalla de forma ilimitada
No realiza ninguna función específica, al igual que en algunas películas en ordenadores en segundo plano
Utiliza un semi-programa que imprime un texto de forma especial.
Permite mediante teclas cambiar la velocidad.
*/

//librerias
#include <iostream> //cout y cin
#include <stdlib.h> //rand y srand
#include <time.h> //time()
#include <conio.h>

//teclas
#define mas 43   //'+'
#define menos 45 //'-'
#define reset 32 //' '
#define ayuda 104 //'h'
#define pausa 112 //'p'

//tiempo
#define inicial 100
#define cambio 5

//macro
#define espera(X) for(int i = 0; i<X*1000;i++); //uso un blucle vacio porque necesito esperar muy poco tiempo, y con las funciones predefinidas no me sirve

using namespace std;

void instrucciones(char frase[]) //el caracter de control '%' sirve para cambiar entre lento/rapido. Por defecto empieza en rapido.
                                 //el caracter de control '$' sirve para hacer una pausa. funciona en cualquier modo
{
  int p=-1;
  bool esp = false;
  while(p++,frase[p]!='\0')
    {
      if(frase[p]=='%')
        {
          esp = esp? false : true;  //si es el caracter de control, se cambia entre esperar/no_esperar
          continue;
        }
      if(frase[p]=='$') //este otro caracter de control espera sin imprimir
        {
          espera(100000);
          continue;
        }

      if(esp)espera(50000); //si hay que esperar se espera
      cout<<frase[p];
      if(esp)espera(50000);
    }
}


int main(int argc, char *argv[])
{
  int var = 0; //inicializa variables
  char tecla;
  int tiempo = inicial;

//Instrucciones: cada trozo, separado por '%', los escribe rápido y lento alternativamente. '$' indica pausa
  char frase1[]="B:>%$$programas$%\nB:\\programas>%$aleatorio$%\nB:\\programas\\aleatorio>%$ayuda$";
  char frase2[]="\n\n\nPulsa h para mostrar la ayuda otra vez%\n$%Pulsa la tecla + para que vaya mas rapido%\n$%Pulsa la tecla - para que vaya mas lento%\n$%Pulsa la barra espaciadora para resetear el tiempo de espera%\n$%Pulsa p para pausar%\n$%Pulsa escape para salir.%\n$\n%Secuencia pseudo-aleatoria en: %3$.$2$.$1$.$%0\n";

  if(argc==1) //Si se le pasa un parametro al programa (el que sea) comienza la secuencia directamente
    {
      instrucciones(frase1);
      instrucciones(frase2);
    }

  //getch();
  srand(time(NULL)); //la semilla es siempre la misma al inicio del programa, con esta expresión la definimos en función de la hora de ejecución (siempre será distinta)

  while(1)  //Siempre
    {
      if(kbhit())//si existe una tecla pulsada a la espera de ser leida, kbhit() devuelve 1 y se comprueba cual es con getch()
        {
          tecla = getch();
          switch(tecla)
            {
            case mas:
              if(tiempo>=cambio)tiempo-=cambio;
              break;
            case menos:
              tiempo+=cambio;
              break;
            case reset:
              tiempo=inicial;
              break;
            case ayuda:
              instrucciones(frase2);
              break;
            case pausa:
              getch();
              break;
            case 27:
              return 0;
              break;
            }
          //cout<<endl<<tiempo<<endl;
        }

      var=rand()%11; //numero aleatorio entre 0 y 10
      var==10 ? cout<<" " : cout<<var; //si var=10 escribe espacio, si no escribe el numero 0-9
      espera(tiempo);
    }

  return 0;
}

Anuncios
Esta entrada fue publicada en Informática e Internet. Guarda el enlace permanente.

2 respuestas a Secuencia aleatoria de números v2

  1. Pingback: Secuencia aleatoria de números | ESPACIO DE PROGRAMACION I

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s