Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - ~~

#491
.NET (C#, VB.NET, ASP) / Ejercicios básicos C#
25 Octubre 2007, 17:39 PM
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:
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  :P)
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  :P

Saludos y animaros a subir vuestros programas básicos ;)
#492
Mirate esto:
http://foro.elhacker.net/index.php/topic,135213.0.html

Ais.. q joven era y q mal programaba xDDDDD pero weno como ejemplo te sirve ;)
#493
CitarBueno Mad, para gustos colores....la verdad es que con C se pueden hacer cosas como estas, y con ASM igual....Yo programo en C las menores veces posibles, si puedo lo hago o con ASM o en C#...   si no me queda mas remedio pues lo hago con C....por cierto, si quieres un buen lenguaje mirate el C#, segurisimo que te gusta,s ino pideselo a E0N 

Si, si, lo apollo C# es wenisimo y muy facil, te recomiendo q lo mires, aunke ya puesto podrias aprender C++ q es mas potente xDD (si aprendes C++ C# es cuestion de ponerse una semana, lo digo por experiencia...) pero bueno, tu haz lo q kieras... Yo solo te digo q C# da 1000 vueltas a VB6 en todo, hasta en la facilidad para crear interfaces  :P

Ya volviendo al tema principal: me mirare todo el hilo, ya q llevo algun tiempo off y miraré a ver si puedo hecharte una mano con las cosas en C ;)
#494
Muy bonito ;) te lo pongo en la biblioteca de sources  :P
#495
CitarNops, el ZA se puede cerrar

Si????? y como???  :huh: :huh: :huh: :huh:
#496
.NET (C#, VB.NET, ASP) / Re: APP en VB2005 ayuda
15 Octubre 2007, 13:43 PM
Vb net no se, pero C# si, y en c# se usa Application, prueva a ver ;)
#497
Cuanto tiempo Mad, mira te cuento un poco, el kav en VB olvidate ya mismo de detenerlo, por q? por q el kav tiene un driver, es decir una aplicacion q corre a ring0 y q protege tanto a los archivos como a su proceso de cualkier modificacion.. la solucion para pararlo seria haciendo tu otro driver, pero en VB no se puede, se necesita saber C y asm ademas es un trabajo muy muy costoso.. (te va a pasar lo mismo con el zone alarm)

Para el resto te recomiendo dos cosas (q no te aseguro q funcionen con todos):

1 - Intenta crehsear su proceso, es decir escribir en su espacio de memoria para q peten

2 - Leete esto, q es muy weno: (no consigo subirlo a rapidshare ni a megaupload, por lo pesimo de mi conexión...  :-() es un pdf q se llama Win32/Bypass: Anulando la detección de ficheros
Written by FraMe ( frame at kernelpanik.org )
A ver si lo encuentras por google, yo de todas formas seguiré intentando subirtelo ;)


Ya tiene su tiempecillo, pero con win xp funcionará casi todo, en vista espero q lo hallan arreglado (no e provado) pero vamos el stub tampoco iba a funcionar en vista...

Salu3
#498
Programación Visual Basic / Re: bUSCAR ARCHIVOS
14 Octubre 2007, 18:55 PM
No hace falta ningun OCX, con la api SearchTreeForFile lo tienes arreglado, mirate la info del api guide ;)
#500
Puedes hacer varias cosas. Si esa cadena siempre esta en la misma linea (la nº 10) haces un split a todo el text box partiendo por el caracter de retorno de carro, es decir vbnewline y luego con mid obtener la parte q te interesa (si no lo logras te hago un ejemplo)

O si no esta siempre en la misma linea buscar la cadena "Locatios: " con instr y devolver la url (lo mismo si no lo logras dimelo y te paso un ejemplo)

Salu3