Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class Player {
- function __construct($number=null, $mafia = 'no', $can_kill = 'no', $blocker = 'no', $defence = 'no', $healer = 'no') {
- $this->number = $number;
- $this->mafia = $mafia;
- $this->can_kill = $can_kill;
- $this->blocker = $blocker;
- $this->defence = $defence;
- $this->healer = $healer;
- }
- public $alive = 'yes';
- public $healed = 'no';
- public $blocked = 'no';
- public $moved = 'no';
- public $kills = 0;
- public $executed_rate = 0;
- }
- ?>
- <html>
- <head>
- <title>Title of the document</title>
- <style type="text/css">
- .header td {font-weight: bold; padding-right: 5px; border-right: 1px solid gray;}
- .header td:last-child {border-right: none;}
- .checkbox input {margin-left: 1em;}
- .alt {background-color: lightgrey;}
- .player {padding-right: 5px;}
- </style>
- </head>
- <body>
- <?php
- // settings
- $execution = 'yes';
- $bad_executed = 20;
- $good_executed = 20;
- $number_of_players = 20;
- $players = array();
- ?>
- <form action="index.php" method="post">
- <table class="checkboxes">
- <tr class="header">
- <td>number</td> <td>mafia</td> <td>can kill</td> <td>blocker</td> <td>has defence</td> <td>healer</td>
- </tr>
- <?php
- for ($i = 0; $i < $number_of_players; $i++) {
- $players[$i] = new Player($i);
- if (!($i & 1)) {
- echo '<tr>';
- }
- else {
- echo '<tr class="alt">';
- }
- if ($i == 0){
- echo '<td class="player">Player ',$i,'</td>
- <td class="checkbox"><input class = "mafia" type="checkbox" name="players_input[',$i,'][]" value="yes" checked="yes"/></td>
- <td class="checkbox"><input class = "can_kill" type="checkbox" name="players_input[',$i,'][]" value="yes" checked="yes"/></td>
- <td class="checkbox"><input class = "blocker" type="checkbox" name="players_input[',$i,'][]" value="yes"/></td>
- <td class="checkbox"><input class = "defence" type="checkbox" name="players_input[',$i,'][]" value="yes" checked="yes"/></td>
- <td class="checkbox"><input class = "healer" type="checkbox" name="players_input[',$i,'][]" value="yes"/></td>' ;
- }
- elseif ($i < 3){
- echo '<td class="player">Player ',$i,'</td>
- <td class="checkbox"><input class = "mafia" type="checkbox" name="players_input[',$i,'][]" value="yes" checked="yes"/></td>
- <td class="checkbox"><input class = "can_kill" type="checkbox" name="players_input[',$i,'][]" value="yes" checked="yes"/></td>
- <td class="checkbox"><input class = "blocker" type="checkbox" name="players_input[',$i,'][]" value="yes"/></td>
- <td class="checkbox"><input class = "defence" type="checkbox" name="players_input[',$i,'][]" value="yes"/></td>
- <td class="checkbox"><input class = "healer" type="checkbox" name="players_input[',$i,'][]" value="yes"/></td>' ;
- }
- elseif ($i == 3){
- echo '<td class="player">Player ',$i,'</td>
- <td class="checkbox"><input class = "mafia" type="checkbox" name="players_input[',$i,'][]" value="yes" checked="yes"/></td>
- <td class="checkbox"><input class = "can_kill" type="checkbox" name="players_input[',$i,'][]" value="yes" checked="yes"/></td>
- <td class="checkbox"><input class = "blocker" type="checkbox" name="players_input[',$i,'][]" value="yes" checked="yes"/></td>
- <td class="checkbox"><input class = "defence" type="checkbox" name="players_input[',$i,'][]" value="yes"/></td>
- <td class="checkbox"><input class = "healer" type="checkbox" name="players_input[',$i,'][]" value="yes"/></td>' ;
- }
- elseif ($i == 4){
- echo '<td class="player">Player ',$i,'</td>
- <td class="checkbox"><input class = "mafia" type="checkbox" name="players_input[',$i,'][]" value="yes" checked="yes"/></td>
- <td class="checkbox"><input class = "can_kill" type="checkbox" name="players_input[',$i,'][]" value="yes" checked="yes"/></td>
- <td class="checkbox"><input class = "blocker" type="checkbox" name="players_input[',$i,'][]" value="yes"/></td>
- <td class="checkbox"><input class = "defence" type="checkbox" name="players_input[',$i,'][]" value="yes"/></td>
- <td class="checkbox"><input class = "healer" type="checkbox" name="players_input[',$i,'][]" value="yes" checked="yes"/></td>' ;
- }
- elseif ($i == 5 || $i == 6){
- echo '<td class="player">Player ',$i,'</td>
- <td class="checkbox"><input class = "mafia" type="checkbox" name="players_input[',$i,'][]" value="yes"/></td>
- <td class="checkbox"><input class = "can_kill" type="checkbox" name="players_input[',$i,'][]" value="yes" checked="yes"/></td>
- <td class="checkbox"><input class = "blocker" type="checkbox" name="players_input[',$i,'][]" value="yes"/></td>
- <td class="checkbox"><input class = "defence" type="checkbox" name="players_input[',$i,'][]" value="yes"/></td>
- <td class="checkbox"><input class = "healer" type="checkbox" name="players_input[',$i,'][]" value="yes"/></td>' ;
- }
- elseif ($i == 7){
- echo '<td class="player">Player ',$i,'</td>
- <td class="checkbox"><input class = "mafia" type="checkbox" name="players_input[',$i,'][]" value="yes"/></td>
- <td class="checkbox"><input class = "can_kill" type="checkbox" name="players_input[',$i,'][]" value="yes"/></td>
- <td class="checkbox"><input class = "blocker" type="checkbox" name="players_input[',$i,'][]" value="yes" checked="yes"/></td>
- <td class="checkbox"><input class = "defence" type="checkbox" name="players_input[',$i,'][]" value="yes"/></td>
- <td class="checkbox"><input class = "healer" type="checkbox" name="players_input[',$i,'][]" value="yes"/></td>' ;
- }
- elseif ($i == 8){
- echo '<td class="player">Player ',$i,'</td>
- <td class="checkbox"><input class = "mafia" type="checkbox" name="players_input[',$i,'][]" value="yes"/></td>
- <td class="checkbox"><input class = "can_kill" type="checkbox" name="players_input[',$i,'][]" value="yes"/></td>
- <td class="checkbox"><input class = "blocker" type="checkbox" name="players_input[',$i,'][]" value="yes"/></td>
- <td class="checkbox"><input class = "defence" type="checkbox" name="players_input[',$i,'][]" value="yes" checked="yes"/></td>
- <td class="checkbox"><input class = "healer" type="checkbox" name="players_input[',$i,'][]" value="yes" checked="yes"/></td>' ;
- }
- elseif ($i == 8 || $i == 9){
- echo '<td class="player">Player ',$i,'</td>
- <td class="checkbox"><input class = "mafia" type="checkbox" name="players_input[',$i,'][]" value="yes"/></td>
- <td class="checkbox"><input class = "can_kill" type="checkbox" name="players_input[',$i,'][]" value="yes"/></td>
- <td class="checkbox"><input class = "blocker" type="checkbox" name="players_input[',$i,'][]" value="yes"/></td>
- <td class="checkbox"><input class = "defence" type="checkbox" name="players_input[',$i,'][]" value="yes" checked="yes"/></td>
- <td class="checkbox"><input class = "healer" type="checkbox" name="players_input[',$i,'][]" value="yes" /></td>' ;
- }
- else {
- echo '<td class="player">Player ',$i,'</td> <td class="checkbox"><input class = "mafia" type="checkbox" name="players_input[',$i,'][]" value="yes"/></td><td class="checkbox"><input class = "can_kill" type="checkbox" name="players_input[',$i,'][]" value="yes"/></td><td class="checkbox"><input class = "blocker" type="checkbox" name="players_input[',$i,'][]" value="yes"/></td><td class="checkbox"><input class = "defence" type="checkbox" name="players_input[',$i,'][]" value="yes"/></td><td class="checkbox"><input class = "healer" type="checkbox" name="players_input[',$i,'][]" value="yes"/></td>' ;
- }
- echo '</tr>';
- }
- ?>
- </table>
- <input type="submit" value="Submit" name="submit"/>
- </form>
- <?php
- for ($i = 0; $i < $number_of_players; $i++) {
- for ($n = 0; $n < 5; $n++) {
- if (isset($_POST['players_input'][$i][$n])) {
- $players_input[$i][$n] = 'yes';
- }
- else {
- $players_input[$i][$n] = 'no';
- }
- }
- }
- if (isset ($players_input)) {
- foreach ($players_input as $key => $subarray) {
- $players[$key]->mafia = $subarray[0] ;
- $players[$key]->can_kill = $subarray[1] ;
- $players[$key]->blocker = $subarray[2] ;
- $players[$key]->defence = $subarray[3] ;
- $players[$key]->healer = $subarray[4] ;
- }
- $days_count = 0;
- $current_kill_count = 0;
- while (True) {
- $killed_list = array();
- $alive_list = array();
- $maniac_list = array();
- $alive_count = 0;
- $mafia_count = 0;
- $maniac_count = 0;
- $player_count = 0;
- foreach ($players as $player){
- if ($player->alive == 'yes'){
- $alive_count++;
- $alive_list[] = $player;
- if ($player->mafia == 'yes'){
- $mafia_count++;
- }
- if ($player->mafia == 'no' && $player->can_kill == 'yes'){
- $maniac_count++;
- $maniac_list[] = $player;
- }
- }
- }
- echo '<hr/>';
- echo $days_count, 'days passed';
- echo 'Alive:', $alive_count;
- echo 'Town:', ($alive_count - $mafia_count - $maniac_count);
- echo 'Mafia:', $mafia_count;
- echo 'Maniac:', $maniac_count;
- if (($alive_count - $mafia_count) <= $mafia_count && $maniac_count == 0 || ($alive_count - $mafia_count - $maniac_count) == 0 && ($mafia_count > $maniac_count)) {
- echo 'Mafia win';
- break;
- }
- if ($mafia_count == 0 && $maniac_count == 0){
- echo 'Town win';
- break;
- }
- if ($mafia_count == 0 && $maniac_count == 1 && $alive_count <= 2){
- echo 'Maniac win';
- break;
- }
- foreach ($alive_list as $player){
- $player->moved = 'no';
- $player->blocked = 'no';
- $player->healed = 'no';
- $player->executed_rate = 0;
- }
- // blockers turn
- foreach ($alive_list as $player){
- if ($player->blocked == 'no' && $player->moved == 'no'){
- if($player->blocker == 'yes'){
- if($player->mafia == 'no'){
- $target = target_not_self($alive_count, $alive_list, $player);
- $alive_list[$target]->blocked = 'yes';
- $player->moved = 'yes';
- echo 'Town blocker ',$player->number,' blocked ', $alive_list[$target]->number;
- }
- elseif($player->mafia == 'yes'){
- $block = 0;
- $n = 0;
- $target = target_not_mafia($alive_count, $alive_list, $player);
- $alive_list[$target]->blocked = 'yes';
- if ($mafia_count != 1){
- $player->moved = 'yes';
- echo 'Mafia blocker ',$player->number,' blocked ', $alive_list[$target]->number;
- }
- }
- }
- }
- }
- // healers turn
- foreach ($alive_list as $player){
- if ($player->blocked == 'no' && $player->moved == 'no'){
- if($player->healer == 'yes'){
- if($player->mafia == 'no'){
- $target = target_not_self($alive_count, $alive_list, $player);
- $alive_list[$target]->healed = 'yes';
- $player->moved = 'yes';
- echo 'Town healer ',$player->number,' healed ', $alive_list[$target]->number;
- }
- elseif($player->mafia == 'yes'){
- $target = target_not_mafia($alive_count, $alive_list, $player);
- $alive_list[$target]->blocked = 'yes';
- if ($mafia_count != 1){
- $player->moved = 'yes';
- echo 'Mafia healer ',$player->number,' healed ', $alive_list[$target]->number;
- }
- }
- }
- }
- }
- // maniacs turn
- foreach ($maniac_list as $player){
- if ($player->blocked == 'no' && $player->moved == 'no'){
- $target = target_not_self($alive_count, $alive_list, $player);
- if ($alive_list[$target]->defence == 'no' && $alive_list[$target]->healed == 'no'){
- $killed_list[]= $alive_list[$target];
- $player->kills++;
- }
- if ($alive_list[$target]->defence == 'yes'){
- $alive_list[$target]->defence = 'no';
- }
- if ($mafia_count != 1){
- $player->moved = 'yes';
- echo 'Maniac ',$player->number,' trying to kill ', $alive_list[$target]->number;
- }
- }
- }
- // mafia turn
- $mafia_kill = 0;
- $mafia_list = array();
- foreach ($alive_list as $player){
- if ($player->blocked == 'no' && $player->moved == 'no' && $player->mafia == 'yes' && $player->can_kill == 'yes'){
- $mafia_list = $player;
- }
- }
- }
- }
- function target_not_self ($alive_count, $alive_list, $player){
- $action = 0;
- $n = 0;
- while ($action == 0 || $n > 1000){
- $n++;
- $target = mt_rand(0, ($alive_count-1));
- if ($alive_list[$blocked] != $player){
- $action = 1;
- }
- }
- return $target;
- }
- function target_not_mafia ($alive_count, $alive_list, $player){
- $action = 0;
- $n = 0;
- while ($action == 0 || $n > 1000){
- $n++;
- $target = mt_rand(0, ($alive_count-1));
- if ($alive_list[$blocked]->mafia == 'no'){
- $action = 1;
- }
- }
- return $target;
- }
- ?>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment