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 Subp.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ä)
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 Sublainaus:
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!
Aihe on jo aika vanha, joten et voi enää vastata siihen.