chestersa / 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 是一个Field对象
然后你可以比较两个牌组,使用
YuGiOh::compareDecks($deck1, $deck2)
它返回一个包含输出和结果的字符串,如果$deck1比$deck2赢得比赛,则其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 对象,根据需要