Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: imageline

pistemies [19.09.2006 20:39:12]

#

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.

Niko [19.09.2006 21:26:34]

#

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.

pistemies [19.09.2006 22:01:06]

#

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.

pistemies [19.09.2006 23:38:25]

#

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 :)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta