c16r/ yugioh-pegasus-castle-sprint
Yu-Gi-Oh Pegasus' Castle Sprint 桌面游戏分解
README
一个简单的包,用于比较桌面游戏 Pegasus' Castle Sprint 中的不同卡组
创建卡组。
创建卡组使用 Chestersa\Yugioh\Deck
类,
初始化卡组
$deck = new Deck('Name');
这将创建一个新卡组,名称设置为构造函数中传入的任何内容,名称用于在输出两个卡组之间的结果时使用。
$deck->getName();
然后返回卡组的名称以在其他地方使用
添加卡牌
然后有两种方法可以添加新卡牌
$deck->addCard($name, $atk, $type);
$deck->addCard('Dark Magician', 2500, Chestersa\Yugioh\Field::$DARK);
其中 $name
是卡牌名称,$atk
是卡牌的攻击力,$type
是卡牌的场地类型,在 Chestersa\Yugioh\Field
类中有为这些定义的常量,稍后将解释,但可以使用任何值。
要批量添加卡牌,可以使用 addCards 方法
$deck->addCards([
['name' => 'Dark Magician', 'atk' => 2500, 'type' => Chestersa\Yugioh\Field::$DARK]
]);
name
、atk
和 type
的键都是必需的,并且应与 addCard 方法相同
处理胜利
每个卡组在初始化时都将有一个 wins 属性设置为 0,这将在它每次在与另一个卡组的对决中获胜时增加。
$deck->addWin()
将胜利增加一个
$deck->getWins()
将返回卡组的当前胜利数
创建场地。
这个游戏中的场地是由不同场地位置的代币组成的,如果场地类型匹配,可以加倍怪物的攻击力。
所有场地对象都使用 Chestersa\Yugioh\Field
,它具有游戏中的 5 种场地类型的常量
Field::$NIGHT
Field::$DAY
Field::$GRASS
Field::$FOREST
Field::$WATER
创建场地
$field = new Field();
添加到场地
$field->addToField($type, $amount);
其中 $type
是场地类型的键,$amount
是添加的数量,默认为 1
为了简化操作,有 5 个辅助函数,每个对应一个默认场地类型
$field->addNight($amount)
$field->addDay($amount)
$field->addGrass($amount)
$field->addForest($amount)
$field->addWater($amount)
检索场地
要检索场地设置,请使用
$field->getField();
比较卡组
设置
要比较卡组,请使用 Chestersa\Yugioh\YuGiOh
类
首先需要设置场地以初始化模拟
YuGiOh::setField($field)
其中 $field
是一个场地对象
然后您可以使用以下方式比较两个卡组
YuGiOh::compareDecks($deck1, $deck2)
这返回一个包含输出和如果 $deck1 获胜次数多于失败次数,其 Wins 属性将增加 1 的字符串。
一次比较多个
要比较多个角色卡组,请使用辅助函数
YuGiOh::runSimulation([$deck1, $deck2, $deck3, $deck4]);
它将运行数组中的每个卡组与所有其他卡组进行比较,并返回包含所有输出字符串的数组。
与对手比较多个
要同时比较多个角色卡组与对手卡组,请使用辅助函数
YuGiOh::runVsOpponents([$deck1, $deck2, $deck3, $deck4], $opponents);
它将运行数组中的每个卡组与对手进行比较,并返回包含输出字符串的数组。
YuGiOhFactory
有一个 Chestersa\Yugioh\YuGiOhFactory
类,它提供了一些帮助函数,用于获取所有卡组和基础桌面游戏中的场地设置
YuGiOhFactory::getYugisDeck();
YuGiOhFactory::getKaibasDeck();
YuGiOhFactory::getJoeysDeck();
YuGiOhFactory::getMaisDeck();
YuGiOhFactory::getOpponentsDeck();
YuGiOhFactory::getDefaultField();
所有函数都返回 Deck 或 Field 对象(根据适用情况)