用php写一个游戏的技能: 当攻击者攻击目标时80%概率附加眩晕状态,持续3回合
时间: 2023-11-28 11:47:35 浏览: 129
以下是一个简单的PHP代码实现:
```php
<?php
class Skill {
// 定义技能属性
private $name; // 技能名称
private $probability; // 触发概率
private $duration; // 眩晕状态持续回合数
// 构造函数,初始化技能属性
public function __construct($name, $probability, $duration) {
$this->name = $name;
$this->probability = $probability;
$this->duration = $duration;
}
// 技能触发方法
public function trigger($attacker, $target) {
if (rand(1, 100) <= $this->probability) { // 判断是否触发技能
$target->setStun($this->duration); // 目标进入眩晕状态
echo "{$attacker->getName()}使用{$this->name}, 使{$target->getName()}进入眩晕状态,持续{$this->duration}回合!\n";
} else {
echo "{$attacker->getName()}使用{$this->name}, 但未触发技能!\n";
}
}
}
class Character {
// 定义角色属性
private $name; // 角色名称
private $stunDuration; // 眩晕状态持续回合数
// 构造函数,初始化角色属性
public function __construct($name) {
$this->name = $name;
$this->stunDuration = 0;
}
// 设置眩晕状态
public function setStun($duration) {
$this->stunDuration = $duration;
}
// 判断角色是否处于眩晕状态
public function isStunned() {
return $this->stunDuration > 0;
}
// 角色回合行动方法
public function action($target) {
if ($this->isStunned()) { // 如果处于眩晕状态,则无法行动
echo "{$this->name}处于眩晕状态,无法行动!\n";
$this->stunDuration--;
return;
}
$skill = new Skill("眩晕", 80, 3); // 创建技能
$skill->trigger($this, $target); // 触发技能
}
// 获取角色名称
public function getName() {
return $this->name;
}
}
// 创建角色实例
$attacker = new Character("攻击者");
$target = new Character("目标");
// 角色行动
$attacker->action($target);
$target->action($attacker);
```
以上代码中,我们定义了一个 `Skill` 类和一个 `Character` 类。`Skill` 类代表一个技能,包含技能的名称、触发概率和持续回合数等属性,以及触发技能的方法 `trigger`。`Character` 类代表一个角色,包含角色的名称、眩晕状态持续回合数等属性,以及角色的行动方法 `action`。
在 `action` 方法中,我们创建了一个名为“眩晕”的技能,并对攻击者和目标进行了操作。如果技能触发成功,目标将进入眩晕状态,否则技能无效。在角色回合行动时,我们会调用 `action` 方法来执行角色的行动。如果角色处于眩晕状态,则无法行动。
这样,我们就实现了一个简单的游戏技能,可以在攻击时有一定概率触发眩晕效果,让目标进入眩晕状态,持续数回合。
阅读全文