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.