前一篇关于PHP版本的骰子游戏(详见此),for循环的实现,在高并发下,效率显然是非常地低的。
下面是优化结果,如果您有更好的方法,望不吝赐教!
<?php /** * Description of Dice * * @author momosweb(AT)qq.com */ html' target='_blank'>class Dice { private $dice_type = 6; // 骰子类型 private $number = 1; // 骰子数量 private $people = 1; // 玩家数量 /** * 设置骰子类型 * @param int $dice_type */ public function set_dice($dice_type) { $dice_type = intval($dice_type); $this->dice_type = $dice_type ? $dice_type : $this->dice_type; } /** * 设置骰子数量 * @param int $number */ public function set_number($number) { $number = intval($number); $this->number = $number ? $number : $this->number; } /** * 设置玩家数量 * @param int $people */ public function set_people($people) { $people = intval($people); $this->people = $people ? $people : $this->people; } /** * 返回骰子点数 * @return intval */ private function roll() { return mt_rand(1, $this->dice_type); } /** * 返回骰子游戏结果 * @return array */ public function result() { // 根据人数返回单次结果 $fun_people = function() { // 构造骰子生成器 $fun_game = function() { return $this->roll(); }; // 根据骰子数生成单次结果 www.it165.net $arr_number = range(1, $this->number); return array_map($fun_game, $arr_number); }; $arr_people = range(1, $this->people); $result = array_map($fun_people, $arr_people); return $result; } } $Dice = new Dice(); $result = $Dice->result(); var_dump($result); ?>
哈哈,又到出题时间啦!如果需要比对最终结果,看谁的总点数最大呢?
PHP编程郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答