Programar en C#

Visual C #.NET


En esta sección te hablare del lenguaje de programación C Sharp y te ayudare en la construcción de algunos programas de los cuales podrás ayudarte para hacer los tuyos. Espero te sirvan en tus materias o en tus proyectos personales.
Vamos a Comenzar con Programas Sencillos Para facilitar tu entendimiento en la sintaxis del Lenguaje, estos programas son publicados de manera libre, pero como consejo no te recomiendo copiarlos sino estudiarlos para que puedas aprender la función de cada fragmento de código y esto te ayude a buscar otra forma de hacer el mismo programa si así lo deseas,“De nada sirve si no aprendiste nada”. Recuerda que “Puedes engañar al mundo, pero nunca a ti mismo” y que después que conoces la sintaxis del lenguaje “todo es cuestión de lógica”.
Estudia, Analiza, Aprende…





Hacer un Programa que (HUPQ)_Muestre la Hora y la fecha del Sistema cada uno en TexBox:


Para hacer este programa necesitaremos un timer, asi que lo buscamos en la barra de herramientas que se encuentra en la parte izquierda, arrastramos el timer  que tiene como icono un reloj,  entonces vamos a la parte derecha a la ventana de propiedades para hacer algunos cambios: en la propiedad de enable la cambiamos truepara activar del timer,  luego cambiamos la propiedad Intervaly la valor de 1000.
Luego de esto procedemos a hacer doble clic en el timery escribir el siguiente código:
privatevoid timer1_Tick(object sender, EventArgs e)
{
//lo que aqui se expresa es lo siguiente
//el texbox es igual a una representacion de instante de tiempo
//que coresponde al momento actual
 //luego lo combierte a un tipo de dato string
txt_hora.Text = DateTime.Now.ToString("hh:mm:ss");
            txt_fecha.Text = DateTime.Now.ToString("dd/MM/yy");
}



 (HUPQ) Simule una Alarma o Despertador Donde Muestre la Hora del Sistema en un texbox y en otro texbox muestre la hora en la que debe mostrar un mensaje de alerta:



Este programa es muy fácil usaremos los mismos pasos del programa anterior agregando algunos detalles
Hacemos el procedimiento anterior con el timer, y luego hacemos doble clic y escribimos el siguiente código:
privatevoid timer1_Tick(object sender, EventArgs e)

{
            txt_pantalla.Text = DateTime.Now.ToString("hh:mm:ss");

//esta simple condicion es la que hace que la alarma se active
if (txt_pantalla.Text==Txt_Sonar.Text)
      {               
       MessageBox.Show("El Tiempo se a terminado,o lo que quieras");
            }
  }


(HUPQ) Simule una pequeña base de datos de usuario e Imprima los Datos
En este caso vamos a usar algunos label, texbox, listboxPicturebox, groupbox, RadioButons, Combobox, checkboxy un botón para imprimir los datos.
En este proyecto los label son solamente usados para las etiquetas, en el caso de los texbox los usaremos para los nombres y otros datos personales  que serán escritos.Debemos darle nombre de variable a cada objeto que usamos esto se puede hacer en la propiedad Name,en mi caso yo le coloco a los texboxlas letras txt_ al principio de cada nombre de objeto así también a los comboboxle agrego la palabra Comp_ al principio y así sucesivamente. Esto se hace para distinguirlos y así no confundirse cuando se esté programando pero puedes colocar los nombres de variables que desees.
En el caso de los radiobutons los arrastramos dentro de un grupBoxpor la razón de que en una cantidad de dos o más radiobutons solo uno puede estar marcado, al arrastrar dos o más hacia dentro de un grupbox prácticamente estos son separados de los demás en lo que se refiere a funciones. También necesitamos darle un nombre para que aparezca en pantallapara esto nos dirigimos a la propiedad text, Como ya te dije Siempre en una colección deradiobutondebe haber uno marcado  para lograr esto das un clic en uno de los radiobutony vas a la propiedad checked y la cambias a true.
En lo que se refiere a los comboBoxsolo tenemos que ir a la propiedad ítems y agregar a la coletionlos nombres que queremos que aparezcan en la lista.
Los checkboxa diferencia de los radiobuton se pueden marcar todos los que se deseen y por esto no necesitan estar dentro de un grupBox, solo tenemos que ir a la propiedad texty agregar el nombre que deseamos que aparezca en cada uno de nuestros checkbox.
El botón se utilizara para imprimir los datos, necesitaremos cambiar el nombre que el botón muestra en el formulario para ello vamos a la propiedad Text, también le cambiaremos el nombre de variable en la propiedad Name.
Finalmente procedemos a dar doble clic en el botón y pasamos a escribir todo este código:





















privatevoid button1_Click(object sender, EventArgs e)
{
//esta variable es donde se hira almacenando lo que vamos a imprimir
String Opciones;           

//Nacionalidad
if (lisb_Nacionalidad.Text == "Dominicano/a")
                Opciones =  "Dominicano, ";
elseif (lisb_Nacionalidad.Text == "Americano/a")
Opciones = "Americano, ";                               


// sexo
if (Op_M.Checked == true)
Opciones = "Masculino,";
else
                Opciones = "Femenino,";

if (Op_M.Checked == true)
            {
                img_hombre.Visible = true;
            }
if (Op_M.Checked == false)
{
                img_Mujer.Visible = true;
            }

//puesto al que haspira
if (Op_Of.Checked == true)
//este ejemplo de codigo se repite en todas las secciones del
//codigo debido a que en esta parte la bariable obciones
//conserva los datos que ya se le asignaon y agrega el nuevo dato
//siempre que la condicion se cumpla.              
                Opciones = Opciones + "Haspira al Puesto de Oficina,";
elseif (Op_Em.Checked == true)
Opciones = Opciones + "HAspira al puesto de Empaque,";
else
       Opciones = Opciones + "Haspira al puesto de Trabajo de Campo,";


//licencia de Conducir
if (op_cat2.Checked == true)
Opciones = Opciones + "licencia de Conducir Cat. 2, ";
elseif (op_cat3.Checked == true)
Opciones = Opciones + "licencia de Conducir Cat. 3, ";
else

                Opciones = Opciones + "No tiene Licencia, ";                 


//estado civil
if(Op_C.Checked==true)
                Opciones=Opciones+"Casad@,";
elseif(Op_S.Checked==true)
Opciones=Opciones+"Solter@,";
else
                Opciones=Opciones+"Union Libre,";

//hijos
if (comb_Hijos.Text == "uno")
                Opciones = Opciones + "Tiene 1 Hijo, ";
elseif (comb_Hijos.Text == "Dos")
                Opciones = Opciones + "Tiene 2 Hijos, ";
else
                Opciones = Opciones + "No Tiene hijos, ";

//ocupacion
if(Ck_T.Checked==true)
Opciones = Opciones + "Trabaja,";

if (Ck_E.Checked == true)
                Opciones = Opciones + "Estudia,";


//datos personales
//aqui se imprimen todos los datos de la bariable obciones
//mas los datos que estan en los texbox
            Opciones = Opciones + txt_nom.Text + ",";
            Opciones = Opciones + txt_Dir.Text + ",";
            Opciones = Opciones + txt_Tel.Text + ",";
            Opciones = Opciones + txt_cor.Text + ",";
            Opciones = Opciones + lisb_Nacionalidad.Text + ",";
//aqui es donde imprimimos el codigo y se muetra en pantalla.
MessageBox.Show(Opciones);
        }

Ahora la cosa se comienza a poner interesante, se complica un poquito ya que no vamos a dar tantas explicación sobe el formulario. Además vamos a trabajar con lo que se le llama clase lo cual es mejor ya que en programación esto nos facilita mucho el trabajo.
Empezaremos con algo sencillo…
(HUPQ) sume dos números ingresados por teclado




Si trabajamos con clase siempre luego del formulario creamos la clase: hacemos clic en form, luego vamos al explorador de soluciones después a agregar y luego clic en clase, para finalizar nos aparece un pequeño menú en el cual ponemos el nombresiempre finalizado en .cs y le damos a aceptar.
Esta es la clase:
namespaceproyecto_marino_suma
{
classClass_Calculadora
{
// las propiedades prim y seg son propiedades las cuales son equivalentes      a //los valores ingresados, la propiedad SET es la que inserta los valores y la GET //es la que devuelve el valor.

// propiedad Prim
privatedouble prim;
publicvoidSet_prim(double valor)
        {
prim = valor;
        }
publicdoubleGet_Prim()
        {
return prim;
        }
// propiedadSeg
privatedoubleSeg;
publicvoidSet_Seg(double valor)
{
Seg = valor;
        }
publicdoubleGet_Seg()
        {
returnSeg;
        }
// propiedadoperadores
privatedoublebotSuma;
publicvoidSet_botSuma(double valor)
        {
botSuma = valor;
        }
publicdoubleGet_botSuma()
        {
returnbotSuma;
        }

publicvoidsumar()
{
botSuma = prim + Seg;
        }


}

}

Ahora Haremos lo que llamamos instanciación o instanciar la clase, en este proceso lo que hacemos es conectar cada propiedad o variable de la clase con el objeto. La instanciación debe ser colocada en el botón de ejecución ósea el que realiza la tarea, en nuestro caso el botón del signo de más“+”.

Instanciación de la clase:
namespaceproyecto_marino_suma
{
publicpartialclassSumar : Form
    {
publicSumar()
        {
InitializeComponent();
        }

privatevoidcmd_masClick(object sender, EventArgs e)
{
//INstanciar la clase
Class_CalculadoraObj_suma = newClass_Calculadora();
Obj_suma.Set_prim(double.Parse(Txt_Prim.Text));
Obj_suma.Set_Seg(double.Parse(Txt_Seg.Text));
Obj_suma.sumar();
Txt_Tot.Text = Convert.ToString(Obj_suma.Get_botSuma());

}


SI DESEAMOS QUE NUESTRA CALCULADORA DE DOS NÚMEROS APARTE DE SUMAR TAMBIÉN RESTE, DIVIDA Y MULLIQUE. SOLO HACEMOS ALGUNOS CAMBIOS:

Agregamos 3 botones:




Le agregamos algo de código a la clase para las nuevas operaciones:
namespaceproyecto_marino_suma
{
classClass_Calculadora
{
// propiedad Prim
privatedouble prim;
publicvoidSet_prim(double valor)
        {
prim = valor;
        }
publicdoubleGet_Prim()
        {
return prim;
        }
// propiedadSeg
privatedoubleSeg;
publicvoidSet_Seg(double valor)
        {
Seg = valor;
        }
publicdoubleGet_Seg()
        {
returnSeg;
        }
// propiedadoperadores
privatedoublebotSuma;
publicvoidSet_botSuma(double valor)
        {
botSuma = valor;
        }
publicdoubleGet_botSuma()
        {
returnbotSuma;
        }

publicvoidsumar()
        {
botSuma = prim + Seg;
        }

privatedoublebotResta;
publicvoidSet_botResta(double valor)
        {
botResta = valor;
        }
publicdoubleGet_botResta()
        {
returnbotResta;
        }

publicvoidRestar()
{
botResta = prim - Seg;
        }
privatedoublebotMultiplicar;
publicvoidSet_botMultiplicar(double valor)
        {
botMultiplicar = valor;
        }
publicdoubleGet_botMultiplicar()
        {
returnbotMultiplicar;
        }

publicvoidMultiplicar()
        {
botMultiplicar = prim * Seg;
        }
privatedoublebotDividir;
publicvoidSet_botDividir(double valor)
        {
botDividir = valor;
        }
publicdoubleGet_botDividir()
        {
returnbotDividir;
        }

publicvoidDividir()
{          
botDividir = prim / Seg;
        }



    }
}


Y hacemos 3 instanciaciones de clase,1 para cada operación:
namespaceproyecto_marino_suma
{
publicpartialclassSumar : Form
    {
publicSumar()
        {
InitializeComponent();
        }

privatevoidcmd_MasClick(object sender, EventArgs e)
{
//INstanciar la clase
Class_CalculadoraObj_suma = newClass_Calculadora();
Obj_suma.Set_prim(double.Parse(Txt_Prim.Text));
Obj_suma.Set_Seg(double.Parse(Txt_Seg.Text));
Obj_suma.sumar();
Txt_Tot.Text = Convert.ToString(Obj_suma.Get_botSuma());

        }

privatevoidbotResta_Click(object sender, EventArgs e)
{
Class_CalculadoraObj_suma = newClass_Calculadora();
Obj_suma.Set_prim(double.Parse(Txt_Prim.Text));
Obj_suma.Set_Seg(double.Parse(Txt_Seg.Text));
Obj_suma.Restar();
Txt_Tot.Text = Convert.ToString(Obj_suma.Get_botResta());


        }

privatevoidbotMultiplicar_Click(object sender, EventArgs e)
{
Class_CalculadoraObj_suma = newClass_Calculadora();
Obj_suma.Set_prim(double.Parse(Txt_Prim.Text));
Obj_suma.Set_Seg(double.Parse(Txt_Seg.Text));
Obj_suma.Multiplicar();
Txt_Tot.Text = Convert.ToString(Obj_suma.Get_botMultiplicar());


        }

privatevoidbotDividir_Click(object sender, EventArgs e)
{
//el siguiente código se para corregir un error, ya que en las matemáticas //nuca se puede dividir un números entre cero, en lugar de este problema //frisar nuestro programa simplemente muestra un error diciendo: esta //operación no es posible

             //Condicional para el cero
if (Txt_Seg.Text == "0")
            {
MessageBox.Show("esta operacion no es posible");
            }


Class_CalculadoraObj_suma = newClass_Calculadora();
Obj_suma.Set_prim(double.Parse(Txt_Prim.Text));
Obj_suma.Set_Seg(double.Parse(Txt_Seg.Text));
Obj_suma.Dividir();
Txt_Tot.Text = Convert.ToString(Obj_suma.Get_botDividir());

        }



        }
}




(HUPQ) Simule una Calculadora Científica (Con Clase)
Este tipo de calculadora es un poco mas complicado devido a que en este caso tenemos mas funciones como:seno, coseno, tangente, cotangente, secante, cosecante, logaritmo, factorial, elevacion, y las operaciones comunes. Usaremos 2 texbox, tambien usaremos los botones AC y C que solo se encargan de limpiar los texbox.

El Form







                           
Ahora trabajaremos con la clase:
namespaceProyecto_Calc_Cientifica
{
classClass1_Calc
    {
//estas son las variables que vamos a usar las declaramos PRIVATE DOUBLE
//para poder usar cantidades fraccionales.
privatedouble n1, n2, res, sen, cos,tang, Sec, Csec, Log, potc, fact, ctg;
privatestring ejecutar;
//Propiedades del primer valor
publicvoid Set_n1(double Valor)
        {
            n1 = Valor;
        }
publicdouble Get_n1()
{
return n1;
        }
//propiedades del segundo valor
publicvoid Set_n2(double Valor)
        {
            n2 = Valor;
        }
publicdouble Get_n2()
{
return n2;
        }
//propiedades de la variable que va a almacenar el resultado
publicvoidSet_res(double Valor)
        {
res = Valor;
        }
publicdoubleGet_res()
{
return res;
        }
//para las siguientes operaciones usaremos la libreria "Math" para ayudarnos
//seno
publicvoidSet_sen(double Valor)
        {
sen = Valor;
        }
publicdoubleGet_sen()
        {
returnsen;
        }
publicvoidseno()
        {
res = Math.PI * n2 / 180;
res = Math.Sin(res);
        }
//coseno
publicvoidSet_cos(double Valor)
        {
cos = Valor;
        }
publicdoubleGet_cos()
        {
returncos;
        }
publicvoidcoseno()
{
res = Math.PI * n2 / 180;
res = Math.Cos(res);
}
//tangente
publicvoidSet_tang(double Valor)
        {
tang = Valor;
        }
publicdoubleGet_tang()
        {
return tang;
        }
publicvoidtangente()
{
res = Math.PI * n2 / 180;
res = Math.Tan(res);
        }
//cotangente
publicvoidSet_ctg(double Valor)
        {
ctg = Valor;
        }
publicdoubleGet_ctg()
        {
returnctg;
        }
publicvoidcotangente()
        {
res = Math.Tanh(n2);
        }      
//secante
publicvoidSet_Sec(double Valor)
        {
            Sec = Valor;
        }
publicdoubleGet_Sec()
        {
return Sec;
        }
publicvoidsecante()
        {
res = Math.Cosh(n2);
        }
//cosecante
publicvoidSet_Csec(double Valor)
        {
Csec = Valor;
        }
publicdoubleGet_Csec()
        {
returnCsec;
        }
publicvoidcosecante()
        {
res = Math.Sinh(n2);
        }
//logaritmo
publicvoidSet_Log(double Valor)
        {
            Log = Valor;
        }
publicdoubleGet_Log()
        {
return Log;
        }
publicvoidlogaritmo()
        {
res = Math.Log10(n2);
        }
//potencia
publicvoidSet_potc(double Valor)
        {
potc = Valor;
        }
publicdoubleGet_potc()
        {
returnpotc;
        }
publicvoidpotencia()
        {
res = Math.Pow(n2, 3);           
        }
//factorial
publicvoidSet_fact(double Valor)
        {
fact = Valor;
        }
publicdoubleGet_fact()
        {
return fact;
        }
publicvoid factorial()
        {
res = Math.Sqrt(n2);

int i;
res = 1;
for (i = 1; i <= n2; i++)
{
res *= i;
            }
        }

//operadores               
//ejecutar
publicvoidSet_ejecutar(string Valor)
{
ejecutar = Valor;
}
publicstringGet_ejecutar()
        {
returnejecutar;
}              
publicvoidejecutar_operacion()                             
        {
//aqui usaremos un "switch"

switch (ejecutar)
            {
case"Sumar":
res = n1 + n2; break;
case"multiplicar":
res = n1 * n2; break;
case"Restar":
res = n1 - n2; break;
case"Dividir":
res = n1 / n2; break;
}

        }
    }
}


Ahora vamos a trabajar con el Objeto:

namespaceProyecto_Calc_Cientifica
{
publicpartialclassCalc : Form
    {
publicCalc()
        {
InitializeComponent();
        }
//esta variable tiene que ver mucho con el switch, tambien lo veran mas adelante
//en los operadores.
stringoperacion;           
privatevoid num1_Click(object sender, EventArgs e)
{
//aqui haremos que nuestros botones funciones para poder marcarlos usando el //mause.
//este codigo lo que hace es conservar el valor que ya esta almacenado en la //texbox de pantalla
//y agregar el nuevo que en este caso es el uno"1".
txt_res1.Text = txt_res1.Text + "1";
        }
privatevoid num2_Click(object sender, EventArgs e)
        {
            txt_res1.Text = txt_res1.Text + "2";
        }
privatevoid num3_Click(object sender, EventArgs e)
        {
            txt_res1.Text = txt_res1.Text + "3";
        }
privatevoid num4_Click(object sender, EventArgs e)
        {
            txt_res1.Text = txt_res1.Text + "4";
        }
privatevoid num5_Click(object sender, EventArgs e)
        {
            txt_res1.Text = txt_res1.Text + "5";
        }
privatevoid num6_Click(object sender, EventArgs e)
        {
            txt_res1.Text = txt_res1.Text + "6";
        }
privatevoid num7_Click(object sender, EventArgs e)
        {
            txt_res1.Text = txt_res1.Text + "7";
        }
privatevoid num8_Click(object sender, EventArgs e)
        {
            txt_res1.Text = txt_res1.Text + "8";
        }
privatevoid num9_Click(object sender, EventArgs e)
        {
            txt_res1.Text = txt_res1.Text + "9";
        }
privatevoid num0_Click(object sender, EventArgs e)
{
//este codigo es una condicional para que si el texbox de la pantalla     //no tiene un valor mayor a cero ingresado
//no se pueda marcar el cero tal como lo hacen las calculadora cientificas.
if (txt_res1.Text == "")
            {
                txt_res1.Text = txt_res1.Text + "";
            }
else
            {              
            txt_res1.Text = txt_res1.Text + "0";
            }
        }
privatevoidBotAc_Click(object sender, EventArgs e)
{
//este es el codigo para limpiar las pantallas
txt_res1.Text = "";
txt_resultado.Text = "";
txt_guard.Text = "";
        }
privatevoidbotPunto_Click(object sender, EventArgs e)
{
//aquiesta el codigo del punto, que dice: que si la pantalla es igual a nada
//al presionar el boton del punto no ocurrira nada, pero si la pantalla ya    //contiene
//un valor entonces se marcara el punto
if (txt_res1.Text == "")
            {
                txt_res1.Text = txt_res1.Text + "";
            }
else
            {  
            txt_res1.Text = txt_res1.Text + ".";
            }
if (txt_res1.Text == ".")
            {
                txt_res1.Text = txt_res1.Text + "";                
            }
        }
privatevoidbotSen_Click(object sender, EventArgs e)
{
//en las siguientes operaciones vamos instanciar clases
//pero devemos crear las condicionales que dicen lo siguiente:
//dice que si el texbox de la pantalla no tiene ningun valor ingresado
//le mostrara un letrero donde dice que digite un valor
//si la pantalla ya contiene un valor procedera a ejecutar la operacion
if (txt_res1.Text == "")
            {
txt_resultado.Text = "Digite Un Valor";
}
else
            {
//Instanciaciondelseno

Class1_Calcobj_seni = newClass1_Calc();
                obj_seni.Set_n2(double.Parse(txt_res1.Text));
obj_seni.seno();
txt_resultado.Text = Convert.ToString(obj_seni.Get_res());
            }
        }
privatevoidbotCos_Click(object sender, EventArgs e)
{
if (txt_res1.Text == "")
            {
txt_resultado.Text = "Digite Un Valor";
}
else
            {
//Instanciaciondelcoseno

Class1_Calcobj_cosi = newClass1_Calc();
                obj_cosi.Set_n2(double.Parse(txt_res1.Text));
obj_cosi.coseno();
txt_resultado.Text = Convert.ToString(obj_cosi.Get_res());
            }
        }
privatevoidbotTan_Click(object sender, EventArgs e)
{
if (txt_res1.Text == "")
            {
txt_resultado.Text = "Digite Un Valor";
}
else
            {
//Instanciaciondeltangente

Class1_Calcobj_tangi = newClass1_Calc();
                obj_tangi.Set_n2(double.Parse(txt_res1.Text));
obj_tangi.tangente();
txt_resultado.Text = Convert.ToString(obj_tangi.Get_res());
            }
        }
privatevoidbotSec_Click(object sender, EventArgs e)
{
if (txt_res1.Text == "")
            {
txt_resultado.Text = "Digite Un Valor";
}
else
            {
//InstanciaciondelSecante
Class1_Calcobj_Seci = newClass1_Calc();
                obj_Seci.Set_n2(double.Parse(txt_res1.Text));
obj_Seci.secante();
txt_resultado.Text = Convert.ToString(obj_Seci.Get_res());
            }
        }
privatevoidBotCsec_Click(object sender, EventArgs e)
{
if (txt_res1.Text == "")
            {
txt_resultado.Text = "Digite Un Valor";
}
else
            {
//InstanciaciondelCosecante

Class1_Calcobj_cseci = newClass1_Calc();
                obj_cseci.Set_n2(double.Parse(txt_res1.Text));
obj_cseci.cosecante();
txt_resultado.Text = Convert.ToString(obj_cseci.Get_res());
            }
        }
privatevoidbotLog_Click(object sender, EventArgs e)
{
if (txt_res1.Text == "")
            {
txt_resultado.Text = "Digite Un Valor";
}
else
            {
//InstanciaciondelLogaritmo

Class1_Calcobj_logi = newClass1_Calc();
                obj_logi.Set_n2(double.Parse(txt_res1.Text));
obj_logi.logaritmo();
txt_resultado.Text = Convert.ToString(obj_logi.Get_res());
            }
        }
privatevoidbotPotc_Click(object sender, EventArgs e)
{
if (txt_res1.Text == "")
            {
txt_resultado.Text = "Digite Un Valor";
            }
else
            {
//Instanciacion de la potencia

Class1_Calcobj_potci = newClass1_Calc();
                obj_potci.Set_n2(double.Parse(txt_res1.Text));
obj_potci.potencia();
txt_resultado.Text = Convert.ToString(obj_potci.Get_res());
            }
        }
privatevoidbotFact_Click(object sender, EventArgs e)
{
if (txt_res1.Text == "")
            {
txt_resultado.Text = "Digite Un Valor";
}
else
            {
//Instanciaciondel Factorial

Class1_Calcobj_fac = newClass1_Calc();
                obj_fac.Set_n2(double.Parse(txt_res1.Text));
obj_fac.factorial();
txt_resultado.Text = Convert.ToString(obj_fac.Get_res());
            }
        }

privatevoidbotCtag_Click(object sender, EventArgs e)
{
if (txt_res1.Text == "")
            {
txt_resultado.Text = "Digite Un Valor";
}
else
            {
//InstanciaciondelCotangente

Class1_Calcobj_ctang = newClass1_Calc();
                obj_ctang.Set_n2(double.Parse(txt_res1.Text));
obj_ctang.cotangente();
txt_resultado.Text = Convert.ToString(obj_ctang.Get_res());
            }

        }
privatevoidbotCE_Click(object sender, EventArgs e)
{
//este codigo es solo para limpiar el texbox de la pantalla de entrada //unicamente
txt_res1.Text = "";
        }
privatevoidbotIgual_Click(object sender, EventArgs e)
{
if (txt_res1.Text == "")
            {
txt_resultado.Text = "Digite Un Numero";
            }
else
            {
// para los operadores suma,resta,dividir,multiplicar. instanciaremos solo en //el boton de igual"="
//ya que la seleccion de la operacion se ra desde el boton de la operacion pero //el resultado vendra desde la clase

//Instanciacion

Class1_Calcobj_calc = newClass1_Calc();
                obj_calc.Set_n1(double.Parse(txt_guard.Text));
                obj_calc.Set_n2(double.Parse(txt_res1.Text));
obj_calc.Set_ejecutar(operacion);
obj_calc.ejecutar_operacion();                                          
txt_resultado.Text = obj_calc.Get_res() + "";
                txt_res1.Text = "";               
            }
        }
//Operador de multilicar
privatevoidbotMultiplicar_Click(object sender, EventArgs e)
{
//en estos operdores este cogigo es esencial para trasladar los valores
//dice que si el texbox del resultado es igual a nada el texboxsera igual
//al valor que esta almcenado en la pantalla de entrada"res1" y que la //pantalla de resultado
//sera igual a la pantalla de entrada finalmente la pantalla de entrada no tendra
//ningun valor almacenado
if (txt_resultado.Text == "")
            {
operacion = "multiplicar";
txt_guard.Text = (txt_res1.Text);
txt_resultado.Text = txt_res1.Text;
                txt_res1.Text = "";
            }
//de lo contrario texboxguardsera igual la pantalla de resultado
//y "operacion" sera igual a la operacion en este caso multilicar
else
            {
txt_guard.Text = (txt_resultado.Text);
operacion = "multiplicar";
            }
if (txt_res1.Text != ""&&txt_resultado.Text != "")
            {
doubleSeg, Prim;
Seg = double.Parse(txt_res1.Text);
                Prim = double.Parse(txt_resultado.Text);
txt_resultado.Text = Seg * Prim + "";
txt_res1.Text = "";
            }
        }
//operador de resta
privatevoidbotRestar_Click(object sender, EventArgs e)
        {
if (txt_resultado.Text == "")
            {
operacion = "Restar";
txt_guard.Text = (txt_res1.Text);
txt_resultado.Text = txt_res1.Text;
                txt_res1.Text = "";
            }
else
            {
txt_guard.Text = (txt_resultado.Text);
operacion = "Restar";
            }
if (txt_res1.Text == ""&&txt_resultado.Text == "")
            {
doubleSeg, Prim;
Seg = double.Parse(txt_res1.Text);
                Prim = double.Parse(txt_resultado.Text);
txt_resultado.Text = Seg - Prim + "";
txt_res1.Text = "";
            }
        }
//operador de Dividir
privatevoidbotDividir_Click(object sender, EventArgs e)
        {           
if (txt_resultado.Text == "")
            {
operacion = "Dividir";
txt_guard.Text = (txt_res1.Text);
txt_resultado.Text = txt_res1.Text;
                txt_res1.Text = "";
            }
else
            {
txt_guard.Text = (txt_res1.Text);
operacion = "Dividir";
            }
if (txt_res1.Text != ""&&txt_resultado.Text != "")
            {
doubleSeg, Prim;
Seg = double.Parse(txt_res1.Text);
                Prim = double.Parse(txt_resultado.Text);
txt_resultado.Text = Seg / Prim + "";
txt_res1.Text = "";
            }
        }
//operador de Suma
privatevoidbotMas_Click(object sender, EventArgs e)
        {
if (txt_resultado.Text == "")
            {
operacion = "Sumar";
txt_guard.Text = txt_res1.Text;
txt_resultado.Text = txt_res1.Text;
                txt_res1.Text = "";
            }
else
            {
txt_guard.Text = (txt_resultado.Text);
operacion = "Sumar";
            }
if (txt_res1.Text != ""&&txt_resultado.Text != "")
            {
doubleSeg, Prim;
Seg = double.Parse(txt_res1.Text);
                Prim = double.Parse(txt_resultado.Text);
txt_resultado.Text = Seg + Prim + "";
txt_res1.Text = "";
            }
        }
    }
}


(HUPQ) Que Genere la serie de Fibonacci (Con Clase)

Para este programa haremos que  genere la serie de fibonacci hasta un valorlimite que introduciremos en un segundotexbox al lado del boton generar

Form










La Clase
namespaceproyecto_fibonacci
{
classClass1_fibonacci
    {
// declaramos las variables en "string" como cadena de caracteres
privatestring Serie;
//Propiedad de la serie
publicstringGet_Serie()
        {
returnSerie;
        }
publicvoid Set(string valor)
{
            Serie = valor;
        }

//propiedad del valor limite al que llegara la serie
privatelonglimite;
publiclongGet_limite()
        {
returnlimite;
        }
publicvoidSet_limite(long valor)
{
limite = valor;
        }

//Generar la serie
publicvoidGenerar_Serie()
{
int num1, num2;
            num1 = 0;
            num2 = 1;
Serie = num1 + "," + num2 + ",";
//usaremos un whilemienras no se cumplan las condiciones dentro del parentesis
//se estara ejecutando lo que el codigo que esta dentro de las llaves {}
while (num1 <= limite&& num2 <= limite)
            {

                num1 += num2; // num1=num1+num2;//
                num2 += num1; //num2=num2+num1;//
if(num1<=limite)
Serie += num1  +",";
if(num2<=limite)
Serie +=  num2 + ",";

    }
}
    }
}

Ahora la instanciación en el objeto

namespaceproyecto_fibonacci
{
publicpartialclassForm1 : Form
    {
public Form1()
        {
InitializeComponent();
        }

privatevoidbot_Generar_Click(object sender, EventArgs e)
        {
Class1_fibonacciObj_fibo = newClass1_fibonacci();
Obj_fibo.Set_limite(Int32.Parse(txt_res2.Text));
Obj_fibo.Generar_Serie();
txt_resultado.Text = Obj_fibo.Get_Serie();
        }



(HUPQ) Simule un juego de Pimball

Esto de los juegos es algo diferente, pero nada de que asustarse, en este programa lo que más vamos a usar son las coordenadas. En esta ocacion no vamos a usar la clase, pero aun así hay que dedicar algo tiempo para crear juegos. Vamos necesitar: dos label para hacer que la bolita se mueva, 8 pictureBox que usaremos como ladrillos, un pictureBox para la bola, y otro Picturebox Para La Barra que se la que tiene el color azul.

El juego consiste en hacer que la bola se pueda mover en  todas direcciones y romper los ladrillos, pero utilizando la barra para evitar que toque el suelo.

Formulario












Código del objeto:

namespace Movimiento
{
publicpartialclassForm1 : Form
    {
public Form1()
        {
InitializeComponent();
        }       
privatevoid timer1_Tick(object sender, EventArgs e)
{
//aqui vamos a hacer la bolita se mueva por medio de 2 label
//si el primer label muestra "alante" la bola se movera hacia delante
//hasta que toque el final del extremo, y cambie a atras. si dice atras se movera
//hacia atras hasta tocar ese extremo.

//si el segundo label dice abajo la bola se movera hacia abajo hasta llegar al //extremo
//y cambiar hacia arriba, si dice arriba la bola cambia en direccion arriba
//y asi sucesivamente continuara moviendose.

//codigo de bolita
if (label1.Text == "Alante")
{
picBola.Left += 10;
if (picBola.Left + picBola.Width>= Width)
                {
                    label1.Text = "Atras";
                }
            }
if (label1.Text == "Atras")
            {
picBola.Left -= 10;
if (picBola.Left<= 0)
                {
                    label1.Text = "Alante";
                }
            }
if (label2.Text == "Abajo")
            {
picBola.Top += 06;
if (picBola.Top + (picBola.Height)*1.5 >= Height )
                {
                    label2.Text = "Arriba";
                }
            }
if (label2.Text == "Arriba")
            {
picBola.Top -= 06;
if (picBola.Top<= 0)
                {
                    label2.Text = "Abajo";
}               
            }
//aqui hacemos que la bola pueda chocar con la barra
//esta condicion expresa lo siguiente: si la barra se igual o menor
//a la parte izquierda de la bola y la parte superior de la bola mas
//la posicion vertical de la vertical de la barra son es mayor o igual
//a la parte superior de la barra y la parte izquierda de la bola mas
//la posicion horizontal de la bola es menor o igual a la parte izquierda
//de la barra mas la osicion horizontal de la barra, el segundo label
//mostrara "arriba" y con ello la bola regresara hacia arriba

//Solo un poquito Complicado, analizar es el truco.
//ahora observa el codigo,son solo dos lineasWaooo.

//codigo de barrita contra bolita
if (pic_Barra.Left<= picBola.Left&&picBola.Top + pic_Barra.Height>= pic_Barra.Top&&picBola.Left + picBola.Width<= pic_Barra.Left + pic_Barra.Width)
label2.Text = "Arriba";

//este codigo es para perder la partida
//si la bola toca el borde de la parte inferior del formulario
//en este caso "437" detiene el timer y 
//muestra un letrero indicando que perdiste
//vuelve a encender el taimer y la bola se va hacia arriba.
while (picBola.Location.Y == 437)
            {
picBola.Top += 10;
timer1.Enabled = false;
MessageBox.Show("te Quemaste, has perdido el juego");
                timer1.Enabled = true;
            }
        }
//este codigoespara poder mover la barra, para esto
//utilizamos el evento "keydawm" del pictureBox de la barra
//los numeros 39 y 37 son los numeros que representan las teclas
//del teclado de derecha"39" Y izquierda"37".

//donde aparece el numero"10" es la belocidad a la que se va a mover
//la barra cuando presiones las teclas.

//donde aparece el 5 es la minimacordenada a la que la barra va a ser
//capaz de moverce cuando dirija a la izquierda.
//y el "415" es la maximacordenada a la que va ha ser capaz de moverse
//cuando se dirija a la derecha.

//codigoparacontrolar al barra
privatevoid Form1_KeyDown(object sender, KeyEventArgs e)
        {
if (e.KeyValue == 39)
pic_Barra.Left += 10;

if (e.KeyValue == 37)
            {
pic_Barra.Left -= 10;
            }
if (pic_Barra.Location.X == 5)
            {
pic_Barra.Left += 10;
            }                     
if (pic_Barra.Location.X == 415)
{
pic_Barra.Left -= 10;
            }
        }       
    }
    }

Nota: este programa no garantiza que funcionara si copias el código, debido a que es casi imposible que mi programa y el tuyo tengan las mismas coordenadas ni el mismo tamaño. Y como vez las coordenadas y los gráficos son la base de los juegos mi consejo es que estudies y analices el programa para que encuentres la lógica.

Espero te haya servido…
Para sugerencias,preguntas o comentarios escríbeme a:marinocsharp@hotmail.com

1 comentario: