Ayuda con matrices y como recorrerlas

Iniciado por frekency, 10 Diciembre 2010, 22:28 PM

0 Miembros y 1 Visitante están viendo este tema.

frekency

Buenas estoy haciendo el juego de los marcianitos con graphics, primero quiero pintar los marcianitos con rectangulos y ya luego le añadiré las imágenes el problema esta en que no se muy bien como recorrer las matrices aqui porque me peta un poco.

Aver la definición de la matriz la tengo asi:

    Private marcianitos(4, 7) As Rectangle

La relleno de esta manera con doble for como siempre hice

    Dim ancho As Integer = 50, alto As Integer = 40
    Dim x As Integer = 30, y As Integer = 30

     For i = 0 To 7 Step 1
           For j = 0 To 7 Step 1
                marcianitos(i, j) = New Rectangle(x, y, ancho, alto)
                x = x + ancho + 5
            Next j
            y = y + alto + 5
            x = 30
      Next i

Y aquí pinto:

      For j = 0 To 4 Step 1
            For i = 0 To 7 Step 1
                g.FillRectangle(brochaRellenoGris, marcianitos(j, i))
            Next i

        Next j

Haciéndolo con un array me funciona bien pero con matrices no, otro problema que quiero arreglar es el indicarle mejor el tamaño en el for en vez de poner el indice máximo.

Saludos y Gracias.



ignorantev1.1

#1
es que en el ciclo 1 que corresponde a "i", el tope lo tienes en 7, y en la matriz el maximo es 3:

Código (vb) [Seleccionar]



   Private marcianitos(4, 7) As Rectangle   '<--- el tamaño de X es 4 que va de 0 a 3, 3 es el maximo

   Dim ancho As Integer = 50, alto As Integer = 40
   Dim x As Integer = 30, y As Integer = 30

    For i = 0 To 3  '<----- Tenias 7
          For j = 0 To 6 '<---- el tamaño en Y de la matriz es 7 que va de 0 a 6
               marcianitos(i, j) = New Rectangle(x, y, ancho, alto)
               x = x + ancho + 5
           Next j
           y = y + alto + 5
           x = 30
     Next i


No es necesario poner "step" cuando el incremento es "1"
...
No entiendo a que te refieres con el tamaño
te refieres a poner un indice maximo variable para el "for"?
Siendo asi tendrias que trabajar con matrices dinamicas:
Código (vb) [Seleccionar]

   Dim ancho As Integer = 50, alto As Integer = 40
   Dim x As Integer = 30, y As Integer = 30

  dim marcianitos() As Rectangle '<---- sin tamaño
   
   redim marcianitos(0 to lenX, 0 to lenY) as rectangle '<---Redimensionas la matriz para ajustarla al tamaño

    For i = 0 To lenX
          For j = 0 To lenY
               marcianitos(i, j) = New Rectangle(x, y, ancho, alto)
               x = x + ancho + 5
           Next j
           y = y + alto + 5
           x = 30
     Next i


frekency

Ostia pues llevo un ratazo mirandolo y era esa chorrada xD, lo del tamaño me refiero por ejemplo en un array lo haria asi

For i=0 to array.length

Pero en una matriz son dos dimensiones, quiero saber como especificar el tamaño de una dimension y el de otra



ignorantev1.1

utiliza
Ubound(MATRIZ, DIMENSION)
donde la matriz pues es... la matriz (gracias gracias no aplaudan) :¬¬
y la dimension pues es... la dimension, si se omite la dimension es "1" lo que equivale a X...etc etc

dimension  x  y  z
dim matriz(4, 5, 6) as integer