close
嗯嗯 下面這個是自己寫的小程式
目的是要擲骰啦 要有支援smarty才行跑喔
(因為其實我只是想知道一些smarty的coding細節)
 
目前的程式碼只支援 1~10 d 2/3/4/6/8/10/12/20/30/100
可以去掉最大的, 最小的, 算平均, 和顯示每顆骰的資料
(思考自己來架一個主機跑這些小程式的可行性...一整個懶啊)
 
btw, 雖然我覺得這個程式沒啥可以給人抄的
如果想抄  拜託留個回應說你抄到哪去了 或著改了什麼地方喔
當然 如果夠懶惰的人 也可以直接留言要我把這個程式碼寄到你信箱啦 XD
畢竟貼上來很多縮排都亂掉了  (只是我不保證處理速度)
 
最後 如果有什麼還想要的功能 或著想要我改寫哪些部份 麻煩跟我說一下囉
(當然 我接受簡單的修改 然後給你拿去用 XD 只是一樣要幫我寫你拿去哪囉)
 
Part I:  主程式 (dice.php)
-------------------------------------
<?php
/* initial smarty */
ini_set('include_path', ini_get('include_path').':./class');
require_once('Smarty/Smarty.class.php');
$smarty = new Smarty();
$smarty->template_dir = "templates/";
$smarty->compile_dir = "templates_c/";
foreach( $_POST as $key => $item ) $$key = $item;
/* end of smarty initial */
/* main code */
$roll_result = 0;
if( isset($number_of_dice) && isset($size_of_dice) ) {
  $detail_report = array();
  $total_number_dice = $number_of_dice;
  $min_dice = 0;
  $max_dice = 0;
  for($count=0; $count<$number_of_dice; $count++) {
    $tmp = rand(1, $size_of_dice);
    if( $min_dice==0 || $min_dice>$tmp ) {
      $roll_result += $min_dice;
      $min_dice = $tmp;
    }
    else if( $max_dice==0 || $max_dice<$tmp ) {
      $roll_result += $max_dice;
      $max_dice = $tmp;
    }
    else
      $roll_result += $tmp;
    array_push($detail_report, $tmp);
  }
  if( isset($ignore_min) && $ignore_min=="on" ) {
    $total_number_dice--;
    $smarty->assign('min_dice', $min_dice);
    $smarty->assign('ignore_min', 1);
  }
  else {
    $roll_result += $min_dice;
    $smarty->assign('ignore_min', 0);
  }
  if( isset($ignore_max) && $ignore_max=="on" ) {
    $total_number_dice--;
    $smarty->assign('max_dice', $max_dice);
    $smarty->assign('ignore_max', 1);
  }
  else {
    $roll_result += $max_dice;
    $smarty->assign('ignore_max', 0);
  }
  if( isset($show_detail) && $show_detail=="on" ) {
    $smarty->assign('show_detail', 1);
    $smarty->assign('detail_report', $detail_report);
  }
  else
    $smarty->assign('show_detail', 0);
  if( isset($show_avg) && $show_avg=="on" ) {
    $smarty->assign('show_avg', 1);
    $smarty->assign('roll_avg', $roll_result/$total_number_dice);
  }
  else
    $smarty->assign('show_avg', 0);
  $smarty->assign('number_of_dice', $number_of_dice);
  $smarty->assign('size_of_dice', $size_of_dice);
  $smarty->assign('exp_of_roll', ($size_of_dice+1)*($total_number_dice/2));
  $smarty->assign('exp_of_avg', ($size_of_dice+1)/2);
}
$smarty->assign('roll_result', $roll_result);
/* end of main */
$tmp = $smarty->fetch('dice.tpl.htm');
echo $tmp;
//$smarty->display('dice.tpl.htm');
?>
------------------------------------------------------
 
Part II Template (templates/dice.tpl.htm)
(ps. 不會smarty的人 這個檔案的名稱跟路徑不能改喔)
-------------------------------------
<html>
<head>
  <title>smarty dice</title>
</head>
{literal}<script language=JavaScript>
  function rollDice() {
    if( document.Config.number_of_dice.value==1 ) {
      if( document.Config.ignore_min.checked || document.Config.ignore_max.checked ) {
        alert("Only one dice will be rolled, cannot ignore it.");
        return false;
      }
    }
    if( document.Config.number_of_dice.value==2 ) {
      if( document.Config.ignore_min.checked && document.Config.ignore_max.checked ) {
        alert("Only two dices will be rolled, cannot ignore them both.");
        return false;
      }
    }
    document.Config.submit();
  }
</script>{/literal}
<body><form method=post name=Config>
  <select name=number_of_dice>
    <option value=1{if $number_of_dice==1} selected{/if}>1</option>
    <option value=2{if $number_of_dice==2} selected{/if}>2</option>
    <option value=3{if $number_of_dice==3} selected{/if}>3</option>
    <option value=4{if $number_of_dice==4} selected{/if}>4</option>
    <option value=5{if $number_of_dice==5} selected{/if}>5</option>
    <option value=6{if $number_of_dice==6} selected{/if}>6</option>
    <option value=7{if $number_of_dice==7} selected{/if}>7</option>
    <option value=8{if $number_of_dice==8} selected{/if}>8</option>
    <option value=9{if $number_of_dice==9} selected{/if}>9</option>
    <option value=10{if $number_of_dice==10} selected{/if}>10</option>
  </select>
  &nbsp;&nbsp;D&nbsp;&nbsp;
  <select name=size_of_dice>
    <option value=2{if $size_of_dice==2} selected{/if}>2</option>
    <option value=3{if $size_of_dice==3} selected{/if}>3</option>
    <option value=4{if $size_of_dice==4} selected{/if}>4</option>
    <option value=6{if $size_of_dice==6} selected{/if}>6</option>
    <option value=8{if $size_of_dice==8} selected{/if}>8</option>
    <option value=10{if $size_of_dice==10} selected{/if}>10</option>
    <option value=12{if $size_of_dice==12} selected{/if}>12</option>
    <option value=20{if $size_of_dice==20} selected{/if}>20</option>
    <option value=30{if $size_of_dice==30} selected{/if}>30</option>
    <option value=100{if $size_of_dice==100} selected{/if}>100</option>
  </select>
  &nbsp;&nbsp;<input type=button name=roll_dice value=roll onClick="rollDice();">
  <br><input type=checkbox name=ignore_min{if $ignore_min==1} checked{/if}>&nbsp;Ignore the minimum dice
  <br><input type=checkbox name=ignore_max{if $ignore_max==1} checked{/if}>&nbsp;Ignore the maximum dice
  <br><input type=checkbox name=show_detail{if $show_detail==1} checked{/if}>&nbsp;Show each dices
  <br><input type=checkbox name=show_avg{if $show_avg==1} checked{/if}>&nbsp;Show the average
  {strip} {if $roll_result==0} {* do nothing *}
  {else} {* show the result *}
    <br><br>
    <b>Result: {$roll_result}</b>
    <br>Exp(roll)={$exp_of_roll},&nbsp;and&nbsp;Exp(avg)={$exp_of_avg}
    {if $show_detail==1}
      <br>(Detail:
        {foreach from=$detail_report item=a_dice_value name=dice_detail}
          &nbsp;{$a_dice_value}{if !$smarty.foreach.dice_detail.last},{/if}
        {/foreach}
      )
    {/if}
    {if $show_avg==1}<br>Avg:&nbsp;{$roll_avg}{/if}
    {if $ignore_min==1}<br>Minimum Ignored:&nbsp;{$min_dice}{/if}
    {if $ignore_max==1}<br>Maximum Ignored:&nbsp;{$max_dice}{/if}
  {/if} {/strip}
</form></body>
------------------------------------------------------
 
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大喵咪 的頭像
    大喵咪

    玥世界

    大喵咪 發表在 痞客邦 留言(0) 人氣()