2015-10-14 32 views
-2

我試圖做一個程序,給出了一個oputput,如: (看就像盒子裏的「X」)如何使用for循環創建自定義排版?

******** 
**xxx*x* 
*x*xx*x* 
*xx**xx* 
*xx**xx* 
*x*xx*x* 
**xxxx** 
******** 

但總是在這種形狀堆疊:

******** 
*xxxxxx* 
*xxxxxx* 
*xxxxxx* 
*xxxxxx* 
*xxxxxx* 
*xxxxxx* 
******** 

與此代碼:

for($out=0; $out<8; $out++) { 
    for($in=0; $in<8; $in++) { 
     if($out==0 || $out==8-1) { 
      echo "*"; 
     } else { 
      if($in==0 || $in==8-1) { 
       echo "*"; 
      } else { 
       echo "x"; 
      } 
     } 
    } 

    echo "<br/>"; 
} 

你能告訴我這種情況嗎?

+0

請教什麼? .. – DTH

+0

如何使邏輯或代碼,使我想要的形狀:) @DTH – Schreiner

回答

0

不知道如果IM幫你做作業,現在:)

這裏等一個解決辦法:

for($out=0; $out<8; $out++) 
{ 
    for($in=0; $in<8; $in++) 
    { 
     if($out==0 || $out==8-1) 
     { 
      echo "*"; 
     } 
     else if($in == 0 || $in ==8-1) 
     { 
      echo "*"; 
     } 
     else 
     { 
      if($in == $out) 
      { 
       echo "*"; 
      } 
      else if($out+$in == 7) 
      { 
       echo "*"; 
      } 
      else 
      {    
       echo "x"; 
      } 
     } 
    } 

    echo "<br/>"; 
} 

的「絕招」是要找到一個模式,那意思就是代碼..我使用的模式很簡單。如果x和y位置相等,則可以繪製從左上到右下的線。如果x + y位置等於7,則可以繪製從右上角到左下角的直線。這就是我用於繪製X的圖案...

+0

謝謝DTH。這很酷。但我仍然需要左右顯示「*」:) – Schreiner

+0

@DavidRivaldy請參閱更新 – DTH

+0

@DavidRivaldy我處理兩個第一個if/else if子句中的邊。最後的其他人是在那裏處理中間的圖紙...希望它適合你:) – DTH