jarrett/rockpaperscissorsspocklizard

Based on a game created by Sam Kass and Karen Bryla and made popular by "Big Bang Theory"

1.1.4-stable 2017-09-07 17:43 UTC

This package is not auto-updated.

Last update: 2024-09-14 01:54:57 UTC


README

Build Status Code Coverage Scrutinizer Code Quality SensioLabsInsight

RockPaperScissorsSpockLizard Game (in PHP)

A PHP class implementation of Rock Paper Scissors Spock Lizard as created by Sam Kass and Karen Bryla and popularized by "Big Bang Theory."

Add as many players (or bots) as you want. Then play them all against each other at the same time!

Packagist can be found here: jarrett/rockpaperscissorsspocklizard

Getting Started

Install via composer:

composer install jarrett/rockpaperscissorsspocklizard

and require composer autoloader

require 'vendor/autoload.php';

Basic Example:

use Jarrett\RockPaperScissorsSpockLizard;
use Jarrett\RockPaperScissorsSpockLizard\Player;

// ...

$player = new Player();
$player->move('rock');

$bot = new Player();
$bot->isBot(true);

$game = new RockPaperScissorsSpockLizard();
$game->addPlayers($player, $bot)
     ->play();
     
$outcome = $game->getOutcomes();    

2 Player Example:

use Jarrett\RockPaperScissorsSpockLizard;
use Jarrett\RockPaperScissorsSpockLizard\Player;

// ...

$player1 = new Player();
$player1->move('rock');

$player2 = new Player();
$player2->move('scissors');

$game = new RockpaperScissorsSpockLizard();
$game->setRounds(3)
     ->addPlayers($player1, $player2);
     ->play();

$outcome = $this->getOutcomes()

5 Player Example:

use Jarrett\RockPaperScissorsSpockLizard;
use Jarrett\RockPaperScissorsSpockLizard\Player;

// ...

// human
$player1 = new Player();
$player1->move('rock');

// human
$player2 = new Player();
$player2->move('paper');

// and 3 bots
$player3 = new Player();
$player4 = new Player();
$player5 = new Player();

$game = new RockpaperScissorsSpockLizard();
$game->addPlayers($player1, $player2, $player3, $player4, $player5)
     ->play();

// returns an array containing all wins, ties, and losses
$outcomes = $this->getOutcomes()

... or just throw the player instantiation directly into the addPlayers() method

$game = new RockpaperScissorsSpockLizard();
$game->addPlayers($player1, $player2, (new Player), (new Player), (new Player))
         ->play();

Class Method Reference:

Player( string $player_name )

move( string $move)

Set your move

setName()

Set player name. Can also be passed via the constructor. Generic "Player 1, 2, 3" will be used if name is empty.

getName()

Get player name.

getMoveHistory()

Get player's move history

getLastMove()

Get player's last move

RockPaperScissorsSpockLizard()

play()

Play the round

restart()

Restarts the game

setRounds( string $number, bool $lock = false)

Set the number of rounds for this game. Default is 1 if not specified.

Parameters
$number integer
  • The maximum number of rounds before a winner is chosen
$lock bool
  • If true, don't allow the number of rounds to change for this game
  • If false (default), the maximum number of rounds can be changed during the game, even after a winner is determined.

getRounds()

Returns all round results.

getOutcome()

Returns last round outcome.

addPlayer()

Add player to the game.

addPlayers()

Add multiple players to the game.

getPlayers()

Return players for game.

getTotalPlayers()

Returns the number of players playing

getRoundWinner()

Returns the player who won the last round.

getOutcomes()

Returns the outcomes for all players.

getWinners()

Returns the player who won the game.