before_action("check_form", array("turn"), "turn"); switch ($_GET["action"]) { case "index": break; case "new": break; case "create": define("game", create_game($_POST["identity"])); define("turn", -1); foreach ($_POST["cards_suspect"] as $suspect => $cards) { create_player($suspect, $cards); } foreach ($_POST["known_cards"] as $card) { add_card_owner_status($card, $_POST["identity"], owned); } foreach (select_suspects() as $player) { if (select_cards_player($player["id"]) == 0) { foreach (select_cards() as $card) { add_card_owner_status($card["id"], $player["id"], not_owned); } } } $game["id"] = game; redirect_to_action("show"); break; case "turn": define("turn", create_turn($_POST)); set_if_not_set($_POST["witness"], get_current_player()); foreach (players_between(get_current_player(), $_POST["witness"]) as $player) { add_card_owner_status($_POST["weapon"], $player, not_owned); add_card_owner_status($_POST["room"], $player, not_owned);
<?php echo form_input(pretty_card(array("id" => get_current_player())) . " suspecte", "suspect", $form, array("options" => option_array(select_suspects(), "id", "name", "card"))); echo form_input("avec l'arme", "weapon", $form, array("options" => option_array(select_weapons(), "id", "name", "card"))); echo form_input("dans la pièce", "room", $form, array("options" => option_array(select_rooms(), "id", "name", "card"))); echo form_input("mais le témoin", "witness", $form, array("options" => array_true_merge(option_array(select_players(), "id", "name", "card"), array(0 => "")))); if (get_current_player() == my_player()) { echo form_input("réfute avec", "evidence", $form, array("options" => option_array(select_types(), "id", "name", "type"))); } else { echo "réfute"; } ?> . <br> <?php $turns = select_turns(); echo form_submit_button("Ok") . " " . link_to(path("skip", "game", game), "Suivant", array("class" => "btn btn-primary")) . " " . (!is_empty($turns) ? link_to(path("revert", "game", game), "Annuler le dernier coup", array("class" => "btn btn-primary")) : "");
function select_unknown_owners($card) { $known_players = array_of_ids(select_with_request_string("player AS id", "owned", array("game", "player", "card", "status"), array(), array("game" => game, "card" => $card))); return array_diff(array_of_ids(select_suspects()), $known_players); }
<?php $form["redirect_to_if_error"] = path("new", "game"); $form["destination_path"] = path("create", "game"); $form["html_form_path"] = VIEW_PATH . "game/new_form.php"; foreach (select_suspects() as $suspect) { $form["fields"]["cards_suspect_" . $suspect["id"]] = create_quantity_field("le nombre de cartes de " . pretty_card($suspect), dealed_card_number, array("optional" => 1)); } $form["fields"]["known_cards"] = create_id_field("mes cartes", "card", array("multiple" => 1, "optional" => 1)); $form["fields"]["identity"] = create_id_field("mon identité", "card"); function check_total_card_number($input) { $sum = 0; foreach ($input as $name => $value) { if (substr($name, 0, 14) == "cards_suspect_") { $sum += $value; } } if ($sum != dealed_card_number) { return "La somme des cartes ne fait pas " . dealed_card_number . "."; } return ""; } function check_known_cards_matches($input) { if ($input["cards_suspect_" . $input["identity"][0]] != count($input["known_cards"])) { return "Il faut indiquer " . $input["cards_suspect_" . $input["identity"][0]] . " cartes connues."; } return ""; } $form["validations"] = array("check_total_card_number", "check_known_cards_matches");