Mistähän johtuu, että tämä tulostaa epätasaisen värin. Ja ennen kaikkea miten sen saisi korjattua tasaisemmaksi?
<?php $new=imagecreate(400,300); $taustavari=imagecolorallocate($new,255,255,255); $varjo=imagecolorallocate($new,105,100,0); function even_num($number){ $num=$number/2; $point="."; $data=$number; $search=strpos($num,$point); if(!$search){ return $data; } } function varjo($new,$varjo){ $a=150; $b=41; $c=250; $d=89; $i=0; while($i<10){ imageline($new,$a,$b,$c,$d,$varjo); $a--; if(even_num($i)){ $b++; } $d++; $i++; } } varjo($new,$varjo); imagejpeg($new,"new.jpg"); imagedestroy($new); echo '<img src="new.jpg">'; ?>
ps. Skriptin tulos löytyy tuolta: http://80.222.140.20/new.jpg silloin kun palvelin sattuu olemaan auki.
function even_num($number){ $num=$number/2; $point="."; $data=$number; $search=strpos($num,$point); if(!$search){ return $data; } }
kaikkihan pitää tehdä vaikeimman kautta :) return $number % 2; vois olla vähän parempi.
Sisennykset vois myös laittaa kuntoon.
Niko kirjoitti:
kaikkihan pitää tehdä vaikeimman kautta :) return $number % 2; vois olla vähän parempi.
Sisennykset vois myös laittaa kuntoon.
Ideasi on muuten hyvä, mutta ei toimi tässä tapuksessa niin kuin pitäisi. Tuon funktion tarkoitus on lisätä $b muuttujan arvoa joka toisessa silmukassa. Muoto return $number % 2 ei lisää muuttujan arvoa ollenkaan tai jos laittaa siihen !-ehdon, lisää arvoa joka silmukassa.
Tällä hetkellä parhaan varjon saan pelkästään tällä tavalla testauksen tuloksena:
function varjo($new,$varjo){ $a=150; $b=41; $c=250; $d=89; $i=0; while($i<18){ imageline($new,$a,$b,$c,$d,$varjo); if($i >0 && $i <8) $a--; if($i==2 or $i==6 or $i==10 or $i==14 or $i==15){ $b++; } if($i >0 && $i <10){ $d++; } $i++; } }
Tähän en laittele mitään kuvan linkkiä, koska suljen koneen ja lähden tästä nukkumishommiin :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.