Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Heroyt/tournament-generator
A set of classes used to create multiple kinds of tournament brackets in PHP
https://github.com/Heroyt/tournament-generator
bracket custom-bracket games tournament tournament-brackets tournament-generator
Last synced: 3 months ago
JSON representation
A set of classes used to create multiple kinds of tournament brackets in PHP
- Host: GitHub
- URL: https://github.com/Heroyt/tournament-generator
- Owner: Heroyt
- License: mit
- Created: 2019-07-20T11:19:58.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-12-09T13:13:20.000Z (11 months ago)
- Last Synced: 2024-07-18T07:38:33.770Z (4 months ago)
- Topics: bracket, custom-bracket, games, tournament, tournament-brackets, tournament-generator
- Language: PHP
- Size: 2.56 MB
- Stars: 59
- Watchers: 6
- Forks: 14
- Open Issues: 6
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
Tournament Generator
A set of multiple classes to generate and work with all different kinds of tournament brackets or defining a custom bracket.
[Documentation](https://tournament-generator.readthedocs.io/en/latest/)
[API documentation](https://heroyt.github.io/tournament-generator/)
## Features
- Creating a custom tournament bracket with any number of categories, rounds, groups and teams
- Defining a multiple different conditions
- Easily generating Robin-Robin tournaments
- Generating a tournament using a predefined preset (single elimination, double elimination, 2R2G) with any number of teams
- Generating brackets with 2 to 4 teams in one game against each other
- Filling your bracket with results and getting teams table with scores## Installation
```shell
$ composer require heroyt/tournament-generator
```## Basic Usage
```php
require 'vendor/autoload.php';// Create a tournament
$tournament = new TournamentGenerator\Tournament('Tournament name');// Set tournament lengths - could be omitted
$tournament
->setPlay(7) // SET GAME TIME TO 7 MINUTES
->setGameWait(2) // SET TIME BETWEEN GAMES TO 2 MINUTES
->setRoundWait(0); // SET TIME BETWEEN ROUNDS TO 0 MINUTES// Create a round and a final round
$round = $tournament->round("First's round's name");
$final = $tournament->round("Final's round's name");// Create 2 groups for the first round
$group_1 = $round->group('Round 1')
->setInGame(2) // 2 TEAMS PLAYING AGAINST EACH OTHER
->setType(TournamentGenerator\Constants::ROUND_ROBIN); // ROBIN-ROBIN GROUP
$group_2 = $round->group('Round 2')
->setInGame(2) // 2 TEAMS PLAYING AGAINST EACH OTHER
->setType(TournamentGenerator\Constants::ROUND_ROBIN); // ROBIN-ROBIN GROUP// Create a final group
$final_group = $final->group('Finale')
->setInGame(2) // 2 TEAMS PLAYING AGAINST EACH OTHER
->setType(TournamentGenerator\Constants::ROUND_ROBIN); // ROBIN-ROBIN GROUP// CREATE 6 TEAMS
for ($i=1; $i <= 6; $i++) {
$tournament->team('Team '.$i);
}// SET PROGRESSIONS FROM GROUP 1 AND 2 TO FINAL GROUP
$group_1->progression($final_group, 0, 2); // PROGRESS 2 BEST WINNING TEAMS
$group_2->progression($final_group, 0, 2); // PROGRESS 2 BEST WINNING TEAMS// Generate games in the first round
$round->genGames();
// Simulate results (or you can fill it with your own real results)
$round->simulate();
// Progress best teams from first round to final round
$round->progress();
// Generate games in the final round
$final->genGames();
// Simulate results (or you can fill it with your own real results)
$final->simulate();// GET ALL TEAMS
$teams = $tournament->getTeams(true); // TRUE to get teams ordered by their results
```### Creating a tournament with a template
```php
require 'vendor/autoload.php';// Create a tournament
$tournament = new TournamentGenerator\Preset\SingleElimination('Tournament name');// Set tournament lengths - could be omitted
$tournament
->setPlay(7) // SET GAME TIME TO 7 MINUTES
->setGameWait(2) // SET TIME BETWEEN GAMES TO 2 MINUTES
->setRoundWait(0); // SET TIME BETWEEN ROUNDS TO 0 MINUTES// CREATE 6 TEAMS
for ($i=1; $i <= 6; $i++) {
$tournament->team('Team '.$i);
}// GENERATE ALL GAMES
$tournament->generate();// Simulate games
$tournament->genGamesSimulate(); // Simulate only games for example to only save bracket to DB
$tournament->genGamesSimulateReal(); // Simulate games with results like a real tournament// GET ALL TEAMS
$teams = $tournament->getTeams(true); // TRUE to get teams ordered by their results
```