Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Arrays bidimensionales

Estas en el tema de Arrays bidimensionales en el foro de Visual Basic clásico en Foros del Web. Buenos tardes, El caso es que ayer me aburria en el trabajo y me dio por comenzar alli a programar una cosa que ya estaba ...
  #1 (permalink)  
Antiguo 05/09/2009, 12:16
 
Fecha de Ingreso: mayo-2006
Mensajes: 5
Antigüedad: 18 años
Puntos: 0
Arrays bidimensionales

Buenos tardes,

El caso es que ayer me aburria en el trabajo y me dio por comenzar alli a programar una cosa que ya estaba haciendo en casa pero pensada de otro modo y al llegar a casa me he dado cuenta del error.

Se trata del juego de adivinar un conjunto de numeros que si aciertas la posicion de cada numero se pone en verde y si no aciertas la posicion pero ese numero se encuentra en el numero general se pone de color amarillo.

El caso es que para esto he creado un array bidimensional en el que esta compuesto por filas (6) y columnas (5).

Al programarlo sin darme cuenta me parece que me invente algo que creo que no se puede hacer xDDDD.

Cree un array de textbox (los 30) pero al programarlo cree un array bidimensional por lo que a la hora de codificarlo lo hice poniendo fila(i,j).text para obtener el valor de cada textbox pero claro, si he creado los textbox como un array unico esto no me sirve.

Me gustaria saber si hay algun modo de crear los textbox como bidimensionales (yo los creo a mano no mediante codificacion ^_^) para asi no cambiar el codigo que ya tengo^_^

Gracias y saludos,

P.D: Aviso por si por casualidad alguien responde, mi conocimiento sobre esto es bastante limitado ^_^
  #2 (permalink)  
Antiguo 05/09/2009, 12:44
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Arrays bidimensionales

No puedo ayudarte por que yo hice un sudoku y tuve que crear 9 arrays de 9 textbox.
Luego creé un array de 9x9 de numeros para trabajar internamente.
Es un cacao pero no sé otro modo.
Cargas el array al comienzo con los valores de los textbox, lo procesas y al final metes los valores resultantes a los textbox.

Si te parece factible y te salen dudas comentalo.

Saludos

Última edición por pkj; 05/09/2009 a las 12:50
  #3 (permalink)  
Antiguo 05/09/2009, 13:01
 
Fecha de Ingreso: mayo-2006
Mensajes: 5
Antigüedad: 18 años
Puntos: 0
Respuesta: Arrays bidimensionales

Sinceramente ... no entiendo muy bien lo que me has querido explicar xD.

Pongo un trozo del codigo para ver si se me puede entender mejor:

Aviso que hay alguna que otra cosa dejada que esta sin terminar (la ultima condicion por ejemplo que seria si en la fila estan todos los textbox de color verde se mostraria un mensaje) Me acabo de dar cuenta que para eso igual podria usar posactual xD. Deberia de mirarlo pero antes querria saber si podria continuar como lo tengo porque sino debere de cambiarlo todo .

'I' serian las filas de los textbox.
'J' las columnas.

Posactual: seria la linea en la que nos encontramos, cuando rellena una fila se comprueba y al terminar habilitamos la siguiente fila de textbox.

numero1, numero2, numero3, numero4, numero5 serian los numeros que hay que adivinar (labels ocultos)

For i = 0 To posactual
For j = 0 To 4

Select Case j

Case 0

If fila(i, j).Text = numero1 Then

fila(i, j).BackColor = vbGreen

End If

Case 1

If fila(i, j).Text = numero2 Then

fila(i, j).BackColor = vbGreen

End If

Case 2

If fila(i, j).Text = numero3 Then

fila(i, j).BackColor = vbGreen

End If

Case 3

If fila(i, j).Text = numero4 Then

fila(i, j).BackColor = vbGreen

End If

Case 4

If fila(i, j).Text = numero5 Then

fila(i, j).BackColor = vbGreen

End If

End Select

If (fila(i, j).Text = numero1 And fila(i, j).BackColor <> vbGreen) Or (fila(i, j).Text = numero2 And fila(i, j).BackColor <> vbGreen) Or (fila(i, j).Text = numero3 And fila(i, j).BackColor <> vbGreen) Or (fila(i, j).Text = numero4 And fila(i, j).BackColor <> vbGreen) Or (fila(i, j).Text = numero5 And fila(i, j).BackColor <> vbGreen) Or fila(i, j).BackColor = vbYellow Then

End If

Next j
Next i


Quiza em haya excedido tratando de explicarme y me haya liado mas pero bueno ^_^

Gracias por responder
  #4 (permalink)  
Antiguo 05/09/2009, 13:38
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Arrays bidimensionales

Yo me refiero a que crees un array bidimensional para trabajar:
Y los textbox en 6 arrays de 5 textbox
Fila0(0), Fila0(1), Fila0(2) .....
Fila1(0).....
Fila2(0).....

Al tener 6 arrays de texto, debes crear una sub que haga el trabajo y sea llamada desde los 6 eventos text_change de los textbox

Quedaría algo así:
A cada evento change de los 6 textbox le pones esta línea:

Compara (0,index)
o
Compara (1,index)
etc, dependiendo del textbox
y luego creas la sub algo asi:

Private Sub Comparar(byval NumeroDeTextBox as integer, byval Posicion as integer)

Static EstoyEnUso as boolean ' esto evita que cuando estas modificando aqui los textbox,
' se vuelva a entrar en esta sub, ya que se estaría llamando a sí misma sin necesidad

Dim Arrayb(5,4) as string

if estoyenuso=true then exit sub
estoyenuso=true

' Pasas los valores de los textbox al Array
For f=0 to 4
arrayb(0,f)=Fila0(f).text
arrayb(1,f)=Fila1(f).text
arrayb(2,f)=Fila2(f).text
arrayb(3,f)=Fila3(f).text
arrayb(4,f)=Fila4(f).text
arrayb(5,f)=Fila5(f).text
next f


y a partir de aquí trabajas con

Arrayb (i,j)

en lugar de

fila(i,j).text

Si necesitas saber que array de textbox ha sido el que ha llamado a la sub y que index tenía,
usa las variables que he incluido en la definición de la sub.
Si no, déjala en : Private Sub Comparar()


y al final pasas el array a los textbox

Fot f=0 to 5
Fila0(f).text=arrayb(0,f)
Fila1(f).text=arrayb(1,f)
Fila2(f).text=arrayb(2,f)
Fila3(f).text=arrayb(3,f)
Fila4(f).text=arrayb(4,f)
Fila5(f).text=arrayb(5,f)
next f

estoyenuso=false

End Sub

Aunque parezca que modificas todos los textbox y va a parpadear, no se nota.

Espero que te sirva. Me he enrrollado un poco pero tampoco quiero quitarte el placer de hacerlo escribiendo todo el código.

Si sigues con dudas pregunta que no cuesta dinero (claro, primero usa el coco un poco).

Los que saben se reirán de mis soluciones, y puede que meta la pata, pero, jeje, ellos ahora no están aquí

Saludos.
  #5 (permalink)  
Antiguo 05/09/2009, 13:53
 
Fecha de Ingreso: mayo-2006
Mensajes: 5
Antigüedad: 18 años
Puntos: 0
Respuesta: Arrays bidimensionales

Seguramente ya se hayan reido de mi pregunta pero bueno xD.

Ahora no estoy con el programilla por lo que seguramente que cuando me ponga con ello me entren las dudas pero bueno xD. Por ahora mas o menos creo que lo he entendido.

Gracias por responder
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:03.