當前位置: 首頁>>代碼示例>>PHP>>正文


PHP Shape::isHit方法代碼示例

本文整理匯總了PHP中Shape::isHit方法的典型用法代碼示例。如果您正苦於以下問題:PHP Shape::isHit方法的具體用法?PHP Shape::isHit怎麽用?PHP Shape::isHit使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在Shape的用法示例。


在下文中一共展示了Shape::isHit方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。

示例1: isHit

 /**
  * @param CannonBall $cannonBall
  * @param Point $previousPoint
  * @return bool
  */
 public function isHit($cannonBall, $previousPoint)
 {
     //$cannonBall->pixels = array_values($cannonBall->pixels);
     $total = count($cannonBall->pixels);
     for ($index = 0; $index < $total; $index++) {
         //if(!isset($cannonBall->pixels[]))
         $pixel = $cannonBall->pixels[$index];
         $pixelPosition = new Point($cannonBall->position->x + $pixel->x, $cannonBall->position->y + $pixel->y);
         $hit = $this->body->isHit($pixelPosition);
         if ($hit !== false) {
             $pixelLevels = $this->bodyHeight <= $this->bodyWidth ? $this->bodyHeight : $this->bodyWidth;
             $currentPixelLevel = 0;
             $validHit = false;
             while (!$validHit && $currentPixelLevel <= $pixelLevels) {
                 $body_a_x = $this->body->a->x + $currentPixelLevel;
                 $body_b_y = $this->body->b->y + $currentPixelLevel;
                 $body_c_x = $this->body->c->x - $currentPixelLevel;
                 if ($hit->x >= $previousPoint->x) {
                     $x = $body_a_x <= $previousPoint->x ? $previousPoint->x : $body_a_x;
                     $y = $body_b_y <= $previousPoint->y ? $previousPoint->y : $body_b_y;
                     $x = $hit->x - ($hit->x - $x);
                     $y = $hit->y - ($hit->y - $y);
                 } else {
                     $x = $body_c_x >= $previousPoint->x ? $previousPoint->x : $body_c_x;
                     $y = $body_b_y <= $previousPoint->y ? $previousPoint->y : $body_b_y;
                     $x = $hit->x - ($hit->x - $x);
                     $y = $hit->y - ($hit->y - $y);
                 }
                 $x = (int) round($x);
                 $y = (int) round($y);
                 $validHit = true;
                 if (isset($this->destroyedParts[$x])) {
                     foreach ($this->destroyedParts[$x] as $destroyedY) {
                         if ($destroyedY == $y) {
                             $currentPixelLevel++;
                             $validHit = false;
                             break;
                         }
                     }
                 }
                 if ($validHit) {
                     $this->destroyedParts[$x][] = $y;
                     array_splice($cannonBall->pixels, $index, 1);
                     $index--;
                     $total--;
                 }
             }
             if (count($cannonBall->pixels) <= 0) {
                 return true;
             }
         }
     }
     return false;
 }
開發者ID:nunomcb,項目名稱:yoda-hipchat,代碼行數:59,代碼來源:index.php


注:本文中的Shape::isHit方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。