Nuevas NORMAS para el foro

Curso Hacker
Bienvenido(a), Visitante. Favor de ingresar o registrarse.
¿Perdiste tu email de activación? - Julio 27, 2008, 01:55:44
Boton Buscar
Inicio Ayuda Ingresar Registrarse
Visita: Articulos - Juegos Gratis - Da Foros

Comunidad Underground Hispana  |  Programacion  |  Programación  |  Carbide C/C#/C++  |  Tema: c# Problema con interfaz grafica Sudoku 0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: c# Problema con interfaz grafica Sudoku  (Leído 134 veces)
ECDundy
Habitual
*****
Desconectado Desconectado

Mensajes: 164


throw new exception(":)");

erick_cartman_ok
Ver Perfil WWW Email
« en: Noviembre 29, 2007, 12:46:58 »

hola a todos soy nuevo en programacion c# y tengo este problema.
La interfaz grafica de mi sudoku.
Debido a que deseo que cuando el usuario de clic en una casilla se marque de otro color .
Lo consegui hacer para una casilla, pero me parece absurdo tener que hacer lo mismo para cada una de las 81 casillas.
Si me pudieran ofrecer algunos consejos que pueda aplicar ya que construir un ciclo en este embrollo en el que me eh metido no es algo nada facil de calcular.

---------------Aquí la interfaz grafica pintada directamente en el form----------------

Código:
private void Sudoku_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
//propiedades
Graphics Table= this.CreateGraphics();
Pen line9x9= new Pen(Color.Maroon);
Pen line3x3= new Pen(Color.Blue);
int[] TableArr3x3=new int[3];
Font font = new Font("arial",15);
SolidBrush brush= new SolidBrush(Color.Chocolate);
int right=15,down=69,z=-8,j=35,numbersrows=0,numberscolumns=0;
int[] TableArr9x9=new int[9];
//grafico
for (int i=0;i<9;i++)
{
TableArr9x9[i]=right;
right+=35;
}
for (int k=0;k<9;k++)
{
numberscolumns+=1;numbersrows+=1;
e.Graphics.DrawString(System.Convert.ToString(numberscolumns),font,brush,-1,j+=35);
e.Graphics.DrawString(System.Convert.ToString(numbersrows),font,brush,z+=35,45);
for (int i=0;i<9;i++)
{
Table.DrawRectangle(line9x9, TableArr9x9[i]+.0F, down+.0F, 33.0F, 33.0F);
}
down+=35;
    }
right=13;
down=67;
for (int k=0;k<3;k++)
{
TableArr3x3[k]=right;
right+=105;
}
for (int k=0;k<3;k++)
{
for (int i=0;i<3;i++)
{
e.Graphics.DrawRectangle(line3x3,TableArr3x3[i]+.0F,down+.0F,106,106);
}
down+=105;
  }
if (flag)e.Graphics.FillRectangle(brush, X, Y, width, height);
 }
------------------------------Aqui la manera en que marco una casilla-------------------
Código:
bool flag=false;
int height=0,width=0,X=0,Y=0;private void Sudoku_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
int Heightstart=69,Heightend=104,Widthstart=15,Widthend=50;
if(e.X <=Widthend && e.X>=Widthstart  && e.Y <=Heightend && e.Y>=Heightstart)
{
height=Heightend-(35*2);
width=Widthend-16;
X=Widthstart;
Y=Heightstart;
flag = true;
}
else
{
flag = false;
}

this.Invalidate();

}
-------------------Gracias por leer mi post---------------------------------------------------
Código:
Así NIO?
Roll Eyes
« Última modificación: Noviembre 29, 2007, 11:31:12 por ECDundy » En línea


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion

Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion

<br="The cat with a glass eye and fire in the tail"
 href="http://www.programmersheaven.com/user/ECDundy/blog/"/>
Ni0
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1357


Ni0-inside the source code

Ni0@el-hacker.org
Ver Perfil WWW Email
« Respuesta #1 en: Noviembre 29, 2007, 08:42:01 »

porque no lo pones entre <code></code> para verlo mejor?? (per en vez de <> pones []) Grin

salu2!
En línea

Inside The Source Code




Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Linux Registred User #460377
Ni0
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1357


Ni0-inside the source code

Ni0@el-hacker.org
Ver Perfil WWW Email
« Respuesta #2 en: Noviembre 30, 2007, 09:18:04 »

si, a eso me referia con lo de code,

porque no agregas argumentos a la funcion, que sea la casilla que se apreto, pero tomalo como un ajedres, osea, 2 argumentos, por ejemplo, h y v, entonces si se preto en la primera casilla de arriba h = 1 y v = 1, si se apreto en la de abajo h = 1 v = 2, se entiende?? y de a cuerdo con esos valores marcas la casilla que necesitas, por ejemplo:
Código:
int hf = 0, vf = 0;
h--;
v--; /*asi se empieza desde el principio, sino cuando se inserte 1 para h y 1 para v, al multiplicar por 20 te va a dar que las coordenadas iniciales de la casilla son 20; 20 xD, al restarle uno va a empezar por 0; 0*/
h *= 20;
y *= 20;
/*ahi tenes las coordenadas iniciales de la casilla*/
hf = h + 20;
vf = h + 20;
/*y ahi las finales*/
/*...
y aca abajo pintas la casilla desde h; v, hasta hf; vf
...*/

ahora si queres saber en que casilla se apreto haces esto:
Código:
/*creo que e.X y e.Y es donde se hiso click con el mouse no?? es que no se C# xD, suponiendo que si el codigo seria...*/
int hi = 0, vi = 0;
while(e.X > hi)
    hi += 20;
while(e.y > vi)
    vi += 20;
hi /= 20;
vi /= 20;
y hi y vi van a ser la casilla en donde se hiso click

el codigo no lo probe, lo cree mientras escribia, asique no se si tiene errores.. aparte de que se C y NO C#, pero creo que lo que puse vale para los 2.

salu2! y espero haber ayudado
En línea

Inside The Source Code




Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Linux Registred User #460377
Páginas: [1] Ir Arriba Imprimir 
Comunidad Underground Hispana  |  Programacion  |  Programación  |  Carbide C/C#/C++  |  Tema: c# Problema con interfaz grafica Sudoku « anterior próximo »
Ir a:  


Ranking-Hits
Powered by SMF 1.1.5 | SMF © 2006-2007, Simple Machines LLC