Login   Register  
PHP Classes
elePHPant
Icontem

File: saboteur_game.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Arturs Sosins  >  Card deck  >  saboteur_game.php  >  Download  
File: saboteur_game.php
Role: Example script
Content type: text/plain
Description: Example for game Saboteur
Class: Card deck
Manipulate card decks
Author: By
Last change: credits changed
Date: 2011-04-25 12:46
Size: 5,845 bytes
 

Contents

Class file image Download
<?php
/*************************************************************
 * This script is developed by Arturs Sosins aka ar2rsawseen, http://webcodingeasy.com 
 * Fee free to distribute and modify code, but keep reference to its creator 
 *
 * Here is an example of dealing cards for game called "Saboteur"
 * Here will be defined only couple of all possible road cards 
 * to simplify this example. Cards will be dealt for 5 people
 * (it means there will be 2 saboteurs and 4 gold diggers) 
 * each player will have 6 cards. This game will need multiple 
 * card decks with different card types. So each class instance 
 * represents card deck. 
 * (This is just an example, real card quantity might differ)
 * More information about the game:
 * http://www.zmangames.com/cardgames/files/saboteur/Saboteur_US_Rules.pdf
 *
 * For more information, examples and online documentation visit:  
 * http://webcodingeasy.com/PHP-classes/Generate-shuffle-and-deal-custom-card-deck
 *************************************************************/
 //inlcude class
include("./card_deck.php");

//goal card with gold
$end_gold = array("gold");

//goal card with coal
$end_coal = array("coal");

$goal_deck = new card_deck();

//creating new card type, with gold property
$goal_deck->add_type("gold"$end_gold);

//creating card type, with coal property and 
//specifying that there will be 2 cards for each generated type
$goal_deck->add_type("coal"$end_coal2);

//shuffling goal cards
$goal_deck->shuffle();

//dealing goal cards
echo "<p>Goal cards: ";
$arr $goal_deck->deal(3);
foreach(
$arr as $key => $val)
{
    
$arr[$key] = implode(""$val);
}
echo 
implode(" "$arr);
echo 
"</p>";

//defining dwarf type cards
$dwarf_digger = array("gold digger");
$dwarf_saboteur = array("saboteur");

//creating card deck with dwarf cards
$dwarf_deck = new card_deck();

//creating new type with gold digger properties
// and specifying that there will be 4 cards for each generated type
$dwarf_deck->add_type("digger"$dwarf_digger4);

//creating new type with saboteur properties
// and specifying that there will be 2 cards for each generated type
$dwarf_deck->add_type("digger"$dwarf_saboteur2);

//shuffle dwarf cards
$dwarf_deck->shuffle();

//defining main playing cards
$deck = new  card_deck();

//define blocks
$block = array("pickaxe","lamp","wagon");
//addin block cards, 3 for each type
$deck->add_type("block"$block3);

//define unblocks same as block but only 2 cards
//we can use same block values, only define as new type and property
$deck->add_type("unblock"$block2);
//mixed type unblocks
$mixed = array("pickaxe/wagon""lamp/wagon""pickaxe/lamp");
//acreting new type with mixed unblock, 1 card each
$deck->add_type("unblock"$mixed);

//rock fall cards (3 of them)
$rock = array("rock fall");
$deck->add_type("rock fall"$rock3);

//map cards (6 of them)
$map = array("map");
$deck->add_type("map"$map6);

//roads that are 5 cards for each
$road = array("cross""vertical T""horizontal T""top-right corner""top-left corner");
$deck->add_type("road"$road5);

//roads that are 4 cards for each
$road = array("horizontal""vertical");
$deck->add_type("road"$road4);

//road blocks won't classify them for this example
$road = array("block");
$deck->add_type("road"$road9);

//shuffle cards
$deck->shuffle();

//deal each of 4 players 6 cards and one dwarf (role) card
echo "<p>Player 1: </p>";
echo 
"<p>Role: ";
$arr $dwarf_deck->deal(1);
foreach(
$arr as $key => $val)
{
    
$arr[$key] = implode("-"$val);
}
echo 
implode(" "$arr);
echo 
"</p>";
echo 
"<p>Cards: ";
$arr $deck->deal(6);

foreach(
$arr as $key => $val)
{
    
$arr[$key] = "(".key($val)." ".current($val).")";
}
echo 
implode(" "$arr);
echo 
"</p>";
echo 
"<p>&nbsp;</p>";

echo 
"<p>Player 2: ";
echo 
"<p>Role: ";
$arr $dwarf_deck->deal(1);
foreach(
$arr as $key => $val)
{
    
$arr[$key] = implode("-"$val);
}
echo 
implode(" "$arr);
echo 
"</p>";
echo 
"<p>Cards: ";
$arr $deck->deal(6);

foreach(
$arr as $key => $val)
{
    
$arr[$key] = "(".key($val)." ".current($val).")";
}
echo 
implode(" "$arr);
echo 
"</p>";
echo 
"<p>&nbsp;</p>";


echo 
"<p>Player 3: ";
echo 
"<p>Role: ";
$arr $dwarf_deck->deal(1);
foreach(
$arr as $key => $val)
{
    
$arr[$key] = implode("-"$val);
}
echo 
implode(" "$arr);
echo 
"</p>";
echo 
"<p>Cards: ";
$arr $deck->deal(6);

foreach(
$arr as $key => $val)
{
    
$arr[$key] = "(".key($val)." ".current($val).")";
}
echo 
implode(" "$arr);
echo 
"</p>";
echo 
"<p>&nbsp;</p>";


echo 
"<p>Player 4: ";
echo 
"<p>Role: ";
$arr $dwarf_deck->deal(1);
foreach(
$arr as $key => $val)
{
    
$arr[$key] = implode("-"$val);
}
echo 
implode(" "$arr);
echo 
"</p>";
echo 
"<p>Cards: ";
$arr $deck->deal(6);

foreach(
$arr as $key => $val)
{
    
$arr[$key] = "(".key($val)." ".current($val).")";
}
echo 
implode(" "$arr);
echo 
"</p>";
echo 
"<p>&nbsp;</p>";


echo 
"<p>Player 5: ";
echo 
"<p>Role: ";
$arr $dwarf_deck->deal(1);
foreach(
$arr as $key => $val)
{
    
$arr[$key] = implode("-"$val);
}
echo 
implode(" "$arr);
echo 
"</p>";
echo 
"<p>Cards: ";
$arr $deck->deal(6);

foreach(
$arr as $key => $val)
{
    
$arr[$key] = "(".key($val)." ".current($val).")";
}
echo 
implode(" "$arr);
echo 
"</p>";
echo 
"<p>&nbsp;</p>";


echo 
"<p>Player 6: ";
echo 
"<p>Role: ";
$arr $dwarf_deck->deal(1);
foreach(
$arr as $key => $val)
{
    
$arr[$key] = implode("-"$val);
}
echo 
implode(" "$arr);
echo 
"</p>";
echo 
"<p>Cards: ";
$arr $deck->deal(6);

foreach(
$arr as $key => $val)
{
    
$arr[$key] = "(".key($val)." ".current($val).")";
}
echo 
implode(" "$arr);
echo 
"</p>";
echo 
"<p>&nbsp;</p>";

?>