c16r/yugioh-pegasus-castle-sprint

A breakdown of the Yu-Gi-Oh Pegasus' Castle Sprint board game

0.3 2023-08-18 23:44 UTC

This package is auto-updated.

Last update: 2024-05-19 01:42:47 UTC


README

A simple package to compare different decks of cards in the board game Pegasus' Castle Sprint

Creating a Deck.

Creating a Deck uses the Chestersa\Yugioh\Deck class,

Initialising a Deck

$deck = new Deck('Name');

This will create a new deck with the name set to whatever you've passed into the constructor, names are used when outputting results between 2 decks.

$deck->getName();

Will then return the deck's name to use elsewhere

Adding Cards

Then there are two ways to add a new card:

$deck->addCard($name, $atk, $type);
$deck->addCard('Dark Magician', 2500, Chestersa\Yugioh\Field::$DARK);

Where $name is the name of the card, $atk is the card's attack level, and $type is the card's field type, there are constants defined for this in the Chestersa\Yugioh\Field class which will be explained later, but you can use any values.

To bulk add cards you can use the addCards method:

$deck->addCards([
  ['name' => 'Dark Magician', 'atk' => 2500, 'type' => Chestersa\Yugioh\Field::$DARK]
]);

The keys for name, atk, and type are all required and should be the same as for the addCard method

Dealing with Wins

Each deck will have a wins property set to 0 when it is initialised, which will be increased whenever it wins a head-to-head contest with another

$deck->addWin()

will increase the wins by one

$deck->getWins()

will return the current wins for the deck

Creating a field.

The field in this game is created of tokens for different field locations, which can double a monster's attack if the field types match.

All field objects use the Chestersa\Yugioh\Field which has constants for the 5 field types used in the game

Field::$NIGHT
Field::$DAY
Field::$GRASS
Field::$FOREST
Field::$WATER

Creating a field

$field = new Field();

Adding to Fields

$field->addToField($type, $amount);

Where $type is the key of the field type and $amount is how many to add, defaults to 1

To make things easier there are 5 helpers functions, one for each default field type:

$field->addNight($amount)
$field->addDay($amount)
$field->addGrass($amount)
$field->addForest($amount)
$field->addWater($amount)

Retrieving a Field

To retrieve the field setup use:

$field->getField();

Comparing Decks

Setup

To compare the decks, use the Chestersa\Yugioh\YuGiOh class

To initialise a simulation first of all you need to set the Field:

YuGiOh::setField($field)

where $field is a Field object

Then you can compare 2 deck using:

YuGiOh::compareDecks($deck1, $deck2)

Which returns a string with the outputs and if $deck1 wins more than it loses, its Wins property will be incremented by 1.

Comparing multiple at a time

To compare multiple character decks use the helper:

YuGiOh::runSimulation([$deck1, $deck2, $deck3, $deck4]);

Which will run every deck in the array against all the others and return an array with all of the output strings.

Comparing multiple to the opponents

To compare multiple character decks to the opponent deck at the same time use the helper:

YuGiOh::runVsOpponents([$deck1, $deck2, $deck3, $deck4], $opponents);

Which will run every deck in the array against the opponents and return an array of the output strings.

The YuGiOhFactory

There is a Chestersa\Yugioh\YuGiOhFactory class with helpers to get all the decks and field setup as in the base board game:

YuGiOhFactory::getYugisDeck();
YuGiOhFactory::getKaibasDeck();
YuGiOhFactory::getJoeysDeck();
YuGiOhFactory::getMaisDeck();
YuGiOhFactory::getOpponentsDeck();
YuGiOhFactory::getDefaultField();

All return Deck or Field objects as appropriate