常听抱怨,不知道如何学习。其实用点心思,身边比比皆是可学之处。
比方说,我们经常玩的骰子游戏。来,我们抛个点数,看看谁的点数大?
- <?php
- echo rand(1, 6); // 产生一个随机整数
- // 更详细请查看PHP手册关于rand函数的说明 http://www.php.net/rand
- ?>
经常看PHP手册的朋友一定发现,还有一个函数比rand能产生更好的随机数,它就是mt_rand。
你是一个人在玩骰子游戏吗?那你一定太宅了,你该走出去跟朋友聚聚了。
如何设计一个多人玩的骰子游戏呢?人数不定,可能两个人玩,也可能三个人玩……;可能用两个骰子,也可能用三个、四个骰……
- <?php
- /**
- * Description of Game
- *
- * @author momosweb#qq.com
- */
- class Game {
- /**
- * 骰子点数生成器
- */
- private function get_roll()
- {
- return mt_rand(1, 6);
- }
- /**
- * 取得每个骰子数的结果
- * @param intval $number 默认玩骰子游戏的骰子数
- * @return array 每次抛骰子的结果
- */
- private function get_number($number)
- {
- for($i=0; $i < $number; $i++) {
- $roll[$i] = $this->get_roll();
- }
- return $roll;
- }
- /**
- * 每个人各自的骰子结果
- * @param intval $people 默认玩骰子游戏的人数
- * @param intval $number 默认玩骰子游戏的骰子数
- * @return array 人数对应骰子值的结果
- */
- public function result($people=1, $number=1)
- {
- for($i=0; $i < $people; $i++) {
- $arr[$i] = $this->get_number($number);
- }
- return $arr;
- }
- }
- // Testing
- $Game = new Game();
- print_r($Game->result()); // 1个人玩1个骰子
- print_r($Game->result(3)); // 3个人各玩1个骰子
- print_r($Game->result(1, 3)); // 1个人玩3个骰子
- print_r($Game->result(2, 5)); // 2个人各玩5个骰子
- ?>
很容易吧 这样就实现了。但是,但是没有发现有不对的地方吗?比如,数据过滤、效率、扩展性……
这么一想,上面写的真的是太糟糕了!让我们来想想如何去改进吧,多反思,我们才能有进步哟!
下篇,我们来一个优化!