function getTimelyTripSoldiers() { global $_DB; $stmt = $_DB->prepare("SELECT u.id, u.name, u.email, u.phone, u.notes, u.joindate, " . "s.id, s.adoptedtime, s.stopname, s.stopid, s.agency, s.given, s.nameonsign, s.abandoned " . "FROM users u LEFT JOIN adoptedstops s ON u.id = s.userid " . "ORDER BY u.joindate DESC"); $stmt->execute(); $results = $stmt->get_result(); $soldiers = array(); function findSoldier($soldiers, $userid) { $found = null; foreach ($soldiers as $s) { if ($s->id == $userid) { $found = $s; break; } } return $found; } while ($row = $results->fetch_array(MYSQLI_NUM)) { $userid = $row[0]; $soldier = findSoldier($soldiers, $userid); if (is_null($soldier)) { $soldier = new Soldier($userid, $row[1], $row[2], $row[3], $row[4], dateTimeFromDb($row[5])); $soldiers[] = $soldier; } if (is_null($row[6])) { continue; } $stop = new Stop($row[6], dateTimeFromDb($row[7]), $row[8], $row[9], $row[10], booleanFromDb($row[11]), $row[12], booleanFromDb($row[13])); $soldier->addStop($stop); } function cmpSoldierByUpdateDate($s1, $s2) { if ($s1->updatedate > $s2->updatedate) { return -1; } if ($s1->updatedate == $s2->updatedate) { return -1; } if ($s1->updatedate < $s2->updatedate) { return 1; } } usort($soldiers, "cmpSoldierByUpdateDate"); return $soldiers; }
/** * Make current controlled soldier attack an ennemy soldier * * @param int $soldierId Id of the soldier to attack */ public function attackSoldier($soldierId) { $this->_db->beginTransaction(); try { $attackAp = $this->_ruleset->get('soldier.apPerAttack'); $personna = $this->_db->fetchFirstRequest('getPersonnaSoldier', array(':id' => $this->_data['ID'])); if (empty($personna)) { $this->_messenger->add('error', $this->_lang->get('noPersonna')); } else { if (empty($personna['soldier_id'])) { $this->_messenger->add('error', $this->_lang->get('notASoldier')); } else { if ($personna['AP'] < $attackAp || $personna['soldier_ap'] < $attackAp) { $this->_messenger->add('error', sprintf($this->_lang->get('notEnoughAP'), $personna['AP'] . ' - ' . $personna['soldier_ap'], $attackAp)); } else { $target = new Soldier($soldierId, $this->_DI); if (empty($target->ID)) { $this->_messenger->add('error', $this->_lang->get('soldierNotFound')); } else { if ($personna['battlefield_id'] != $target->battlefield_id || abs($personna['X'] - $target->X) > 1 || abs($personna['Y'] - $target->Y) > 1) { $this->_messenger->add('error', $this->_lang->get('targetTooFar')); } else { if ($personna['hive_id'] == $target->hive_id) { $this->_messenger->add('error', $this->_lang->get('invalidTarget')); } else { $damages = $this->_ruleset->get('soldier.damages'); $killed = $target->receiveDamage($damages); $this->_db->executeRequest('soldierUseAP', array(':id' => $personna['soldier_id'], ':ap' => $attackAp)); $this->_db->executeRequest('personnaUseAP', array(':id' => $this->_data['ID'], ':ap' => $attackAp)); // Create log $this->_db->executeRequest('attackSoldierLog', array(':user_id' => $this->_data['user_id'], ':battlefield_id' => $personna['battlefield_id'], ':by_id' => $personna['soldier_id'], ':by_X' => $personna['X'], ':by_Y' => $personna['Y'], ':target_id' => $soldierId, ':target_X' => $target->X, ':target_Y' => $target->Y, ':damages' => $damages, ':kill' => $killed)); } } } } } } } catch (Exception $e) { $this->_db->rollBack(); throw $e; } $this->_db->commit(); }
public function testSoldier() { $soldier = new Soldier(new Rifle()); $soldier->killEnemy(); $this->assertInstanceOf('LSP\\AbstractGun', $soldier->getGun()); }
} } class Teacher extends Human { public $level; public function teach($subject) { echo $this->name, '的老师在讲授', $subject, '<br/><br/>'; } } class Soldier extends Human { public $junxian; function zhangang() { echo '这名战士名字为', $this->name, '在军XIAN为', $this->junxian, ',他/她站岗<br/><br/>'; } } $s1 = new Soldier(); $s1->name = '李四'; $s1->junxian = '中校'; $s1->zhangang(); // ////// $s2 = new Soldier(); $s2->name = '赵六'; $s2->eat('面包'); // //// $t = new Teacher(); $t->name = '张飞'; $t->teach('化学'); $t->say('同学们好,今天咱们开始学习化学这门课');