Hei
Tein PHP-virityksen, joka tekee vaakasuunnassa olevia "baareja", eli eräänlaista musiikin visualisointia.
<?php echo "<table cellspacing=\"1\" cellpadding=\"0\">"; $varit = array("00FF00", "FFFF90", "FFFF78", "FFFF60", "FFFF48"); for($leveys = 0; $leveys < 20; $leveys++) { echo "<tr>"; for($korkeus = 0; $korkeus < rand(5, 25); $korkeus++) { echo "<td style=\"background-color: lime\" width=\"5\" height=\"5\"></td>"; } echo "</tr>"; } echo "</table>";
Ongelma on, että miten käännän tätä "rotation 90 degrees left"? Lisäksi se pitäisi saada siten, että alimmat ovat vihreänä, sitten on vähän kellertämpi, punertavampi jne... Eli, kuvaisi perjaatteessa äänenvoimakkuutta, vihreä on hiljainen ja punainen on kova. Onko helppo toteuttaa koodi, joka kertoisi minulle nollasta 30:een värit, jotka alkavat 00FF00 ja päättyvät FF0000:aan? Siten, että värit menevät tasaisesti vihreästä kohti punaista.
<?php function varia_elamaan(var $luku) { echo dechex($luku * 8.5); // 8.5 * 30 = 255, siis maksimiarvo echo dechex(255 - $luku * 8.5); echo "00"; } ?>
Toivottavasti menee tollain, en oo aikoihin koodannu mitään. Eli siis tuolle funktiolle annetaan arvo 0-30 ja sen pitäis ulostaa arvoa vastaava väri.
Muuten ihan ok, mutta var ei kuulu PHP:hen tuohon kohtaan. Entä miten käännän taulukon pystysuuntaan?
Et voi konkreettisesti kääntää HTML-taulukkoa, toivottavasti et tätä kysynytkään. Voit sen sijaan muuttaa silmukkaasi. Muuta ensin koodisi niin, että tallennat ensin taulukkoon ($taulukko[$x][$y]) totuusarvoja, jotka kuvaavat toivottua lopputulosta, ja tulostat vasta tämän jälkeen taulukon sisällön HTML:ksi. Sitten pitäisikin olla triviaalia vaihtaa jälkimmäisestä silmukasta x ja y eri päin.
Hei, kiitos avusta Metabolix ja moptim! :) Pähkäilin kauan sen kanssa, kun se oli väärin päin. Kun kävin pystysuoria rivejä, kävin for-silmukassa lukuja ylöspäin. Kun lähdin alaspäin, se meni oikein.
<?php function varit($luku) { return dechex($luku * 4.25) . dechex(255 - $luku * 4.25) . "00"; } $taulukko = array(); for($x = 0; $x < 40; $x++) { for($y = 0; $y < 60; $y++) { $bool = rand(0, 40); if($bool % 7 == 1) { $taulukko[$x][$y] = 1; for($z = 0; $z < $y; $z++) { $taulukko[$x][$z] = 1; } } else $taulukko[$x][$y] = 0; } } echo "<table cellspacing=\"0\">"; for($a = 58; $a > 0; $a--) { echo "<tr>"; for($b = 0; $b < 40; $b++) { if($taulukko[$b][$a] == 1) echo "<td style=\"background-color: #" . varit(($a > 40) ? $a - 2 : $a) . "\" width=\"5\" height=\"5\"></td>"; else echo "<td style=\"background-color: black\" width=\"5\" height=\"5\"></td>"; } echo "</tr>"; } echo "</table>";
Jos joku haluaa leikkiä :) Millä kielellä se olisi järkevä kääntää exeksi? C++ & SDL? En ole käsittänyt SDL:ää niin hyvin, että voisin tehdä tuon itse, mutta jos jollain on tylsää, niin voisi vaikka vilkaista. :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.