Avatar billede jammerlab Nybegynder
25. september 2008 - 12:29 Der er 10 kommentarer og
1 løsning

Firkantet spilleplade

Hej derude... jeg skal havde lavet mig en spille plade...
Den skal være lidt ligsom matador...

Jeg tænkte mig lidt at den skulle laves med en table og så ellers bare derudaf alt efter hvor mange felter man vælger... jeg har prøvet mig frem med diverse while og if sætninger men jeg kan ikke nå frem til det resultat jeg gerne vil... nogen der kan hjælpe mig derude?
Avatar billede majbom Novice
25. september 2008 - 13:38 #1
det du vil er, at hvis du angiver 44 felter, skal den oprette en tabel, med 12 kolonner og 12 rækker? (12+12+10+10=44)
Avatar billede jammerlab Nybegynder
25. september 2008 - 13:46 #2
ehm... hvis jeg forstår dig korrekt så ja... altså ligsom en normal matador spille plade... så man kan markere de felter der går rundt om pladen og dem i midten så er uden border/farve for eksempel... så der kommer et "stort" hul i midten og felterne rundt uden om...
Avatar billede majbom Novice
25. september 2008 - 14:40 #3
måske dette kunne hjælpe lidt:

<?php
  $fields = 44;
  $fields_per_side = $fields/4;

  for($j=0;$j<=$fields_per_side;$j++){
      echo "<tr>";
      for($i=0;$i<=$fields_per_side;$i++){
        if($j>0 && $j<$fields_per_side){
            if($i==0 || $i==$fields_per_side){
              echo "<td>felt</td>";
            }else{
              echo "<td></td>";
            }
        }else{
            echo "<td>felt</td>";
        }
      }
      echo "</tr>";
  }
?>

?
Avatar billede jammerlab Nybegynder
25. september 2008 - 14:47 #4
Super! Det er spot on :) smid et svar tak
Avatar billede majbom Novice
25. september 2008 - 15:58 #5
svar...

og selv tak :)
Avatar billede jammerlab Nybegynder
26. september 2008 - 11:54 #6
splazz>

Er der nogen måde på vi kan ændre algyritmen? Jeg har et array som jeg fyrer nogle felter i og de bliver printet (med din kode) således;

gade 1                  gade 2                    gade 3
gade 4                                            gade 5
gade 6                                            gade 7
gade 8                  gade 9                    gade 10

den skulle jo gerne gøre det lidt anderledes da det er en spil plade og felterne skal komme rundt om pladen;

gade 1                  gade 2                    gade 3
gade 10                                            gade 4
gade 9                                            gade 5
gade 8                  gade 7                    gade 6
Avatar billede majbom Novice
26. september 2008 - 13:48 #7
den var værre :)

$fields = 44;
$fields_per_side = $fields/4;
$field_number = 0;
           
for($j=0;$j<=$fields_per_side;$j++){
  echo "<tr>";
  for($i=0;$i<=$fields_per_side;$i++){
      $field_number++;
      if($j>0 && $j<$fields_per_side){
        if($i==0){
            $field_number = $fields-$j+1;
        }else if($i==$fields_per_side-1){
            $field_number = $fields_per_side+$j;
        }
      }
      if($j==$fields_per_side){
        $field_number = (($fields_per_side*2)+$j+1)-$i;
      }
      if($j>0 && $j<$fields_per_side){
        if($i==0 || $i==$fields_per_side){
            echo "<td>felt $field_number</td>";
        }else{
            echo "<td></td>";
        }
      }else{
        echo "<td>felt $field_number</td>";
      }
  }
  echo "</tr>";
}
Avatar billede majbom Novice
26. september 2008 - 13:52 #8
du kan evt. skifte:

$fields_per_side = $fields/4;

ud med:

$fields_per_side = round($fields/4);
$fields = $fields_per_side*4;

så er det sikker på at det ikke går galt, hvis der angives en værdi der ikke kan divideres med 4 :)
Avatar billede jammerlab Nybegynder
26. september 2008 - 14:36 #9
Nu har dagen været lang... nu da de er et array start mine felter jo på "0" men koden du har skrevet for den til at hente array[1].. prøvede at sætte ++ i bunden men så fungere den heller ikke optimalt... har 20 felter pt...
Avatar billede majbom Novice
26. september 2008 - 18:40 #10
for($j=0;$j<=$fields_per_side;$j++){
  echo "<tr>";
  for($i=0;$i<=$fields_per_side;$i++){
      if($j>0 && $j<$fields_per_side){
        if($i==0){
            $field_number = $fields-$j;
        }else if($i==$fields_per_side-1){
            $field_number = $fields_per_side+$j-1;
        }
      }
      if($j==$fields_per_side){
        $field_number = (($fields_per_side*2)+$j)-$i;
      }
      if($j>0 && $j<$fields_per_side){
        if($i==0 || $i==$fields_per_side){
            echo "<td>felt $field_number</td>";
        }else{
            echo "<td></td>";
        }
      }else{
        echo "<td>felt $field_number</td>";
      }
      $field_number++;
  }
  echo "</tr>";
}

så.... har du mere?! :)
Avatar billede jammerlab Nybegynder
26. september 2008 - 19:20 #11
Hehe nej det er fint tak! :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester