jueves, 27 de abril de 2017

[CÓDIGO DOCUMENTADO] Semáforo en Visual C#

El día de hoy les traemos nuestro primer programa explicado en esta sección titulada "[CÓDIGO DOCUMENTADO]" de un Semáforo en Visual Studio en nuestro lenguaje favorito: C#

Form en reposo

Form en uso


Empecemos:






Ahora mostrado en texto en caso de que no sean legible las imágenes:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Semaforo
{
    public partial class semaforo : Form
    {
        int i = 0;   //Variable que utilizaremos para el uso del Switch Case.
        public semaforo()
        {
            InitializeComponent();
        }
         
        private void Iniciar_Click(object sender, EventArgs e)
        {   //En el evento click pondremos las siguientes acciones a realizar.
            timer1.Start();   //Declaramos que el timer se encienda.
            detener.Enabled = true;  //Declaramos que el boton "Detener" este habilitado.
            Apagar.Enabled = true;  //Declaramos que el boton "Apagar" este habilitado.
            Iniciar.Enabled = false;  //Declaramos que el boton "Iniciar" este deshabilitado.
        }

        private void pictureBox1_Click(object sender, EventArgs e)
        {  //En el picturebox1, pondremos lo siguiente para que se puedan mostrar las imagenes del semaforo.
            pictureBox1.Image = Semaforo.Properties.Resources.semaforo1;  //Buscamos la imagen que se mostrara en el box.
            detener.Enabled = false;  //Declaramos que el boton "detener" este deshabilitado.
            Apagar.Enabled = false;  //Declaramos que el boton "Apagar" este deshabilitado.
        }

        private void timer1_Tick(object sender, EventArgs e)
        {           /*Dentro del evento Tick, pondremos un Switch Case, que se encargara de 
                     estar mostrando la secuencia de imagenes que le dara vida a nuestro semaforo. */
            
            switch(i)  //Pondremos la variable que se estara modificando a lo largo de los casos.
            {
                case 0: //Cuando la variable "i" tenga el valor de 0 (Valor predeterminado) se ejecutara lo siguiente.
                    pictureBox1.Image = Semaforo.Properties.Resources.semaforo_verde; //Mostrara la imagen del semaforo en verde.
                    timer1.Interval = 2000;  //Le pondremos un pequeno delay de 2 segundos entre estas imagenes.
                    pictureBox2.Image = Semaforo.Properties.Resources.semaforo_rojo;  //Mostrara la imagen del semaforo en rojo.
                    timer1.Interval = 3500;  //Delay de 3,5 segundos.
                    i = 1;  //Esta es una parte importante del case, aqui se le sumara 1 a la variable, para que pase al siguiente caso.
                    break;  //Fin del caso 0.

                case 1:  //Cuando la variable "i" tenga el valor de 1, se ejecutara lo siguiente.
                    pictureBox1.Image = Semaforo.Properties.Resources.semaforo_amarillo;  //Mostrara la imagen del semaforo en amarillo.
                    timer1.Interval = 1500;  //Delay de 1,5 segundos.                   
                    i = 2;  //A la variable se le cambia el valor de 1 a 2.
                    break;  //Fin del caso 1.

                case 2:  //Cuando la variable "i" tenga el valor de 2, se ejecutara lo siguiente.
                    pictureBox1.Image = Semaforo.Properties.Resources.semaforo_rojo;  //Mostrara la imagen del semaforo en rojo.
                    timer1.Interval = 3500;  //Delay de 3,5 segundos.
                    pictureBox2.Image = Semaforo.Properties.Resources.semaforo_verde;  //Mostrara la imagen del semaforo en verde.
                    timer1.Interval = 2000;  //Delay de 2 segundos.
                    i = 3;  //A la variable se le cambia el valor de 2 a 3.
                    break;  //Fin del caso 2.
                    
                case 3:  //Cuando la variable "i" tenga el valor de 3, se ejecutara lo siguiente.
                    pictureBox2.Image = Semaforo.Properties.Resources.semaforo_amarillo;  //Mostrara la imagen del semaforo en amarillo.
                    timer1.Interval = 1500;  //Delay de 1,5 segundos.
                    i = 0;  //A la variable se le cabia el valor de 3 a 0 para volver a comenzar la secuencia de imagenes, a esto se le llama loop.
                    break;  //Fin del caso 3.
            }
        }

        private void pictureBox2_Click(object sender, EventArgs e)
        {  //En el picturebox2, pondremos lo siguiente para que se puedan mostrar las imagenes del semaforo.
            pictureBox2.Image = Semaforo.Properties.Resources.semaforo1;  //Buscamos la imagen para mostrar en el box.
            detener.Enabled = false;  //Declaramos que el boton "detener" este deshabilitado.
            Apagar.Enabled = false;  //Declaramos que el boton "Apagar" este deshabilitado.
        }

        private void detener_Click(object sender, EventArgs e)
        {  //Dentro del evento click del boton "detener", haremos que al pulsarlo, cambie de texto para ahorrarnos un boton y hacerlo 2 en 1.
            //Con la funcion "if - else" vamos a realizar el cambio de texto del boton en cuestion.
            if(detener.Text=="Detener")  //Aqui dice, que si el boton este en el estado de "Detener"-->
            { //--> Se cumplira la condicion y por lo tanto, el timer se pausa y el texto del boton cambia de "Detener" a "Seguir".
            timer1.Enabled = false;
            detener.Text = "Seguir";
            }
            else  //Con la funcion "else" diremos lo contrario a lo anterior.
                if (detener.Text == "Seguir")  ////Aqui dice, que si el boton este en el estado de "Seguir"-->
                {//--> Se cumplira la condicion y por lo tanto, el timer sigue y el texto del boton cambia de "Seguir" a "Detener".
                    timer1.Enabled = true;
                    detener.Text = "Detener";
                }
        }

        private void Apagar_Click(object sender, EventArgs e)
        {  //Dentro del evento click del boton "Apagar" declaramos lo siguiente.
            timer1.Stop();  //El timer se apaga por completo.
            detener.Enabled = false;  //Declaramos que el boton "detener" sea deshabilitado.
            Apagar.Enabled = false;  //Declaramos que el boton "Apagar" sea deshabilitado.
            Iniciar.Enabled = true;  //Declaramos que el boton "Iniciar" sea habilitado.
            pictureBox1.Image = Semaforo.Properties.Resources.semaforo1;  //Y nos regresamos a la imagen donde ninguna luz del semaforo esten encencidas.
            pictureBox2.Image = Semaforo.Properties.Resources.semaforo1;  // ?
        }//FIN DEL CODIGO.
    }                  // 6B Mecatronica, Equipo: Los Aprencides de Fibonacci, a 26/04/2017.

}                     //Gracias por tomarse el tiempo de leerlo profesor, que tenga buen dia!

No hay comentarios.:

Publicar un comentario