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