Pues eso, como e empezado hace pokito con C# he heho los típicos ejercicios básicos y los keria compartir con vosotros, y si kereis pues animaros y poner alguno vuestro
Mini-Calculadora en modo consola:
Mini-Calculadora en modo gráfico: (los nombres de los controles son faciles de deducir viendo el code )
Un ejemplo muy simple para resolver ecuaciones de seegundo grado (añadir 3 text box y un boton):
Exporador de carpetas: (añadir un text box "txtRuta" dos listas "lbcar" y "lbar" y un boton con nombre por defecto)
Operaciones simples con matrices:
Windows-pong, con dos botones y un radio buton simulo en clasico pong, muy cutre pero entretenido xDDD
Pues eso es todo, luego a lo mejor me animo y subo un par de ejemplillos simples usando XNA para hacer mini-juegos en 2D
Saludos y animaros a subir vuestros programas básicos
Mini-Calculadora en modo consola:
Código (csharp) [Seleccionar]
using System;
namespace Calculadora
{
class Program
{
public static void Main(string[] args)
{
float primero; // El primer número
float segundo; // El segundo número
string operacion; // La operación a realizar
Console.Title = "Mini-Calculadora"; // Damos formato a la consola
Console.BackgroundColor = ConsoleColor.White;
Console.ForegroundColor = ConsoleColor.Blue;
Console.Clear();
Console.SetCursorPosition (3,2); // Pedimos el primer número
Console.WriteLine ("Introduzca el primer número");
Console.SetCursorPosition (60,2);
primero = float.Parse(Console.ReadLine());
Console.SetCursorPosition (3,3); // Pedimos la operación
Console.WriteLine ("Introduzca la operación a realizar (+,-,*,/)");
Console.SetCursorPosition (59,3);
operacion = Console.ReadLine();
Console.SetCursorPosition (3,4); // Pedimos el segundo número
Console.WriteLine ("Introduzca el segundo número");
Console.SetCursorPosition (60,4);
segundo = float.Parse(Console.ReadLine());
Console.SetCursorPosition (57,5); // Mostramos la solucion...
Console.WriteLine ("__________");
Console.SetCursorPosition (3,6);
Console.WriteLine ("El resultado es");
Console.SetCursorPosition (60,6);
Console.WriteLine (calcular(primero,segundo,operacion));
Console.ReadKey ();
}
private static string calcular (float primero , float segundo, string operacion)
{
float temp;
switch (operacion) // Estructura con switch
{
case "+":
temp = primero + segundo;
return temp.ToString ();
case "-":
temp = primero - segundo;
return temp.ToString ();
case "*":
temp = primero * segundo;
return temp.ToString ();
case "/":
temp = primero / segundo;
return temp.ToString ();
}
return "-1";
}
}
}
Mini-Calculadora en modo gráfico: (los nombres de los controles son faciles de deducir viendo el code )
Código (csharp) [Seleccionar]
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.Text;
namespace Calculadora
{
/// <summary>
/// Description of MainForm.
/// </summary>
public partial class MainForm : Form
{
int oper ; // 1 -> + | 2 -> - | 3 -> * | 4 -> /
float primero;
public MainForm()
{
InitializeComponent();
}
void Numero7Click(object sender, EventArgs e)
{
txtnum.Text = txtnum.Text + 7;
}
void Numero8Click(object sender, EventArgs e)
{
txtnum.Text = txtnum.Text + 8;
}
void Numero9Click(object sender, EventArgs e)
{
txtnum.Text = txtnum.Text + 9;
}
void Numero4Click(object sender, EventArgs e)
{
txtnum.Text = txtnum.Text + 4;
}
void Numero5Click(object sender, EventArgs e)
{
txtnum.Text = txtnum.Text + 5;
}
void Numero6Click(object sender, EventArgs e)
{
txtnum.Text = txtnum.Text + 6;
}
void Numero1Click(object sender, EventArgs e)
{
txtnum.Text = txtnum.Text + 1;
}
void Numero2Click(object sender, EventArgs e)
{
txtnum.Text = txtnum.Text + 2;
}
void Numero3Click(object sender, EventArgs e)
{
txtnum.Text = txtnum.Text + 3;
}
void Numero0Click(object sender, EventArgs e)
{
txtnum.Text = txtnum.Text + 0;
}
void CClick(object sender, EventArgs e)
{
txtnum.Text = "";
}
void DivClick(object sender, EventArgs e)
{
oper = 4;
primero = float.Parse (txtnum.Text);
txtnum.Text = "";
}
void MulClick(object sender, EventArgs e)
{
oper = 3;
primero = float.Parse (txtnum.Text);
txtnum.Text = "";
}
void ResClick(object sender, EventArgs e)
{
oper = 2;
primero = float.Parse (txtnum.Text);
txtnum.Text = "";
}
void SumClick(object sender, EventArgs e)
{
oper = 1;
primero = float.Parse (txtnum.Text);
txtnum.Text = "";
}
void SolClick(object sender, EventArgs e)
{
float segundo = int.Parse (txtnum.Text);
float resultado;
switch (oper)
{
case 1:
resultado = primero + segundo;
txtnum.Text = resultado.ToString();
break;
case 2:
resultado = primero - segundo;
txtnum.Text = resultado.ToString();
break;
case 3:
resultado = primero * segundo;
txtnum.Text = resultado.ToString();
break;
case 4:
resultado = primero / segundo;
txtnum.Text = resultado.ToString();
break;
}
}
}
}
Un ejemplo muy simple para resolver ecuaciones de seegundo grado (añadir 3 text box y un boton):
Código (csharp) [Seleccionar]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Ecuaciones
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void resolver_Click(object sender, EventArgs e)
{
ecuacion miEcuacion = new ecuacion (double.Parse(a.Text), double.Parse(b.Text), double.Parse(c.Text));
}
}
}
Exporador de carpetas: (añadir un text box "txtRuta" dos listas "lbcar" y "lbar" y un boton con nombre por defecto)
Código (csharp) [Seleccionar]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace ExploradorCarpetas
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// El form load
private void Form1_Load(object sender, EventArgs e)
{
// Iniciamos el txtRuta
txtRuta.Text = Directory.GetDirectoryRoot(Directory.GetCurrentDirectory());
// Listamos las carpetas
carpetas(txtRuta.Text);
// Listamos los archivos
archivos(txtRuta.Text);
}
// El botón para explorar rutas
private void button1_Click(object sender, EventArgs e)
{
// Listamos las carpetas
carpetas(txtRuta.Text);
// Listamos los archivos
archivos(txtRuta.Text);
}
// Al hacer doble click sobre una ruta la colocamos en txtRuta
private void lbcar_DoubleClick(object sender, EventArgs e)
{
txtRuta.Text = lbcar.SelectedItem.ToString();
// Listamos las carpetas
carpetas(txtRuta.Text);
// Listamos los archivos
archivos(txtRuta.Text);
}
// Metodo que coloca las carpetas de la ruta indicada en el list
// box correspondiente
private void carpetas(string ruta)
{
lbcar.Items.Clear();
string[] carpeta = Directory.GetDirectories(ruta);
foreach(string car in carpeta)
lbcar.Items.Add (car);
}
// Metodo que coloca los archivos de la ruta indicada en el list
// box correspondiente
private void archivos(string ruta)
{
lbar.Items.Clear();
string[] archivo = Directory.GetFiles(ruta);
foreach (string ar in archivo)
lbar.Items.Add(ar);
}
}
}
Operaciones simples con matrices:
Código (csharp) [Seleccionar]
using System;
namespace Matrices
{
class Program
{
public static void Main(string[] args)
{
float [,] mat1; // Las matrices
float [,] mat2;
int f1, c1; // El número de filas y columnas de las matrices
int f2, c2;
//Llamamos al menu y recojemos la opción seleccionada
byte opcion;
do {
opcion = menu();
} while (opcion >= 5);
switch (opcion)
{
case 1: // SUMA
// Leemos el número de filas y columnas de las matrices 1 y 2
Console.WriteLine ("Introduzca el número de filas de las matrices 1 y 2");
f1 = int.Parse (Console.ReadLine());
Console.WriteLine ("Introduzca el número de columnas de las matrices 1 y 2");
c1 = int.Parse (Console.ReadLine());
// Pedimos los datos de filas y columnas
Console.WriteLine ("Introduzca los datos de la matriz 1 enumerandolos por filas:");
mat1 = leer(f1,c1);
Console.WriteLine ("Introduzca los datos de la matriz 2 enumerandolos por filas:");
mat2 = leer(f1,c1);
//Mostramos la suma de ambas matrices
suma(mat1,mat2);
break;
case 2: // RESTA
// Leemos el número de filas y columnas de las matrices 1 y 2
Console.WriteLine ("Introduzca el número de filas de las matrices 1 y 2");
f1 = int.Parse (Console.ReadLine());
Console.WriteLine ("Introduzca el número de columnas de las matrices 1 y 2");
c1 = int.Parse (Console.ReadLine());
// Pedimos los datos de filas y columnas
Console.WriteLine ("Introduzca los datos de la matriz 1 enumerandolos por filas:");
mat1 = leer(f1,c1);
Console.WriteLine ("Introduzca los datos de la matriz 2 enumerandolos por filas:");
mat2 = leer(f1,c1);
// Mostramos la resta de ambas matrices
resta (mat1, mat2);
break;
case 3: // PRODUCTO POR UN ESCALAR
// Leemos el número de filas y columnas de la matriz 1
Console.WriteLine ("Introduzca el número de filas de la matriz 1");
f1 = int.Parse (Console.ReadLine());
Console.WriteLine ("Introduzca el número de columnas de la matriz 1");
c1 = int.Parse (Console.ReadLine());
float escalar;
Console.WriteLine ("Introduzca el escalar por el que quiere multiplicar la matriz");
escalar = float.Parse(Console.ReadLine());
// Pedimos los datos de filas y columnas
Console.WriteLine ("Introduzca los datos de la matriz 1 enumerandolos por filas:");
mat1 = leer(f1,c1);
// Mostramos la solución
prodEscalar (mat1,escalar);
break;
}
Console.ReadKey();
}
// Función que muestra el menu de selección de operaciones
public static byte menu()
{
try {
byte opcion;
Console.SetCursorPosition(10,1);
Console.WriteLine("Menú:");
Console.SetCursorPosition(0,3);
Console.WriteLine("Elija la operación que quiere hacer:");
Console.WriteLine("1 - Suma de matrices");
Console.WriteLine("2 - Resta de matrices");
Console.WriteLine("3 - Producto por un escalar");
opcion = byte.Parse (Console.ReadLine());
if (opcion >=1 && opcion <=3) {
Console.Clear();
return opcion;
}
else {
Console.Clear();
return 5;
}
} catch { //En caso de error
Console.Clear();
return 5;
}
}
// Función que lee los datos de las matrices
public static float [,] leer(int filas, int columnas)
{
float [,] ret = new float [filas, columnas];
for (int fila = 0; fila < filas; fila++)
{
for (int columna = 0; columna < columnas; columna++)
{
ret[fila,columna] = float.Parse (Console.ReadLine());
}
}
return ret;
}
// La función suma
public static void suma (float [,] mat1, float [,] mat2)
{
Console.WriteLine ("La suma de sus dos matrices es (enumeradas por filas)");
for (int fila = 0; fila <= mat2.GetUpperBound(0); fila++)
{
for (int columna = 0; columna <= mat2.GetUpperBound(1); columna++)
{
float suma;
suma = mat1[fila,columna] + mat2[fila,columna];
Console.WriteLine (suma.ToString());
}
Console.WriteLine("");
}
}
// La función resta
public static void resta (float [,] mat1, float [,] mat2)
{
Console.WriteLine ("La resta de sus dos matrices es (enumeradas por filas)");
for (int fila = 0; fila <= mat2.GetUpperBound(0); fila++)
{
for (int columna = 0; columna <= mat2.GetUpperBound(1); columna++)
{
float resta;
resta = mat1[fila,columna] - mat2[fila,columna];
Console.WriteLine (resta.ToString());
}
Console.WriteLine("");
}
}
// Producto por un escalar
public static void prodEscalar (float [,] mat1, float escalar)
{
Console.WriteLine ("La multiplicación del escalar por su matriz es (enumerada por filas)");
for (int fila = 0; fila <= mat1.GetUpperBound(0); fila++)
{
for (int columna = 0; columna <= mat1.GetUpperBound(1); columna++)
{
float esc;
esc = mat1[fila,columna] * escalar;
Console.WriteLine (esc.ToString());
}
Console.WriteLine("");
}
}
}
}
Windows-pong, con dos botones y un radio buton simulo en clasico pong, muy cutre pero entretenido xDDD
Código (csharp) [Seleccionar]
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
namespace MiniJuegoPelota
{
/// <summary>
/// Description of MainForm.
/// </summary>
public partial class MainForm : Form
{
// 1 -> Derecha -1 -> Izquierda
// 1 -> Abajo -1 -> Arriba
private int dx = -1, dy = 1;
// Variables q contiene la ultima tecla pulsada por cierta pala
// para q el rebote se efectue en una o otra direcion
// 'u' (up) -> arriba 'd' (down) -> abajo
private char d1, d2;
public MainForm()
{
InitializeComponent();
}
void Timer1Tick(object sender, EventArgs e)
{
// Movemos la "pelota"
pelota.Left += dx;
pelota.Top += dy;
// Para el movimiento de la pelota
//dx = pelota.Location.X >= this.ClientSize.Width ? -1 : dx;
//dx = pelota.Location.X == 0 ? 1 : dx;
if (pelota.Location.X + 18 >= this.ClientSize.Width)
{
timer1.Enabled = false;
MessageBox.Show("Gana el jugador 1", "Felicidades");
}
if (pelota.Location.X == 0)
{
timer1.Enabled = false;
MessageBox.Show("Gana el jugador 2", "Felicidades");
}
// Si choca contra la parte inferior o el menú
dy = pelota.Location.Y + 50 >= this.ClientSize.Width ? -1 : dy;
dy = pelota.Location.Y == 25 ? 1 : dy;
// Si choca contra la pala1
if (pelota.Left == pala1.Left + pala1.Width)
{
if (pelota.Top > pala1.Top && pelota.Top < pala1.Top + pala1.Height)
{
dx = 1; // Hacemos que valla hacia la derecha
// y en funcion de la ultima tecla pulsada hacia arriba o abajo
dy = d1 == 'u' ? -1 : 1;
}
}
// Si choca contra la pala2
if (pelota.Left == pala2.Left - pala2.Width)
{
if (pelota.Top > pala2.Top && pelota.Top < pala2.Top + pala2.Height)
{
dx = -1; // Hacemos que valla hacia la izq
// y en funcion de la ultima tecla pulsada hacia arriba o abajo
dy = d2 == 'u' ? -1 : 1;
}
}
}
//Para mover la pala 1 A = arriba, Z = abajo
//Para mover la pala 2 K = arriba, M = abajo
void MainFormKeyPress(object sender, KeyPressEventArgs e)
{
switch (Char.ToUpper(e.KeyChar))
{
case 'A': //La pala1
pala1.Top -= 10;
if (pala1.Top < 25) pala1.Top = 25;
d1 = 'u';
break;
case 'Z':
pala1.Top += 10;
if (pala1.Top + pala1.Height >= this.ClientSize.Height) pala1.Top = this.ClientSize.Height - pala1.Height;
d1 = 'd';
break;
case 'K': //La pala2
pala2.Top -= 10;
if (pala2.Top < 25) pala2.Top = 25;
d2 = 'u';
break;
case 'M':
pala2.Top += 10;
if (pala2.Top + pala2.Height >= this.ClientSize.Height) pala2.Top = this.ClientSize.Height - pala2.Height;
d2 = 'd';
break;
}
}
// Las opciones del menú
void NuevoToolStripMenuItemClick(object sender, EventArgs e)
{
timer1.Enabled = true;
pelota.Left = 154;
pelota.Top = 134;
}
void ContrrolesToolStripMenuItemClick(object sender, EventArgs e)
{
MessageBox.Show ("Pulsar las teclas A y K para subir y las teclas Z y M para bajar las respectivas paletas de los jugadores 1 y 2", "Controles");
}
void SalirToolStripMenuItemClick(object sender, EventArgs e)
{
Application.Exit();
}
}
}
Pues eso es todo, luego a lo mejor me animo y subo un par de ejemplillos simples usando XNA para hacer mini-juegos en 2D
Saludos y animaros a subir vuestros programas básicos