常听抱怨,不知道如何学习。其实用点心思,身边比比皆是可学之处。

比方说,我们经常玩的骰子游戏。来,我们抛个点数,看看谁的点数大?

 
  
  1. <?php
  2. echo rand(1, 6); // 产生一个随机整数 
  3. // 更详细请查看PHP手册关于rand函数的说明 http://www.php.net/rand 
  4. ?>

经常看PHP手册的朋友一定发现,还有一个函数比rand能产生更好的随机数,它就是mt_rand。

 

你是一个人在玩骰子游戏吗?那你一定太宅了,你该走出去跟朋友聚聚了。

如何设计一个多人玩的骰子游戏呢?人数不定,可能两个人玩,也可能三个人玩……;可能用两个骰子,也可能用三个、四个骰……

 
  
  1. <?php 
  2. /** 
  3.  * Description of Game 
  4.  * 
  5.  * @author momosweb#qq.com 
  6.  */ 
  7. class Game { 
  8.      
  9.     /** 
  10.      * 骰子点数生成器 
  11.      */ 
  12.     private function get_roll() 
  13.     { 
  14.         return mt_rand(1, 6); 
  15.     } 
  16.      
  17.     /** 
  18.      * 取得每个骰子数的结果 
  19.      * @param intval $number 默认玩骰子游戏的骰子数 
  20.      * @return array 每次抛骰子的结果 
  21.      */ 
  22.     private function get_number($number
  23.     { 
  24.         for($i=0; $i < $number$i++) { 
  25.             $roll[$i] = $this->get_roll(); 
  26.         } 
  27.          
  28.         return $roll
  29.     } 
  30.      
  31.     /** 
  32.      * 每个人各自的骰子结果 
  33.      * @param intval $people 默认玩骰子游戏的人数 
  34.      * @param intval $number 默认玩骰子游戏的骰子数 
  35.      * @return array 人数对应骰子值的结果 
  36.      */ 
  37.     public function result($people=1, $number=1) 
  38.     { 
  39.         for($i=0; $i < $people$i++) { 
  40.             $arr[$i] = $this->get_number($number); 
  41.         } 
  42.          
  43.         return $arr
  44.     } 
  45.  
  46. // Testing 
  47. $Game = new Game(); 
  48.  
  49. print_r($Game->result());  // 1个人玩1个骰子 
  50.  
  51. print_r($Game->result(3));  // 3个人各玩1个骰子 
  52.  
  53. print_r($Game->result(1, 3));  // 1个人玩3个骰子 
  54.  
  55. print_r($Game->result(2, 5));  // 2个人各玩5个骰子 
  56.  
  57. ?> 

很容易吧 这样就实现了。但是,但是没有发现有不对的地方吗?比如,数据过滤、效率、扩展性……

这么一想,上面写的真的是太糟糕了!让我们来想想如何去改进吧,多反思,我们才能有进步哟!

下篇,我们来一个优化!