Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: taulukon kiertäminen

sooda [04.12.2003 18:34:19]

#

Yritin tehdä tollaista juttua tetrikseen millä saisi rotaatoitua palikoita mutta jostain syystä tämä ei toimi. Koodi:

Sub Kierrä()

    Dim Uus(1 To 4, 1 To 4) As Boolean
    For kx = 1 To 4
        For ky = 1 To 4
            Uus(kx, ky) = p.Pist(ky, kx)
        Next
    Next
    For kx = 1 To 4
        For ky = 1 To 4
            p.Pist(kx, ky) = Uus(kx, ky)
        Next
    Next

End Sub

p.pist on julkinen 4*4 taulukko(palikka.piste lyhennettynä). jostain syystä tämä ei tee mitään? (koodi on todella tehotonta joten siihenkin saa antaa vinkkejä)

sqwiik [04.12.2003 19:05:55]

#

Pyhä yksinkertaisuus... Huomaatko edes itse, mitä koodissa tapahtuu? 1. silmukka: kopioit uus-talukkoon pist-taulkon sisällön (tehden transpoosin). Sitten... kopioit uus-taulukosta tiedot pist-taulukkoon (toinen transpoosi). Tietenkään mitään ei tapahdu (matematiikkaa lukevat tajunnevat mitä meinaan) :)
Seuraava koodi pyörittää palikkaa johonkin suuntaan:

Sub Kierrä()
Dim uus(1 To 4, 1 To 4) As Boolean, kx As Integer, ky As Integer
  For kx = 1 To 4
    For ky = 1 To 4
      uus(kx, ky) = p.Pist(kx, ky) 'uus identtinen pist:n kanssa
  Next ky, kx
  'Kopioidaan kiertäen. EMME tee transpoosia ts. peilausta
  'halkaisijan suhteen.
  For ky = 1 To 4
    For kx = 1 To 4
      p.Pist(kx, ky) = uus(5 - ky, kx)
  Next ky, kx
End Sub

sooda [04.12.2003 19:15:03]

#

lainaus:

Huomaatko edes itse, mitä koodissa tapahtuu?

En... :P
joojjoo... menin ihan sekaisin etten oikein tajunnut... vaikeaa ajatella tollaista rotaatiota päässä mutta kiitos! nyt toimii oikein!

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta